Bagaimana cara kerja CDN (Content Distribution Networks)?

37

Mengambil Akamai sebagai CDN. Dari apa yang saya mengerti, ketika klien meminta halaman, permintaan pergi ke server pusat Akamai, yang kemudian tergantung pada lokasi klien, mengambil server tepi Akamai dan permintaan berikutnya dari klien langsung ke server tepi ini. Pertanyaan saya adalah:

Ketika klien akan meminta situs web (dengan nama), setelah DNS menyelesaikan nama ke alamat IP server pusat Akamai dan meneruskannya ke klien, klien akan berpegang pada alamat IP ini, lalu bagaimana permintaan selanjutnya dapat untuk langsung ke alamat IP server tepi Akamai?

Atau apakah perlu bahwa ketika CDN sedang digunakan maka resolusi DNS itu sendiri harus dilakukan oleh server CDN?

Apakah biggies seperti Google, Amazon, Facebook memiliki server CDN sendiri atau mereka mengandalkan penyedia CDN pihak ketiga seperti Akamai? Katakan Google dan Yahoo! keduanya menggunakan CDN Akamai, kemudian melakukan konten dari Yahoo! dan Google berada di server yang sama? Bukankah itu menimbulkan masalah keamanan potensial?

p2pnode
sumber

Jawaban:

27

Anda tidak hanya meng - host seluruh situs dengan CDN, hanya konten Anda .

Saya baru sadar bahwa saya menjawab pertanyaan yang sama beberapa waktu lalu: Apa yang dilakukan akamaihd.net?

Alur permintaan dataGambar oleh WikiMedia

Jadi referensi situs Anda http://akamai/myfile.ext. Ini akan meminta myfile.extdari akamai. akamaikemudian dapat mengirim pengalihan HTTP ke server konten yang sebenarnya.

Sekarang, ketika langkah terakhir di-cache, bagus, semua permintaan di masa mendatang akan pergi ke server konten terdekat.

Bagaimana cara kerjanya?

Mari kita asumsikan situs web ini:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

Saya meminta situs web ini dari server web saya sendiri. The .htmlfile tidak host dengan cdn. DNS server web saya juga tidak.

Permintaan awal

Jadi browser saya mendapatkan file HTML itu dan sekarang mem-parsingnya. Ia menemukan gambar dan catatan yang dirujuk di mana ia berada http://cdn/oliver.png. Ia meminta file itu.

Untuk melakukan itu, perlu menemukan alamat IP cdn. Dalam contoh kita, alamat IP itu 10.10.10.10.

Dengan alamat IP itu, ia dapat terhubung ke cdnserver dan meminta /oliver.png.

Lokasi Geo

Sekarang cdnsadar, " orang itu dari Jerman! ". Jadi, alih-alih mengirimi saya foto saya yang luar biasa yang saya inginkan, itu mengirimkan saya sebuah pengalihan HTTP yang mengatakan:

/oliver.png tidak ada di sini. Itu di10.10.33.33/oliver.png

Jadi browser saya akan meminta 10.10.33.33(yang diharapkan dekat dengan saya) untuk gambar.

Serius?

Saya tidak mengatakan ini adalah bagaimana SEMUA CDN bekerja, tetapi itu akan menjadi satu pendekatan.

Anda juga bisa menerapkan daemon DNS yang mengembalikan hasil yang berbeda untuk pencarian nama tergantung pada lokasi siapa pun yang mengirim kueri.
Tetapi saya ragu bahwa ini dilakukan dalam praktek. Tapi mungkin saya tidak bisa membayangkan bagaimana mengaturnya dengan benar. Lihat jawaban fluffy untuk cara kerjanya.

Siapa yang menjalankan CDN?

Sebagian besar pemain global memiliki jaringan pengiriman konten sendiri (atau saya kira begitu). Beberapa penyedia hanya menurunkan layanan tertentu ke CDN yang lebih besar (seperti Microsoft dengan unduhan MSDN). Dan ini entah bagaimana mungkin menyentuh subjek kedua Anda.

Pertimbangkan ini, di MSDN Microsoft menawarkan unduhan produk. Unduhan ini kemudian disediakan oleh Akamai. Jika Anda dapat menentukan URL unduhan itu, Anda dapat mengunduh produk tersebut tanpa pernah menghubungi Microsoft.

Apakah itu masalah keamanan? Tidak juga, karena apa yang sedang diunduh masih dilindungi (oleh kunci produk).

Tapi bagaimana dengan data lain?

Jika data Anda relevan dengan keamanan, maka itu bukan materi CDN. Jika Anda tidak ingin sesuatu tersedia seluas mungkin, jangan masukkan ke dalam CDN.

Der Hochstapler
sumber
Katakanlah situs tersebut adalah situs / file.txt . Say Akamai DNS sedang digunakan. Lalu apakah permintaan pertama dari klien pergi ke suatu tempat atau permintaan pertama pergi ke Akamai (karena entah bagaimana DNS yang digunakan oleh klien tahu bahwa Akamai CDN sedang digunakan)?
p2pnode
Dan mungkin saya tidak mengerti pengalihan HTTP dan apa yang dapat mereka capai, jadi pertanyaan saya masih tetap adalah bagaimana klien tahu untuk menggunakan alamat IP dari server tepi Akamai sehingga server pusat Akamai tidak harus datang ke gambar di semua ..
p2pnode
@ p2pnode: Saya sedikit memperluas jawabannya. Semoga itu termasuk apa yang Anda pikirkan.
Der Hochstapler
1
Apakah tidak ada kinerja yang signifikan dari ini? Alih-alih semua transfer data terjadi melalui aliran TCP tunggal, banyak aliran digunakan, lebih banyak overhead dari jabat tangan, dll.
Akash
@Akash: Biasanya, Anda tidak akan menggunakan CDN untuk semuanya , tetapi hanya file individual dan besar. Jadi, dalam praktiknya, ini bukan masalah.
Der Hochstapler
11

Pendekatan yang cukup umum untuk CDN adalah dengan menggunakan apa yang dikenal sebagai " siaran apa pun ." Cara kerjanya adalah bahwa server Anda yang terdistribusi ditempatkan dengan DNS yang merespons dengan server itu sebagai tujuan; misalnya, Anda mungkin memiliki tiga server di fasilitas hosting yang berbeda, dan DNS masing-masing mengklaim alamat IP mereka sebagai alamat kanonik untuk server Anda (sebut saja, katakanlah, content.example.com). DNSes masing-masing dikonfigurasi untuk memiliki alamat IP global yang sama, dan kemudian masing-masing fasilitas server menggunakan pembaruan BGP untuk membuatnya sehingga rute ke server terdekat menang - jadi ketika Anda melakukan pencarian nama content.example.com, tercepat / terdekat / DNS yang paling tersedia merespons permintaan dengan server HTTP-nya.

Dengan cara ini, tidak ada trik GeoIP yang diperlukan, dan Anda selalu dilayani konten oleh server mana pun yang tercepat bagi Anda - yang mungkin atau mungkin tidak ada hubungannya dengan lokasi fisiknya, karena sifat heterogen dari Internet.

Ini adalah pemahaman saya bahwa Akamai setidaknya sebagian bekerja dengan cara ini.

halus
sumber
5

Juga tersedia CDNs Jenis Tarik Asal.

Amazon Cloudfront dapat menggunakan teknik ini.

Anda menyiapkan CNAME seperti media.example.com yang menunjuk ke nama server yang ditugaskan dan meninggalkan semua konten Anda di server Anda. Untuk gambar dan konten yang ingin Anda sampaikan melalui CDN, Anda menggunakan media.example.com di URL. Permintaan masuk ke jaringan server mereka dan jika konten tidak tersedia, server mereka menarik konten dari server Anda. Setelah di sistem, konten didistribusikan ke server farm terdekat dengan tempat permintaan ada dan tetap ada untuk TTL yang ditugaskan. Server Anda tidak lagi melihat lalu lintas pada konten yang di-cache hingga TTL berakhir dan Cloudfront harus menyegarkannya.

Laboratorium Fiasco
sumber
1

Akamai tidak bekerja seperti ini. CDN yang berbeda bekerja secara berbeda, tetapi Akamai secara khusus tidak melakukan siaran apa pun untuk server web mereka.

Ketika seorang pengguna di NY menginginkannya www.acme.com, server nama acme.com mengalihkan ("delegasi") ke server nama Akamai. Server nama Akamai melihat di mana mesin yang mengajukan pertanyaan berada (berdasarkan alamat IP-nya) dan mengembalikan alamat IP dari server Akamai terdekat / terbaik untuk dilayani www.acme.com.

igorlord
sumber
Bagaimana itu bekerja? Server nama Akamai menerima permintaan dari pengguna secara langsung atau dari server DNS pengguna yang mendelegasikan ke server nama Akamai? Jadi itu akan di-geolokasi menurut lokasi server DNS, bukan pengguna?
odiszapc
0

Ringkasan hebat tentang cara kerja CDN Akamai dapat ditemukan di sini

Pendeknya:

  • Server CDN memiliki catatan CNAME yang menunjuk ke server DNS Akamai.
  • Jadi permintaan pertama yang dibuat peramban klien ke server CDN memiliki DNS-nya menatap server DNS Akamai, yang merespons dengan alamat ip server Akamai yang dekat dengan pengguna (disebut "Edge Server")
  • Server Edge ini dapat melayani elemen statis dari cache lokal, jika telah diminta oleh pengguna lain baru-baru ini, dan bahkan tidak harus kembali ke server Anda untuk mendapatkan salinan aset.
  • Elemen yang hilang atau halaman yang tidak dapat ditutup dirutekan melalui jaringan Akamai ke server tepi lain di dekat host. Server tepi itu membuat permintaan aktual ke situs host dan meneruskannya kembali melalui jaringan ke server tepi asli, dan dari sana mereka dikembalikan ke pengguna akhir.
  • Karena server tepi berkomunikasi secara internal menggunakan protokol milik Akamai dan merutekan kemacetan, lalu lintas dapat mengalir jauh lebih cepat daripada melalui internet publik.

dan sebagaimana disebutkan dalam posting blog yang tercantum di atas, beberapa perusahaan besar menyelesaikan DNS menggunakan server mereka sendiri, yang dapat meniadakan beberapa manfaat menggunakan CDN.

Taman Brad
sumber
-2

CDN bekerja pada DNS Anycast. Anycast dns berfungsi pada Anycast ip. Anycast ip: Satu ip ditetapkan pada beberapa server. Ketika pengguna meminta resolver dns, permintaan itu akan ditangani oleh server terdekat dan memberikan data dari server dengan latensi paling rendah.

rel abimanyu
sumber
Dengan cara apa hal ini meningkatkan jawaban yang ada, lebih penuh,?
Chenmunka