Facebook veya Wikipedia'nın IP adresini dinleyen donanımın parçası nedir?


32

Facebook ya da Wikipedia gibi büyük sitelerin entelektüel merakım için nasıl çalıştığını anlamaya çalışıyorum. Ölçeklenebilir siteler oluşturmak için çeşitli teknikler okudum, ancak belirli bir ayrıntı hakkında hala şaşkınlığım var.

Kafamı karıştıran kısım, nihayetinde, DNS'nin tüm etki alanını tek bir IP adresiyle ya da bir yuvarlak IP adresi durumunda bir avuç IP adresiyle eşleyeceğidir.

Örneğin, wikipedia.org 'un yalnızca bir A tipi DNS kaydı var. Bu nedenle, Wikipedia’nı ziyaret eden dünyanın her yerinden insanlar, DNS’de belirtilen bir IP adresine istek göndermelidir.

Çok büyük bir sitenin IP adresini dinleyen donanım nedir ve dünyanın her yerindeki kullanıcıların isteklerinden gelen tüm yükü nasıl ele alabilir?

Düzenleme 1: Tüm cevaplar için teşekkürler! Anycast uygulanabilir bir cevap gibi gözüküyor ... Herhangi biri belirli bir IP adresinin önceden yönlendirilip yönlendirilmediğini kontrol etmenin bir yolunu bilen var mı?

Düzenleme 2: Konuyla ilgili daha fazla okuduktan sonra, herhangi bir yayının genellikle dinamik web içeriği için kullanılmadığı anlaşılmaktadır. Anycast, genellikle UDP (örneğin, DNS aramaları) veya bazen statik içerik için kullanılır.

Unutulmaması gereken ilginç bir şey, Facebook'un stil sayfaları ve javascript kütüphaneleri gibi statik içeriği barındırmak için profile.ak.fbcdn.net kullanmasıdır. Bu isme her ping işlemi yaptığımda, farklı bir IP adresinden cevap alıyorum. Ancak bunun herhangi bir yayında mı yoksa tamamen farklı bir teknik mi olduğunu söyleyemem.

Asıl soruma geri dönelim: Söyleyebileceğim kadarıyla, büyük bir site bile, halka açık IP adreslerini dinleyen tek bir pahalı yük dengeleme donanımına sahip olacak.


Harika sorular, çok kötü, çoğu insan anlamıyor. İnşallah birileri bazı detaylara cevap verebilir. Belki yaklaşık 50 milyon dolarlık Cisco kuantum hesaplama destekli yük dengeleyici.
OliverS

Yanıtlar:


9

Mutlaka bunu yapan bir donanım parçası değil, ölçeklendirmek için tasarlanmış eksiksiz bir sistemdir. Bu sadece donanımı değil, daha önemlisi uygulama tasarımını, veritabanı tasarımını (ilişkisel veya başka türlü), ağ kurma, depolama ve bunların nasıl bir araya geldiğini de kapsar.

Büyük sitelerden bazılarının ölçeklemenin ne kadar büyük olduğunu merak etme konusunda iyi bir başlangıç ​​noktası - Yüksek Ölçeklenebilirlik - Buradan Başlayın ve Wikimedia mimarisinde Yüksek Ölçeklenebilirlik , Facebook ve Twitter gibi örnekler.

DNS ve tekli IP adresleri ve yuvarlak robinle ilgili sorunuzla ilgili olarak, bu tür siteler genellikle tek bir IP adresi sunmanın bir yöntemi olarak yük dengelemeyi kullanacaktır . Bu, özel donanım yükü dengeleyicileri veya genel amaçlı sunucularda çalışan yazılımlar aracılığıyla yapılabilir. Yük dengeleyici tarafından yönetilen IP'ye gelen talepler daha sonra şeffaf bir şekilde son kullanıcıya bir dizi sunucuya dağıtılır.

Donanım ve yazılım yük dengeleyicileri / proxy'leri ve DNS yuvarlak robinleriyle karşılaştırılmalarını içeren bu konu hakkında iyi bir açıklama için, Yük Dengeleme Web Uygulamalarını okuyun .


Sağol Sim. Sorumu sormadan önce bu makalelerin çoğunu okudum, ancak somut bir cevap bulamadım. Öyleyse, birisi bir Wikipedia sayfasını her görüntülediğinde isabet eden tek bir donanım yük dengeleyicisi (veya yük dengeleme yazılımı çalıştıran tek bir makine) gerçekten var mı? Veya, darboğazdan kaçınmak için bir yerlerde başka bir numara var mı?
Igor Ostrovsky

Eminim Vikipedi şimdi ne yapıyor değilim ama Squid bir dizi kullanarak onlar hakkında 2008 görüşmelerin bu makale proxy sunucularını ters blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Sim

2
Ayrıca, bir ip adresini ping yaptığınız herhangi bir yayın adresi de vardır, ancak bunlar bir dizi "gerçek" uç noktadan birine dağıtılır (rastgele \ rasgele \ kasten \ kasıtlı olarak). Wikipedia \ Google’ın bunu kullanıp kullanmadığından emin değilim, ancak kök DNS Sunucularının bazılarının kullandığından eminim. Wikipedia'ya olan ping'im seninkiyle eşleşiyor (ve ben İrlanda'yım), bu yüzden onu kullandıklarından şüpheleniyorum.
Helvick

1
DNS sorgusunda size en yakın IP adresini almak için bir çağrı kullanılır; daha sonra yük dengeleyici bu IP adresini dinler ve istekleri destek sunucularına dağıtır.
Andy Shellam

2
Vikipedi ayrıca, yük dengelemelerinin çoğu için pdns'in coğrafi arka ucunu kullanıyor. burada daha fazla bilgi: wikitech.wikimedia.org/view/PowerDNS ve burada: wikitech.wikimedia.org/view/DNS
faultyserver

3

Anycast ayrıca, bağlantıların kısa ömürlü olduğu varsayılarak TCP bağlantıları için de kullanılabilir, böylece yollar bağlantı ömrü boyunca değişmez. Bu, HTTP bağlantılarıyla ilgili iyi bir varsayımdır (özellikle eğer Bağlantı: Hayatta Kalma kısa bir zaman aşımına uğradıysa veya devre dışı bırakıldıysa).

Pek çok CDN (CacheFly, MaxCDN ve muhtemelen birçok diğerleri) aslında yalnızca DNS değil, TCP bağlantıları (HTTP) için herhangi bir yayın kullanır. CacheFly'deki bir ana makine adını çözdüğünüzde, dünya çapında aynı IP adresini alırsınız, basitçe "en yakın" CacheFly kümesine yönlendirilir. Buradaki "en yakın", ağ gecikmesini ölçmek için genellikle basit coğrafi mesafeden daha iyi bir yol olan BGP yol uzunluğu ve ölçümleri cinsinden olacaktır.

Özellikle Vikipedi durumunda: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/


3

Bir IP adresinin Anycast kullanıp kullanmadığını doğrulamanın en kolay yolu, farklı konumlardan bir traceroute yapmaktır. Aşağıdakileri deneyebilirsiniz: traceroute.org adresine gidin, bir yer seçin ve IP adresi 8.8.8.8'e (herhangi bir yayını kullanan Google Genel DNS'si) bir traceroute yapmaya çalışın. Avustralya’daki sunucudan traceroute’un Avustralya’da 8.8.8.8’de kaldığını görebilmelisiniz.

Ping yerine, ana bilgisayar adı araması yapmayı deneyin: örneğin: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

Bu adın arkasında IP adreslerinin listesini göreceksiniz. Bu IP adresleri, sunucuyu ping yaparken yuvarlak-robin şeklinde kullanılacaktır.



2

Igor, sorunuz harika ve pek çok masum soru gibi, hepsi farklı ayrıntı düzeylerinde birçok, birçok cevap var.

Donanım parçası bir web sunucusudur. Açıkçası ;-)

Donanım parçası aslında tümü paylaşılan depolama alanından çekecek şekilde yapılandırılmış bir yük dengeleyici kümesidir, böylece hepsi aynı malzeme ile aynı şekilde yapılandırılmıştır.

Donanım parçası aslında coğrafi olarak dağılmış olan birkaç yük dengeleyici kümesinden biridir ve siz DNS sunucusu tarafından verilen bir kararla size en yakın olana yönlendirildiniz.


1

Google, geçen yıl kendi ev donanım donanım mimarisi üzerinde biraz yayınladı ve iyi bir okuma için yapar .


Bu ilginç bir okuma, ancak sorumu cevaplamıyor. Google’ın genel IP adreslerini dinleyen ve yükü binlerce sunucu arasında dağıtan donanımın ne olduğunu özellikle merak ediyorum.
Igor Ostrovsky

1

Tek bir IP adresi mutlaka tek bir sunucu anlamına gelmez: http://en.wikipedia.org/wiki/Anycast


1
Anycast, bazı merkezi senkronizasyonlarınız varsa (Facebook gibi) bakımı zor bir kurulumdur. Örneğin, çok fazla iletişime ihtiyaç duymadığı DNS sunucuları veya statik içerikli web sunucuları için gerçekten iyi çalışıyor.

1
Haklısın ki, tek bir IP, tek bir sunucu anlamına gelmez, ancak DNS sorgusunda herhangi bir yayın, rahatsız olduğunuzda cevap aldığınız sürece cevap verir ve bu nedenle yalnızca UDP protokolü için kullanışlıdır. DNS kullanır. TCP ile (HTTP'de kullanılır), yanıt veren sunucunun özellikle sorduğunuzdan emin olmanız gerekir.
Andy Shellam


1

Daha büyük alanlar birlikte birkaç farklı teknik kullanır. Bahsettiğiniz web sitelerinin hepsinde hemen hemen her ülkede birkaç sunucu var. Web sitesi ziyaretçisinin IP adresine dayanarak, DNS sunucusu ziyaretçiye en yakın olan kümenin IP adresini geri veriyor. Akamai böyle bir hizmet veriyor (daha fazla bilgi için bu web sitesindeki resmin üzerine tıklayın.)

Bu veri merkezindeki bu "kümeler" artık birkaç farklı makineden oluşuyor (DB sunucusu, web sunucusu, yük dengeleyici, vb.).


1

Facebook veya Wikipedia gibi devasa siteler, ölçeklenebilirlik elde etmek için birkaç farklı teknolojiye güveniyor.

Bu teknolojilerden biri de dns. Dns, yuvarlak robinli teraziyi yüklemek için yapılandırılmıştır. Dns yapılandırması, isteğinizin nereden geldiğini bulmak ve size en yakın sitenin adresini döndürmek için yeterince akıllıdır. Bir kazı yaparsanız birden çok kayıt göreceksiniz, ancak bir ping yaparsanız her zaman aynı adresi geri alırsınız.

Sitede, vurduğunuz ilk donanım parçası bir ters proxy veya bir yük dengeleme havuzu. Havuzlar kuruludur, böylece tüm makineler aynı IP'ye cevap verir, ancak oturum başlığında yeni bir IP döndürür. Tüm diğer istekler aynı düğümden geçecek.

Büyük sahalar için kullanılan yük dengeleyiciler, büyük pahalı ekipman parçaları değildir, LVS çalıştıran emtia sunuculardır. http://www.linuxvirtualserver.org/


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.