Balanceamento de carga geográfico

2

Em uma empresa, eles atualmente têm uma configuração típica de servidor da Web: um servidor da Web e um servidor de banco de dados. Infelizmente, geralmente há problemas devido à alta carga no servidor da Web e no banco de dados, portanto, fui solicitado a configurar o balanceamento de carga com dois servidores da Web.

No entanto, alguém me pediu para colocar o segundo servidor da Web em outro site da empresa (país diferente) para minimizar o impacto dos problemas de rede.

É uma boa ideia? Isso não causaria mais problemas de rede devido a redirecionamentos para um servidor da web tão longe?

    
por Sam Hendrickx 14.12.2014 / 14:17

2 respostas

5

Com base nos detalhes que você forneceu, não acho que haja informações suficientes para dizer que é uma boa ideia ou não. Depende se o aplicativo é usado por vários países ou não, além de outros fatores, como sensibilidade à latência. O balanceamento de carga entre dois datacenters pode ser um pouco mais complexo e caro do que o balanceamento de carga no mesmo datacenter.

Alguns truques que você pode fazer para aumentar o desempenho :

  • Considere um cache de aplicativos (como o Servidor de cache Varnish ): isso diminuirá a carga para os servidores da Web, ou seja, o conteúdo estático .

Balanceamento de carga de baixa complexidade :

  • Adicione um novo DNS "Um registro" ao seu site apontando para um segundo servidor da web. Por exemplo, www.mysite.com será resolvido com base em round-robin para webserver1 e webserver2 - tenha cuidado com o modo como seu aplicativo da web lida com as sessões. Se você tem vários servidores de banco de dados, você precisa ter todos os DBs sincronizados entre si.

Balanceamento de carga de complexidade média :

  • Considere um dispositivo de balanceamento de carga, como o F5, antes dos clusters da Web.
  • Considere um serviço de CDN como: Incapsula , Akamai ou CloudFlare
por 14.12.2014 / 14:59
3

Supondo que você ainda tenha apenas um banco de dados, a pergunta mais importante a ser feita é: quanto o servidor remoto dependerá do banco de dados?

Se tudo o que o servidor da Web fizer depender da comunicação com um banco de dados em outro local, haverá maior exposição em caso de problemas de rede. Se você tiver páginas que precisam de várias consultas ao banco de dados, elas serão mais lentas para serem processadas devido a viagens de rede adicionais entre o servidor da Web e o banco de dados.

Replicar o banco de dados seria uma opção. Mas preservar a consistência em bancos de dados replicados é muito desafiador. (Para lidar com um caso de uma réplica que falha de maneira arbitrária, você precisa de pelo menos quatro réplicas. Qualquer solução que afirme ter isso com menos réplicas tem feito suposições sobre como as falhas se comportam e uma vez que as falhas não correspondem a essas suposições, o sistema falha.)

Se a replicação do banco de dados não for prática para você e o servidor da web não puder fazer nada significativo sem o banco de dados, a configuração que eu recomendaria para redundância máxima é a seguinte:

Use três servidores, cada um deles equipado com duas interfaces de rede. Um será o banco de dados, os outros dois serão servidores da Web. Cada servidor da web é conectado diretamente ao banco de dados com um cabo Ethernet. Nem mesmo um switch será colocado entre eles, de modo que, enquanto o servidor e o banco de dados estiverem ativos, eles possam se comunicar entre si.

Esses dois cabos Ethernet ocupam a maioria das interfaces. Você fica com uma interface disponível em cada servidor da web. As interfaces restantes estão conectadas a dois provedores de rede independentes. Na minha experiência, a conexão com o provedor de rede é a parte menos confiável da configuração e, portanto, a parte mais importante para ter redundância, e a configuração que descrevi aqui pode tornar essa parte redundante sem replicar o banco de dados para vários servidores. Mesmo que um dos provedores atrapalhe o BGP a ponto de que todo o seu sistema operacional caia da Internet, seu site permanecerá disponível através do outro servidor da Web.

    
por 14.12.2014 / 16:19