Qual é a parte do hardware que escuta no endereço IP do Facebook ou da Wikipedia?

32

Estou tentando entender como sites massivos como o Facebook ou a Wikipedia funcionam, por minha curiosidade intelectual. Eu li sobre várias técnicas para construir sites escaláveis, mas ainda estou intrigado com um detalhe em particular.

A parte que me confunde é que, em última análise, o DNS mapeará todo o domínio para um único endereço IP ou um punhado de endereços IP, no caso do DNS round-robin.

Por exemplo, wikipedia.org tem apenas um registro DNS tipo-A. Assim, pessoas de todo o mundo que visitam a Wikipedia precisam enviar uma solicitação para o endereço IP especificado no DNS.

Qual é o hardware que escuta o endereço IP de um site massivo e como ele pode lidar com toda a carga proveniente das solicitações de usuários em todo o mundo?

Editar 1: Obrigado por todas as respostas! Anycast parece ser uma resposta viável ... Alguém sabe de uma maneira de verificar se um determinado endereço IP é anycast-routed, para que eu possa verificar que este é realmente o truque usado na prática por grandes sites?

Editar 2: Depois de ler mais sobre o tópico, parece que anycast não é normalmente usado para conteúdo dinâmico da web. Anycast é geralmente usado para UDP (por exemplo, pesquisas de DNS) ou, às vezes, para conteúdo estático.

Uma coisa interessante a se notar é que o Facebook usa profile.ak.fbcdn.net para hospedar conteúdo estático como folhas de estilo e bibliotecas javascript. Cada vez que eu pingar esse nome, recebo uma resposta de um endereço IP diferente. No entanto, eu não posso dizer se isso é anycast em ação, ou uma técnica completamente diferente.

Voltando à minha pergunta original: até onde eu posso dizer, até mesmo um site grande terá um hardware caro e com balanceamento de carga escutando seus poucos endereços IP públicos.

    
por Igor Ostrovsky 16.02.2010 / 00:56

9 respostas

9

Não é necessariamente uma peça de hardware que faz isso, mas sim um sistema completo que foi projetado para escalar. Isso não apenas engloba o hardware, mas, mais importante, o design do aplicativo, o design do banco de dados (relacional ou não), a rede, o armazenamento e como eles se encaixam.

Um bom ponto de partida para sua curiosidade em descobrir como alguns dos sites de grande escala são Alta escalabilidade - Comece aqui e Alta escalabilidade na arquitetura Wikimedia , Facebook e Twitter como exemplos.

Com relação à sua pergunta sobre DNS e endereços IP únicos e round-robin, esses tipos de sites geralmente usam balanceamento de carga como um método de apresentar um único endereço IP. Isso pode ser feito por balanceadores de carga de hardware especializados ou por meio de software executado em servidores de propósito geral. As solicitações recebidas para o IP gerenciado pelo balanceador de carga são distribuídas de forma transparente para o usuário final por uma série de servidores.

Para obter uma boa explicação sobre esse tópico, incluindo uma comparação de balanceadores de carga / proxies de hardware e software e como eles se comparam ao round-robin do DNS, leia o Balanceamento de carga de aplicativos da Web .

    
por 16.02.2010 / 01:23
3

Anycast também pode ser usado para conexões TCP, supondo que as conexões sejam de curta duração, de modo que as rotas não mudem durante a vida útil da conexão. Essa é uma boa suposição com conexões HTTP (especialmente se o Connection: Keep-Alive for mantido com um tempo limite curto ou desativado).

Muitos CDNs (CacheFly, MaxCDN e provavelmente muitos outros) realmente usam anycast para conexões TCP (HTTP) e não apenas DNS. Quando você resolve um nome de host no CacheFly, você obtém o mesmo endereço IP ao redor do mundo, ele é simplesmente roteado para o cluster CacheFly "mais próximo". "Mais próximo" aqui seria em termos de comprimento do caminho do BGP e métricas, que geralmente é uma maneira melhor de medir a latência da rede do que a distância geográfica simples.

No caso da Wikipedia especificamente: link

    
por 16.02.2010 / 13:50
3

A maneira mais fácil de verificar se um endereço IP está usando o Anycast é fazer um traceroute de um local diferente. Você pode tentar o seguinte: vá para traceroute.org, escolha um local e tente fazer um traceroute para o endereço IP 8.8.8.8 (Google Public DNS que usa anycast). Você deve poder ver o traceroute do servidor na Austrália para 8.8.8.8 ficar na Austrália.

Em vez de ping, tente fazer a consulta do nome do host: por exemplo: link

Você verá a lista de endereços IP por trás desse nome. Esses endereços IP serão usados de maneira round-robin quando você efetuar ping no servidor.

    
por 17.02.2010 / 06:05
2

Igor, sua pergunta é ótima e, como muitas outras perguntas inocentes, há muitas, muitas respostas, todas em diferentes níveis de detalhes.

O hardware é um servidor da web. Obviamente ;-)

A peça de hardware é, na verdade, um cluster de balanceadores de carga, todos configurados para serem armazenados em armazenamento compartilhado, de modo que todos eles são configurados de forma idêntica com material idêntico.

A peça de hardware é, na verdade, um dos vários clusters de balanceadores de carga, geograficamente dispersos, e você foi direcionado para o mais próximo de você, uma decisão tomada pelo servidor DNS.

    
por 16.02.2010 / 03:00
1

O Google divulgou um pouco sobre sua arquitetura de hardware doméstica no ano passado e isso faz com que o site boa leitura .

    
por 16.02.2010 / 01:41
1

Um endereço IP único não significa necessariamente um único servidor: link

    
por 16.02.2010 / 02:53
1

Sites maiores usam várias técnicas diferentes juntos. Esses sites que você mencionou têm em quase todos os países vários servidores. Com base no endereço IP do visitante do site, o servidor DNS está devolvendo um endereço IP do cluster que é o mais próximo do visitante. A Akamai está fornecendo esse serviço (clique na imagem neste site para obter mais informações).

Esses "clusters" neste datacenter consistem agora em várias máquinas diferentes (servidor de banco de dados, servidor web, balanceador de carga, etc.) Dependendo do que você está fornecendo em seu site, talvez tenha alguns servidores para o conteúdo estático etc.

    
por 16.02.2010 / 14:21
1

Sites massivos como o Facebook ou a Wikipédia contam com várias tecnologias diferentes para alcançar a escalabilidade.

Uma dessas tecnologias é o dns. O DNS é configurado para balancear a carga com round robin. A configuração do DNS é inteligente o suficiente para descobrir de onde vem a sua solicitação e para retornar o endereço do site mais próximo de você. Então, se você fizer uma escavação, verá vários registros, mas se fizer um ping, sempre receberá o mesmo endereço.

No site, a primeira peça de hardware que você encontra é um proxy reverso ou um pool de balanceamento de carga. Os pools são configurados para que todas as máquinas respondam ao mesmo IP, mas retornem um novo IP no cabeçalho da sessão. Todas as outras solicitações passarão pelo mesmo nó.

Os balanceadores de carga usados em grandes sites não são equipamentos grandes e caros, eles são servidores comuns que executam o LVS. link

    
por 22.01.2011 / 16:26
0

Grandes sites como o Google quase certamente projetam seu próprio hardware. Sites grandes provavelmente usariam um comutador de várias camadas para carregar conexões de balanceamento para vários servidores reais. link

    
por 16.02.2010 / 03:11