Qual è l'hardware in ascolto sull'indirizzo IP di Facebook o Wikipedia?


32

Sto cercando di capire come funzionano enormi siti come Facebook o Wikipedia, per mia curiosità intellettuale. Ho letto di varie tecniche per costruire siti scalabili, ma sono ancora perplesso su un particolare dettaglio.

La parte che mi confonde è che alla fine il DNS mapperà l'intero dominio su un singolo indirizzo IP o su una manciata di indirizzi IP nel caso del DNS round robin.

Ad esempio, wikipedia.org ha un solo record DNS di tipo A. Pertanto, persone provenienti da tutto il mondo che visitano Wikipedia devono inviare una richiesta all'indirizzo IP specificato nel DNS.

Qual è l'hardware che è in ascolto sull'indirizzo IP di un sito enorme e come può eventualmente gestire tutto il carico proveniente dalle richieste degli utenti di tutto il mondo?

Modifica 1: Grazie per tutte le risposte! Anycast sembra una risposta fattibile ... Qualcuno sa come verificare se un determinato indirizzo IP è instradato in qualsiasi modo, in modo che io possa verificare che questo è davvero il trucco utilizzato nella pratica da grandi siti?

Modifica 2: dopo ulteriori letture sull'argomento, sembra che anycast non sia in genere utilizzato per contenuti Web dinamici. Anycast viene solitamente utilizzato per UDP (ad es. Ricerche DNS) o talvolta per contenuti statici.

Una cosa interessante da notare è che Facebook utilizza profile.ak.fbcdn.net per ospitare contenuti statici come fogli di stile e librerie javascript. Ogni volta che eseguo il ping di questo nome, ricevo una risposta da un indirizzo IP diverso. Tuttavia, non posso dire se questo è anycast in azione o una tecnica completamente diversa.

Tornando alla mia domanda originale: per quanto ne so, anche un sito di grandi dimensioni avrà un unico costoso componente hardware di bilanciamento del carico in ascolto sulla sua manciata di indirizzi IP pubblici.


Grandi domande, peccato che la maggior parte delle persone non lo capisca. Spero che qualcuno abbia una risposta con alcuni dettagli. Forse un bilanciamento del carico basato sul calcolo quantistico Cisco da 50 milioni di dollari.
OliverS,

Risposte:


9

Non è necessariamente un hardware che fa questo, ma un sistema completo che è stato progettato per scalare. Ciò comprende non solo l'hardware, ma soprattutto la progettazione delle applicazioni, la progettazione di database (relazionali o meno), la rete, l'archiviazione e il modo in cui si integrano tutti.

Un buon punto di partenza per la tua curiosità nel scoprire come alcuni dei grandi siti scalano l' alta scalabilità - Inizia qui e l' alta scalabilità sull'architettura Wikimedia , Facebook e Twitter come esempi.

Per quanto riguarda la tua domanda su DNS e singoli indirizzi IP e round robin, questi tipi di siti utilizzeranno spesso il bilanciamento del carico come metodo di presentazione di un singolo indirizzo IP. Ciò può essere eseguito da bilanciatori di carico hardware specializzati o tramite software in esecuzione su server per scopi generici. Le richieste in entrata verso l'IP gestite dal bilanciamento del carico vengono quindi distribuite in modo trasparente su una serie di server all'utente finale.

Per una buona spiegazione su questo argomento, incluso un confronto tra bilanciatori / proxy di carico hardware e software e come si confronta con il round robin DNS, leggere le applicazioni Web di bilanciamento del carico .


Grazie Sim. Ho letto la maggior parte di questi articoli prima di porre la mia domanda, ma non ho trovato una risposta concreta. Quindi, esiste davvero un singolo bilanciamento del carico hardware (o una singola macchina che esegue software di bilanciamento del carico) che viene colpito ogni volta che qualcuno visualizza una pagina di Wikipedia? Oppure, c'è un altro trucco da qualche parte per evitare il collo di bottiglia?
Igor Ostrovsky,

Non sono sicuro di cosa stia facendo Wikipedia ora, ma questo articolo del 2008 ne parla usando una serie di server proxy inversi di Squid blogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
Sim

2
Esistono anche indirizzi broadcast in cui si esegue il ping di un indirizzo IP ma sono distribuiti (casualmente \ arbitrariamente \ intenzionalmente) a uno di una serie di endpoint "reali". Non sono sicuro che Wikipedia \ Google lo usi, ma sono abbastanza sicuro che alcuni server DNS di root lo facciano. I miei ping su Wikipedia corrispondono ai tuoi (e io sono in Irlanda), quindi sospetto che potrebbero usarlo.
Helvick,

1
Anycast viene utilizzato nella query DNS per ottenere l'indirizzo IP più vicino a te, quindi un bilanciamento del carico ascolta quell'indirizzo IP e distribuisce le richieste ai server di backup.
Andy Shellam,

2
Wikipedia utilizza anche il backend geoip di pdns per gran parte del loro bilanciamento del carico. maggiori informazioni qui: wikitech.wikimedia.org/view/PowerDNS e qui: wikitech.wikimedia.org/view/DNS
faultyserver

3

Anycast può essere utilizzato anche per le connessioni TCP, supponendo che le connessioni siano di breve durata, pertanto i percorsi non cambiano durante la durata della connessione. Questo è un buon presupposto per le connessioni HTTP (specialmente se Connection: Keep-Alive è limitato a un timeout o disabilitato).

Molti CDN (CacheFly, MaxCDN e probabilmente molti altri) utilizzano effettivamente anycast per le connessioni TCP (HTTP) e non solo DNS. Quando risolvi un nome host su CacheFly, ottieni lo stesso indirizzo IP in tutto il mondo, viene semplicemente instradato al cluster CacheFly "più vicino". "Più vicino" qui sarebbe in termini di lunghezza e metriche del percorso BGP, che di solito è un modo migliore per misurare la latenza della rete rispetto alla semplice distanza geografica.

Nel caso specifico di Wikipedia: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/


3

Il modo più semplice per verificare se un indirizzo IP utilizza Anycast è eseguire un traceroute da una posizione diversa. Puoi provare quanto segue: vai su traceroute.org, scegli una posizione e prova a fare un traceroute all'indirizzo IP 8.8.8.8 (DNS pubblico di Google che utilizza anycast). Dovresti essere in grado di vedere quel traceroute dal server in Australia al 8.8.8.8 rimanere in Australia.

Invece di eseguire il ping, prova a eseguire la ricerca del nome host: ad esempio: http://network-tools.com/default.asp?prog=dnsrec&host=profile.ak.fbcdn.net

Vedrai l'elenco di indirizzi IP dietro quel nome. Questi indirizzi IP verranno utilizzati in modo round robin quando si esegue il ping del server.



2

Igor, la tua domanda è fantastica, e come tante domande innocenti, ci sono molte, molte risposte, tutte a diversi livelli di dettagli.

Il componente hardware è un web server. Ovviamente ;-)

Il componente hardware è in realtà un cluster di bilanciatori del carico, tutti configurati per estrarre dallo storage condiviso in modo che siano tutti identicamente configurati con materiale identico.

Il componente hardware è in realtà uno dei numerosi cluster di bilanciamento del carico, geograficamente dispersi, e sei stato indirizzato a quello più vicino a te, una decisione presa dal server DNS.


1

L'anno scorso Google ha rilasciato un po 'sulla sua architettura hardware nazionale e lo rende una buona lettura .


Questa è una lettura interessante, ma non risponde alla mia domanda particolare. Sono particolarmente curioso di sapere quali sono i componenti hardware che ascoltano sui quattro indirizzi IP pubblici di Google e distribuiscono il carico tra le migliaia di server?
Igor Ostrovsky,

1

Un singolo indirizzo IP non significa necessariamente un singolo server: http://en.wikipedia.org/wiki/Anycast


1
Anycast è una configurazione difficile da mantenere, se si dispone di una sincronizzazione centrale (come Facebook). Funziona davvero bene, ad esempio per i server DNS, in cui le istanze non richiedono molte comunicazioni o i server Web con contenuto statico.

1
Hai ragione nel dire che un singolo IP non significa un singolo server, ma anycast viene utilizzato nella query DNS quando non sei disturbato da chi risponde finché ne ottieni uno, e quindi è utile solo con il protocollo UDP che DNS utilizza. Con TCP (utilizzato in HTTP) devi essere sicuro che il server che risponde sia quello che hai richiesto espressamente.
Andy Shellam,

@AndyShellam, Gli articoli en.wikipedia.org/wiki/Anycast#Details nanog.org/meetings/nanog37/presentations/matt.levine.pdf sembrano non essere d'accordo con te ...
Pacerier,

1

I siti più grandi utilizzano insieme diverse tecniche diverse. Quei siti Web che hai citato hanno tutti in quasi tutti i paesi diversi server. Sulla base dell'indirizzo IP del visitatore del sito Web, il server DNS restituisce un indirizzo IP del cluster che è il più vicino al visitatore. Akamai fornisce tale servizio (fare clic sull'immagine su questo sito Web per ulteriori informazioni).

Quei "cluster" in questo datacenter consistono ora di diverse macchine (server DB, web server, bilanciamento del carico, ecc.) A seconda di ciò che stai fornendo con il tuo sito web, potresti avere alcuni server per il contenuto statico ecc.


1

I siti Web come Facebook o Wikipedia si basano su diverse tecnologie per raggiungere la scalabilità.

Una di queste tecnologie è dns. Dns è configurato per bilanciare il carico con round robin. La configurazione DNS è abbastanza intelligente da capire da dove proviene la tua richiesta e restituire l'indirizzo del sito più vicino a te. Quindi se fai uno scavo vedrai più record, ma se fai un ping otterrai sempre lo stesso indirizzo.

Nel sito, il primo componente hardware colpito è un proxy inverso o un pool di bilanciamento del carico. I pool sono configurati in modo che tutte le macchine rispondano allo stesso IP ma restituiscano un nuovo IP nell'intestazione della sessione. Tutte le ulteriori richieste passeranno attraverso lo stesso nodo.

I sistemi di bilanciamento del carico impiegati per siti di grandi dimensioni non sono apparecchiature costose di grandi dimensioni, ma server di prodotti che eseguono LVS. http://www.linuxvirtualserver.org/


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.