qual modelo de alta disponibilidade escolher para website (nginx / mysql)

2

Temos 5 servidores físicos. Todos são idênticos. 16 gb de ram, 4x146 10k sas em raid 10.

Então, precisamos de alta disponibilidade. O plano atual é o seguinte:

2 caixas com Heartbeat para balanceamento de carga. Neste momento o nginx está configurado como balanceador.

então o problema é web & mysql. Eu pretendo configurar 2 caixas executando mysql e nginx. Entre essas caixas, configure a replicação do mysql no master < - > mestre. Em seguida, adicione a última caixa que replicou o mysql. Para este modelo, cada servidor web se conecta ao seu servidor mysql local. (para minimizar a latência da rede).

Outro modelo é colocar duas caixas (nginx) em HA e outras duas no mysql master / slave. mas neste modelo o balanceador de carga está sozinho ....

Ou preciso de outra configuração. Basicamente eu não preciso de como fazer isso, mas qual modelo escolher. Precisamos lidar com muito tráfego (cerca de 20k req / s).

    
por Guntis 11.05.2012 / 11:30

1 resposta

0

Três recomendações.

1.) Considere o uso do HA Proxy em nginx para o balanceamento de carga.

[EDITAR]
Coisas a serem consideradas ao considerar o HA Proxy em HttpUpstream:

HttpUpstream :

  • "Este módulo fornece balanceamento de carga simples (round-robin e IP do cliente) em servidores de back-end".

Proxy HA:

  • Balanceamento de carga TCP
  • Recarregamento a quente
  • Enfileiramento de conexão
  • Página de estatísticas abrangente
  • Comunicação de soquete, incluindo capacidade de marcar servidores como inativos
  • ACL's
  • Balanceamento de carga "fixo"
  • etc
  • etc
  • etc

O HA Proxy é realmente o IMO de balanceador de carga gratuito.
[EDIT /]

2.) Olhe para o cache. Consultas de produção de perfil com uma amostra de dados de produção (ou semelhantes). Atingir o banco de dados 20k vezes por segundo poderia destruir seus servidores de banco de dados. São 1,7 BILHÕES de transações por dia, presumindo que cada solicitação envolve apenas UMA transação. Isso é muito. Squid, memcached, redis, etc podem salvar seu bacon aqui se o cache é possível.

3.) Eu mencionei o perfil?

É difícil sugerir um curso de ação sem conhecer os padrões de uso de recursos dos aplicativos. Por exemplo, você pode achar que terá que colocar o MySQL em duas caixas dedicadas para acompanhar a demanda de consulta. Por outro lado, o proxy HA é extremamente eficiente e cpu eficiente. Provavelmente, você poderia ter sua configuração HA Proxy compartilhando recursos em dois de seus web heads.

    
por 11.05.2012 / 11:58