Como eu carregaria meu site?

2

Vou lançar um site em breve e estava pensando em ter um servidor de banco de dados e um servidor front-end (para que ainda não seja necessário o balanceamento de carga). Mas se eu adicionar mais servidores front-end, como eu carregaria eles para que haja uma quantidade igual de usuários em cada site?

    
por John Doe 25.03.2011 / 11:36

3 respostas

2

Em geral, penso em servidores web de balanceamento de carga em duas categorias:

Balanceamento de carga baseado em aderência:

Com esse método, os clientes acessam o mesmo servidor da web a cada vez. Exemplos disso incluem:

  • Baseado em IP: Os clientes são enviados para o mesmo servidor da Web com base no endereço IP do cliente. Um hash do seu endereço IP ou tabela é criado e eles são enviados para o mesmo servidor com base nisso.
  • Baseada em cookies: O balanceador de carga inspeciona o todo ou parte de um cookie da Web e direciona os clientes com base nisso.

Métodos não aderentes:

Com esses métodos, os clientes nem sempre são enviados para o mesmo servidor. Os métodos para isso incluem:

  • Round-robin : Cada solicitação da web é enviada para os servidores da web.
  • Algoritmos aleatórios
  • Quantidade de conexão : envia solicitações para o servidor com o mínimo de conexões.
  • Baseada em recursos : acompanhe os recursos em camadas da Web e tente manter a utilização de recursos uniforme.

Qual tipo?

Os métodos não-adesivos tendem a ser mais uniformes na distribuição, mas seu aplicativo pode não ser capaz de trabalhar com esse tipo de método se várias coisas, como sessões, são armazenadas localmente em um servidor web. Além disso, com sessões não aderentes, você pode acabar com uma taxa de acertos do cache menor, dependendo de como o aplicativo funciona.

Hardware e software:

Você pode obter balanceadores de carga de hardware e software. Eu sou um fã de balanceadores de carga baseados em software que rodam em caixas Linux. Em particular eu recomendo HAProxy mas você também pode considerar Nginx .

    
por 25.03.2011 / 13:43
1

Pode parecer óbvio, mas você usaria um balanceador de carga. Existem muitos tipos, mas essencialmente você cria um IP virtual (VIP) para o seu serviço e faz com que ele alterne as solicitações recebidas em qualquer número de servidores 'atrás' dele, cada um com seus próprios IPs. Existem muitos mecanismos para decidir qual servidor obtém quais solicitações do método mais básico de 'round-robin', que simplesmente distribui uma solicitação, e depois passa para o próximo servidor de maneira circular, até aquelas muito complexas que olham dentro dos servidores para decidir que estão trabalhando e menos ocupados.

Talvez nos retorne com mais detalhes sobre seus ambientes e orçamento existentes e poderemos ajudá-lo a restringir o tipo de pesquisa.

    
por 25.03.2011 / 11:44
0

Como um exemplo específico de balanceamento de carga básico quando mudei de 1 para 2 servidores de aplicativos, obtive uma outra configuração de servidor para executar o Squid, que usa balanceamento de carga round robin nos dois servidores, além de adicionar uma camada de cache. Uma vez que o Squid estava configurado e funcionando, era simples alterar as entradas de DNS do site para apontar do aplicativo original para o novo servidor Squid.

No meu caso, o Squid foi uma escolha óbvia, pois adicionou balanceamento de carga e cache e já era suportado pelo aplicativo (MediaWiki), mas há muitas outras opções de software. A maioria dos servidores da web (Apache, lighttpd, etc ...) pode ser configurada como um balanceador de carga simples, embora geralmente seja preferível um seridor mais rápido como o nginx. Então, há aplicativos de armazenamento em cache como o Squid / Varnish e, finalmente, aplicativos mais especializados, como o HAProxy. Finalmente, também há balanceadores de carga de hardware, mas normalmente são mais caros e usados em configurações de tráfego / alta disponibilidade.

    
por 25.03.2011 / 14:06