O que devo saber ao configurar um cluster com balanceamento de carga para um aplicativo LAMP?

2

Devo dizer: "Como configuro um cluser balanceado de carga". Eu não sou um administrador de qualquer mérito .. apt-getted e yum instalado meu caminho para algumas pilhas na nuvem, mas nada extravagante.

Agora, tenho um problema com um site do Drupal que foi além dos recursos do seu hardware. Há dois servidores atrás de um firewall, o servidor de aplicativos que está atingindo 90% + durante horários de pico extra e o servidor db / solr que raramente é acima de 10% (normalmente 3-4) nesses mesmos horários. Estes são hardware físico gerenciado. DB é muito lido pesado.

Financeiramente, faz sentido movê-los para a nuvem de qualquer maneira, mesmo sem uma alteração na configuração.

Então, o que eu imaginei é um balanceador de carga executando mod_proxy balanceando pedidos entre 2 (eu gostaria de ter algo que magicamente cresce) servidores de aplicativos sincronizados com nfs conversando com um servidor de banco de dados.

Atualmente, o servidor de aplicativos é um DELL PowerEdge 2950 MKIII com 32 gb de ram, 2,5 ghz x 4. Db é o mesmo com metade do ram. Ambos têm configurações de raid 1 de 15000 rpm.

Então, realmente parece factível. O balanceador de carga inicial parece que não precisa ser nada, talvez uma imagem de 1 GB?

Eu vi em algum lugar que pode haver problemas com cookies se o usuário alternar os servidores no meio da sessão. Alguém pode falar com isso?

Qualquer conselho geral, lugares para aprender mais, etc. tendo em mente que eu realmente só quero derrubar isso em vez de se tornar um especialista.

Obrigado

    
por geoff 19.01.2011 / 06:28

3 respostas

1

Parece que você precisa adicionar outro servidor da Web ao seu mix. Você tem muita sobrecarga de DB, o que é legal. Esse tipo de coisa é bem factível. Você já tem os pontos principais.

  • Vários servidores da web.
  • Os dados são veiculados via NFS a partir de um NAS em algum lugar ou, na pior das hipóteses, um dos servidores da web, e montados por todos os servidores da Web.
  • Um balanceador de carga (mod_proxy é bom, mas o nginx pode ser melhor) é configurado para garantir que as sessões de entrada sejam "fixas" em um servidor da web específico.

Obter failover de sessão está além do meu Drupal-ken, mas pode ser factível. E sim, se um dos seus servidores da Web reiniciar por algum motivo, esses usuários terão que restabelecer. Para um aplicativo que funcione de forma semelhante ao anterior, quando precisarmos fazer uma reinicialização planejada, configuramos nosso balanceador de carga (um balanceador de carga de hardware, um FIP BigIP) para não permitir novas sessões e observar até que todas as sessões existentes sejam desativadas antes da reinicialização o servidor web.

    
por 19.01.2011 / 07:11
0

Os cookies da Afaik são armazenados por padrão no banco de dados, sendo automaticamente compartilhados entre os usuários. Basta compartilhar seu webroot pelo NFS e quase tudo deve funcionar bem (alguns módulos de upload podem agir se você alternar no meio da sessão).

Talvez eu esteja perdendo o objetivo do seu post, mas quando seu servidor Drupal é carregado muito mais do que o DB, algo está errado.

  • Tente encabelar o sistema de cache interno do drupal
  • Instale um gerenciador de opcode do PHP (APC, eaccelerator, xcache)
  • Experimente um dos muitos módulos de armazenamento em cache, se possível, empurre as páginas inteiras para o disco

Eu faço esse tipo de coisa para ganhar a vida; se você não consegue entender: me avise.

    
por 19.01.2011 / 08:09
0
Em última análise, o failover / balanceamento de carga deve ser factível no cliente - embora haja algumas boas razões para fornecer essa funcionalidade ao longo da cadeia (e seu implícito no nível de rede entre elas), que significa invariavelmente DNS round-robin. Certamente, para alguns servidores da Web que usam um balanceador de carga separado é um exagero.

Eu não estou muito familiarizado com o Drupal - mas se o conteúdo estiver todo armazenado no banco de dados, tudo o que você precisa fazer é configurar um servidor web na caixa DB e configurar os registros DNS round-robin do site, favorecendo o caixa somente para webserver.

Uma rápida olhada nas instruções de instalação do Drupal não faz referência a ter diretórios graváveis, então parece que minha suposição está correta.

Além de distribuir a carga para onde a capacidade está disponível, você está eliminando um dos pontos únicos de falha em sua pilha - o servidor da Web - o OTOH adicionando um balanceador de carga significa que você está adicionando outra SPOF para sua pilha.

    
por 19.01.2011 / 12:15