load balancing, alta disponibilidade para configuração do webapp

2

Criamos uma rede social de interesse especial e precisamos configurar agora a configuração adequada do servidor para os servidores de webapp.

Temos para o servidor físico webapp 5 disponível (2xE5645 CPU, 24 GB RAM, RAID, 4x Gbit NIC), um dos cinco servidores precisa fornecer a API para nossos visitantes móveis (iOS , Android). Nosso webapp precisa de PHP, APC, Memcached e MySQL.

Também temos mais 4 servidores físicos internos (2xE5620, 12 GB RAM, RAID, 4x Gbit NIC):

  • Servidor de envio de cometas (servidor personalizado para o bate-papo)

  • Servidor de fila / correio (beanstalkd)

  • servidor estático (servidor web G-WAN) com 2xDAS com 12x2TB (total 40 TB no Raid 6)

  • Servidor web Apache dedicado para HTTPS (esse servidor também pode ser usado para o cluster LB se a página segura SSL for colocada no cluster LB, está melhor?).

Para começar, queremos apenas ter o servidor webapp em LB / HA, porque não temos mais servidores disponíveis no momento.

E o último é um servidor de baixo custo (X3430, 4 GB de RAM, RAID, 2x Gbit NIC) que é usado para monitorar todo o hardware.

Temos 2x comutador Gbit de 48 portas HP Procurve 2900 gerenciado.
Todos os equipamentos acima permanecem no nosso Rack em um centro de rede. Nós usamos o RHEL 6 em todos os servidores.

Eu tenho muitas ideias, mas não sei ao certo qual será o melhor caminho.

Minha direção é a maneira de instalar o servidor web HA Proxy e Apache em duas caixas, ter em duas caixas o MySQL DB Server e em um tanto o Apache quanto o MySQL para o API / Webservice. Para usar um dos switch para a rede privada, onde todo o servidor será conectado e usado para comunicação interna (MySQL, transferência de arquivos após o upload).

É útil conectar várias portas NIC por servidor ao Comutador?

O HA Proxy é o melhor caminho para o nosso caso? Ou seria melhor usar nginx em 2 ou 3 caixas e usá-lo para balanceamento de carga e serviço PHP e ter LVS ou algo similar para a parte HA?

Estou aberto para todas as soluções e o servidor 5 + 1 pode ser usado flexível.

Obrigado por qualquer ajuda.

UPDATE: Depois de mais pesquisas, acho que seria difícil encontrar uma solução para ter HA para todos os servidores. Minha ideia real para a configuração é:

nginx como proxy para balanceamento de carga (usarei uma das caixas de especificações do meio)
3 Apache webserver na rede privada
2 MySQL Server Master / Slave em rede privada

Na solução acima, o Servidor Web Apache também hospedará o site SSL para pagamento, não tenho certeza se o nginx pode manipular o certificado SSL para esses servidores de back-end diferentes.

UPDATE 2: Eu fiz mais pesquisas, Redhat oferece um Add-On para balanceamento de carga baseado em LVS. link Este Addon parece bem, mas eu ainda não sei qual é o caminho certo? É melhor ir com um nginx na frente ou com LVS ou algo assim? Alguém me disse que eu posso usar o HP Procurve 2900 Switch existente para balanceamento de carga simples também ...

    
por Nenad 30.04.2011 / 15:54

2 respostas

1

O LVS foi projetado para o balanceamento de carga da camada 4. nginx ou ha proxy são usados apenas para o balanceamento de carga da camada 7 (quero dizer tráfego da web). Assim, gostaria de sugerir que você use nginx ou HA proxy como seu balanceador de carga se o tráfego da Web for sua maior carga de trabalho. Se o máximo de conexões simultâneas for o seu afunilamento, recomendo que você use o proxy HA como seu balanceador de carga, pois o proxy HA tem melhor desempenho (Ref: link ).

    
por 01.06.2011 / 00:30
0

HA para um webapp deve ser projetado desde o início. Queria ter visto isso acontecer:)

Mas, falando sério: você está pedindo uma configuração ativa / ativa. As perguntas mais importantes ao decidir sobre essa arquitetura é como os dados de aplicativos precisam ou não precisam, podem ou não ser mantidos em sincronia entre os servidores de aplicativos. Além disso, como síncrona tem que ser, existe código que espera que uma mudança seja distribuída globalmente antes de retornar, existem áreas no aplicativo que podem lidar com um atraso de estado de alguns segundos, mas não mais (não se esqueça que a replicação do mysql é do segundo tipo!) Essas necessidades e possibilidades ditarão sua configuração. Hardware de dimensionamento vem depois. E ativo / ativo é sempre difícil de enxertar em qualquer coisa que não foi projetada com isso em mente.

    
por 20.05.2012 / 00:05