Cluster com balanceamento de carga do Vsphere e do Apache

1

Eu estava olhando para o Vsphere para balancear automaticamente meus servidores web apache e servidores mysql, mas isso realmente fará o trabalho?

Eu sei que ele diz que faz o balanceamento de carga automático, mas não tem certeza se significa exatamente o que eu quero alcançar.

Existe uma maneira mais fácil de configurar um cluster php-apache e mysql dentro de máquinas virtuais?

Ou há algum guia para agrupamento? (Eu tentei googling sem muita sorte)

Qualquer ajuda para entender / configurar o clustering e balanceamento de carga em máquinas virtuais é apreciada.

    
por RobAtStackOverflow 12.09.2012 / 01:23

2 respostas

1

O que o vSphere faz:

  • Clustering - DRS = executando várias VMs em mais de um host, o vSphere decidirá automaticamente em qual host mover a VM em execução
  • Alta disponibilidade = executando guest em mais de um host em paralelo - se um cair - segundo um garante disponibilidade de serviço

Clusterização do MySQL - não é fácil, não é possível descrever detalhes aqui, mas geralmente:

  • Depende do DB Engine (MyISAM, InnoDB, XtraDB)
  • Muito limitado
  • Armazenamento compartilhado - na maioria das vezes não é possível
  • Mais fácil de implementar nós de gravação única e de leitura múltipla com replicação

Balanceamento de carga do Apache / web, configuração ideal:

  • Nível de rede - balanceamento de carga TCP, requer pelo menos 1 nó balanceador para operação normal, 2 para HA (backup ativo). Implementado através do módulo de kernel Linux Virtual Server (LVS) :
    • GUI da Piranha (RHEL e Fedora) (suficiente, fácil de implementar)
    • Mantido em atividade
    • UltraMonkey
    • Linux-HA
  • Nível do SO - configuração de rede, gateway, configuração de ARP (LVS-DR), atribuindo IPs globais ao host local (127.0.0.1 - LVS-NAT).
  • Nível de aplicativo
    • Nível do Apache - sem alterações, mantenha-o em execução na porta 80, para que os aplicativos possam se ver (solicitações de loopback)
    • Nível do PHP - as sessões, tmp, também devem ser compartilhadas entre os nós
    • Use o mysql-proxy em execução no modo de escuta do soquete e da porta, encaminhando pedidos para o servidor mysql
  • Nível de armazenamento - os dados entre os servidores da web devem ser compartilhados com algo muito rápido, como o GlusterFS

O desempenho do LVS é bastante alto - ele é de 1,6 GHz dual-core no nível do kernel, pode executar mais do que o gigabit no modo NAT e evitar muitos problemas no nível da rede. O IP virtual será obtido em L2 pelo servidor LB e as solicitações serão encaminhadas pelo kernel para o IP do servidor, que pode ter o mesmo IP (LVS-DR) ou com NAT (LVS-NAT). O LVS-DR requer configuração específica de arp nos lados do servidor, porque todos os servidores estarão executando com o mesmo IP. A implementação do LVS-NAT é mais fácil e você pode balancear a carga de tudo o que quiser em qualquer servidor. Para trabalhar com o LVS-NAT normalmente, use o kernel 2.6.37 ou posterior. O balanceador também pode atuar como gateway e firewall. A persistência da conexão deve ser definida para evitar alguns problemas (consulte Documentos do LVS) e os tempos limite do TCP do kernel devem ser definidos para valores mínimos. Você também deve escrever scripts para verificar a disponibilidade do host - se estiver funcionando bem ou não. Tente ter 100% de configuração igual nos nós da web.

Globalmente - é uma arquitetura muito boa, muito eficiente e ideal, mas exigirá alguns ajustes depois. Gargalo é resposta de armazenamento e mysql. O php-apache HA / Balancing está funcionando idealmente.

Squid, mod_proxy_balancer, HAproxy etc são aplicativos no nível do usuário, ineficazes e idiotas:

  • O Squid pode ser usado como proxy ou proxy reverso (melhor usar o verniz) para Finalização HTTP ou / e segurança - filtro. Você pode adicioná-lo em cada servidor da Web e encaminhar solicitações internamente para ocultar as informações do servidor da Web, etc. Além disso, precisará do mod_extract_forwarded para manter os IPs de origem corretamente identificados pelo servidor da Web e pelo aplicativo.
  • mod_proxy_balancer apenas outro "não tinha nada para fazer - eu escrevi módulo apache" coisa nesta situação.
  • haproxy é uma coisa muito estúpida - aplicativo ouvindo a porta e iniciando solicitações para backend - eu odeio isso.

Você pode jogar com o conjunto de clusters RedHat e obter algumas melhorias para o compartilhamento de arquivos (GFS2 etc), ter o HA do aplicativo lá, mas vai exigir mais esforço do seu lado.

Para o nó balanceador - recomendo estritamente o Fedora 15 ou posterior (kernel mais recente - melhor). Para mais - o que você quiser, até mesmo o Windows (mas terá alguns problemas com o acesso loopback http).

Além disso, recomendo que você use a vinculação baseada em LACP nos lados da Web de armazenamento.

    
por 12.09.2012 / 10:31
0

Esta não é a solução que você está procurando. O clustering do vSphere trata da proteção de VMs inteiras, não dos aplicativos nessas VMs, você precisa de um balanceador de carga para que desculpe, algo tão simples quanto um proxy Squid / HA até o kit Cisco ASA / F5 seria apropriado. p>     

por 12.09.2012 / 08:56