Apa bagian dari perangkat keras yang mendengarkan di alamat IP Facebook atau Wikipedia?

32

Saya mencoba memahami bagaimana situs-situs besar seperti Facebook atau Wikipedia bekerja, untuk keingintahuan intelektual saya. Saya membaca tentang berbagai teknik untuk membangun situs yang skalabel, tetapi saya masih bingung tentang satu detail tertentu.

Bagian yang membingungkan saya adalah bahwa pada akhirnya, DNS akan memetakan seluruh domain ke satu alamat IP, atau beberapa alamat IP dalam kasus DNS round-robin.

Misalnya, wikipedia.org hanya memiliki satu catatan DNS tipe-A. Jadi, orang-orang dari seluruh dunia yang mengunjungi Wikipedia harus mengirim permintaan ke satu alamat IP yang ditentukan dalam DNS.

Apa bagian dari perangkat keras yang mendengarkan alamat IP untuk situs besar, dan bagaimana ia bisa menangani semua beban yang datang dari permintaan untuk pengguna di seluruh dunia?

Sunting 1: Terima kasih atas semua tanggapan! Anycast sepertinya jawaban yang layak ... Apakah ada yang tahu cara untuk mengecek apakah alamat IP tertentu dialihkan, sehingga saya dapat memverifikasi bahwa ini benar-benar trik yang digunakan dalam praktik oleh situs besar?

Sunting 2: Setelah lebih banyak membaca tentang topik, tampaknya siaran apa pun biasanya tidak digunakan untuk konten web dinamis. Anycast biasanya digunakan untuk UDP (misalnya, pencarian DNS), atau terkadang untuk konten statis.

Satu hal yang menarik untuk dicatat adalah bahwa Facebook menggunakan profile.ak.fbcdn.net untuk meng-host konten statis seperti style sheet dan perpustakaan javascript. Setiap kali saya melakukan ping nama ini, saya mendapat respons dari alamat IP yang berbeda. Namun, saya tidak bisa memastikan apakah ini ada dalam aksi, atau teknik yang sama sekali berbeda.

Kembali ke pertanyaan awal saya: sejauh yang saya tahu, bahkan sebuah situs besar akan memiliki perangkat keras penyeimbang beban mahal yang mendengarkan pada beberapa alamat IP publik.

Igor Ostrovsky
sumber
Pertanyaan-pertanyaan besar, sayangnya kebanyakan orang tidak memahaminya. Saya harap seseorang akan memiliki jawaban dengan beberapa detail. Mungkin sekitar 50 juta dolar Cisco kuantum yang didukung penyeimbang beban bertenaga.
OliverS

Jawaban:

9

Ini tidak berarti perangkat keras melakukan hal ini tetapi sistem lengkap yang telah dirancang untuk skala. Ini tidak hanya mencakup perangkat keras tetapi lebih penting lagi desain aplikasi, desain database (relasional atau lainnya), jaringan, penyimpanan dan bagaimana mereka semua cocok bersama.

Sebuah titik awal yang baik untuk rasa ingin tahu Anda untuk mengetahui bagaimana beberapa situs skala besar Skalabilitas Tinggi - Mulai Di Sini dan Skalabilitas Tinggi pada arsitektur Wikimedia , Facebook dan Twitter sebagai contoh.

Mengenai pertanyaan Anda tentang DNS dan alamat IP tunggal dan round-robin jenis situs ini akan sering menggunakan load balancing sebagai metode penyajian alamat IP tunggal. Ini dapat dilakukan dengan penyeimbang beban perangkat keras khusus atau melalui perangkat lunak yang berjalan pada server tujuan umum. Permintaan yang masuk ke IP yang dikelola oleh load balancer kemudian didistribusikan melalui serangkaian server secara transparan kepada pengguna akhir.

Untuk penjelasan yang baik tentang topik ini, termasuk perbandingan penyeimbang / proxy beban perangkat keras dan perangkat lunak dan bagaimana mereka membandingkannya dengan round robin DNS, bacalah Aplikasi Web Balancing Web .

Sim
sumber
Terima kasih, Sim. Saya membaca sebagian besar artikel ini sebelum mengajukan pertanyaan, tetapi saya tidak menemukan jawaban yang konkret. Jadi, benar-benar ada penyeimbang beban perangkat keras tunggal (atau mesin tunggal yang menjalankan perangkat lunak penyeimbang beban) yang dipukul setiap kali seseorang melihat halaman Wikipedia? Atau, adakah trik lain untuk menghindari kemacetan?
Igor Ostrovsky
Saya tidak yakin apa yang dilakukan Wikipedia sekarang, tetapi artikel dari 2008 ini membahas tentang mereka menggunakan serangkaian server proxy squid reverse blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Sim
2
Ada juga alamat broadcast mana pun di mana Anda melakukan ping satu alamat ip tetapi mereka didistribusikan (secara acak \ semena-mena \ dengan sengaja) ke salah satu dari serangkaian titik akhir "nyata". Saya tidak yakin apakah Wikipedia \ Google menggunakan ini, tetapi saya cukup yakin beberapa Server DNS root melakukannya. Ping saya ke Wikipedia cocok dengan Anda (dan saya di Irlandia) jadi saya curiga mereka mungkin menggunakannya.
Helvick
1
Anycast digunakan dalam permintaan DNS untuk mendapatkan alamat IP terdekat dengan Anda - kemudian load balancer mendengarkan alamat IP tersebut dan mendistribusikan permintaan ke server pendukung.
Andy Shellam
2
Wikipedia juga menggunakan backend geoip pdns untuk banyak penyeimbangan muatan. info lebih lanjut di sini: wikitech.wikimedia.org/view/PowerDNS dan di sini: wikitech.wikimedia.org/view/DNS
faultyserver
3

Anycast juga dapat digunakan untuk koneksi TCP, dengan asumsi koneksi berumur pendek sehingga rute tidak berubah selama masa koneksi. Ini adalah asumsi yang baik dengan koneksi HTTP (terutama jika Connection: Keep-Alive disimpan untuk waktu singkat atau dinonaktifkan).

Banyak CDN (CacheFly, MaxCDN, dan mungkin banyak lainnya) sebenarnya menggunakan siaran apa pun untuk koneksi TCP (HTTP), dan bukan hanya DNS. Ketika Anda menyelesaikan nama host di CacheFly, Anda mendapatkan alamat IP yang sama di seluruh dunia, itu hanya dialihkan ke cluster CacheFly "terdekat". "Terdekat" di sini adalah dalam hal panjang jalur dan metrik BGP, yang biasanya merupakan cara yang lebih baik untuk mengukur latensi jaringan daripada jarak geografis yang sederhana.

Dalam hal Wikipedia khususnya: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/

rmalayter
sumber
3

Cara termudah untuk memverifikasi apakah alamat IP menggunakan Anycast adalah dengan melakukan pelacakan dari lokasi yang berbeda. Anda dapat mencoba yang berikut: buka traceroute.org, pilih lokasi dan coba lakukan traceroute ke alamat IP 8.8.8.8 (DNS Publik Google yang menggunakan siaran apa pun). Anda harus dapat melihat traceroute dari server di Australia hingga 8.8.8.8 tetap di Australia.

Alih-alih melakukan ping, coba lakukan pencarian nama host: mis .: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

Anda akan melihat daftar alamat IP di belakang nama itu. Alamat IP ini akan digunakan secara round-robin saat Anda melakukan ping ke server.

Rianto Wahyudi
sumber
Terkait: serverfault.com/q/178319/87017
Pacerier
2

Igor, pertanyaan Anda luar biasa, dan seperti banyak pertanyaan tidak bersalah, ada banyak, banyak jawaban, semuanya pada tingkat rincian yang berbeda.

Bagian dari perangkat keras adalah server web. Jelas ;-)

Bagian dari perangkat keras sebenarnya adalah sekelompok penyeimbang beban, yang semuanya dikonfigurasikan untuk menarik dari penyimpanan bersama sehingga semuanya dikonfigurasi secara identik dengan bahan yang identik.

Bagian dari perangkat keras sebenarnya adalah salah satu dari beberapa cluster penyeimbang beban, tersebar secara geografis, dan Anda diarahkan ke yang terdekat dengan Anda, keputusan yang dibuat oleh server DNS.

Matt Simmons
sumber
1

Google merilis sedikit tentang arsitektur perangkat keras asli mereka tahun lalu dan itu membuat untuk dibaca .

squillman
sumber
Ini adalah bacaan yang menarik, tetapi tidak menjawab pertanyaan khusus saya. Saya secara khusus ingin tahu apa saja perangkat keras yang mendengarkan pada empat alamat IP publik Google, dan mendistribusikan beban di antara ribuan server?
Igor Ostrovsky
1

Satu alamat IP tidak harus berarti server tunggal: http://en.wikipedia.org/wiki/Anycast

Justin
sumber
1
Anycast adalah pengaturan yang sulit dipertahankan, jika Anda memiliki sinkronisasi pusat (seperti Facebook). Ini berfungsi dengan sangat baik untuk server DNS misalnya, di mana contoh tidak perlu banyak komunikasi, atau server web dengan konten statis.
1
Anda benar bahwa satu IP tidak berarti satu server, tetapi siaran apa pun digunakan dalam permintaan DNS ketika Anda tidak terganggu siapa yang menjawab selama Anda mendapatkannya, dan karenanya hanya berguna dengan protokol UDP yang Penggunaan DNS. Dengan TCP (digunakan dalam HTTP), Anda harus yakin bahwa server yang merespons adalah yang Anda tanyakan secara spesifik.
Andy Shellam
@AndyShellam, Artikel-artikel en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf tampaknya tidak setuju dengan Anda ...
Pacerier
1

Situs yang lebih besar menggunakan beberapa teknik berbeda secara bersamaan. Situs-situs web yang Anda sebutkan semuanya memiliki hampir di setiap negara beberapa server. Berdasarkan alamat IP pengunjung situs web, server DNS memberikan kembali alamat IP cluster yang paling dekat dengan pengunjung. Akamai menyediakan layanan seperti itu (klik gambar di situs web ini untuk informasi lebih lanjut.)

"Cluster" tersebut di pusat data ini sekarang terdiri dari beberapa mesin yang berbeda (server DB, server web, penyeimbang beban, dll.) Tergantung pada apa yang Anda sediakan dengan situs web, Anda memiliki beberapa server untuk konten statis, dll.

Raffael Luthiger
sumber
1

Situs besar seperti Facebook atau Wikipedia bergantung pada beberapa teknologi berbeda untuk mencapai skalabilitas.

Salah satu teknologi itu adalah dns. Dns dikonfigurasi untuk memuat keseimbangan dengan round robin. Konfigurasi dns cukup pintar untuk mengetahui dari mana permintaan Anda berasal dan untuk mengembalikan alamat situs yang terdekat dengan Anda. Jadi jika Anda melakukan penggalian Anda akan melihat banyak catatan, tetapi jika Anda melakukan ping Anda akan selalu mendapatkan kembali alamat yang sama.

Di situs tersebut, perangkat keras pertama yang Anda tekan adalah proxy terbalik atau kumpulan penyeimbang beban. Kolam-kolam diatur sehingga semua mesin menjawab IP yang sama tetapi mengembalikan IP baru di header sesi. Semua permintaan lebih lanjut akan melalui simpul yang sama.

Penyeimbang beban yang digunakan untuk situs besar bukanlah peralatan besar yang mahal, mereka adalah server komoditas yang menjalankan LVS. http://www.linuxvirtualserver.org/

pengguna67823
sumber
0

Situs besar seperti Google hampir pasti merancang perangkat keras mereka sendiri. Situs besar mungkin akan menggunakan saklar multi-layer untuk memuat koneksi keseimbangan ke beberapa server aktual. http://en.wikipedia.org/wiki/Multilayer_switch

Chris S
sumber