Configuração para ambiente virtualizado de alta disponibilidade

8

Para um projeto, tenho a tarefa de planejar uma configuração de alta disponibilidade para uma loja virtual e um sistema CMS. No entanto, é claro que o projeto está em um orçamento apertado. Portanto, uma solução de alto nível pode não estar no orçamento.

Haverá duas máquinas executando o servidor da Web (CMS, loja), uma máquina executando o banco de dados e uma máquina para executar um servidor de fax necessário para entregar pedidos aos parceiros. Todos os sistemas executam o Linux. Todos esses componentes precisam estar altamente disponíveis e devem suportar o failover transparente.

Para reduzir os custos de hardware, penso em um ambiente virtualizado. Há muita informação por aí, mas eu não sei exatamente se deveria começar. Parece óbvio que, pelo menos, os servidores são necessários como host para as máquinas virtuais, de modo que não haja um único ponto de falha.

Qual é a melhor maneira de oferecer suporte a alta disponibilidade?

A primeira pergunta é qual solução de virtualização é a melhor nessa situação. Precisa haver algum tipo de interface de gerenciamento. É preciso haver uma maneira de mover uma máquina virtual em execução de um host para outro, para que a manutenção do host possa ser feita. Precisa haver algum tipo de mecanismo, de modo que as máquinas virtuais ainda estejam disponíveis se um host falhar. Você poderia nos aconselhar sobre uma solução válida aqui?

Um armazenamento de arquivos compartilhados parece ser um pré-requisito de alta disponibilidade na maioria dos casos (espere o VMware vSphere, que é bastante caro). No entanto, preferiria colocar mais dinheiro nos hosts da máquina virtual do que adicionar outros dois servidores à configuração para fornecer um armazenamento de arquivo NFS redundante. Existe a possibilidade de se dar bem apenas com os dois hosts da máquina virtual? Uma solução pode ser dois usar esses dois como hosts NFS também. Há muita penalidade de desempenho para fazer isso?

EDITAR: Eu viso uma disponibilidade de 99,9%. No entanto, nenhuma disponibilidade 24 horas por dia, 7 dias por semana é necessária, pois há um horário comercial regular, o que dá algum espaço para manobras. O período de disponibilidade que deve ser garantido de alguma forma é entre as 10h e a meia-noite.

    
por spa 04.03.2012 / 21:38

5 respostas

13

Como uma visão geral, para alcançar a Alta Disponibilidade, você precisa:

  1. Vários servidores
  2. Várias cópias consistentes dos dados
  3. Dados consistentes que podem ser acessados entre vários servidores
  4. Uma maneira de inicializar automaticamente uma segunda instância no servidor em espera

O número 1 é tão simples quanto parece - compre dois servidores idênticos.

O número 2 pode ser alcançado por uma SAN replicante (cara, muito rápida, muito confiável) ou um sistema de arquivos replicado em cada um dos servidores (baixo custo, velocidade e confiabilidade podem depender do seu conhecimento da tecnologia escolhida).

O número 3 pode ser alcançado por uma SAN (um LUN de armazenamento, acessado por dois servidores) ou por um sistema de arquivos replicado (duas áreas de armazenamento separadas, cada servidor só pode ver o seu próprio).

O número 4 pode ser alcançado por um aplicativo de pulsação.

Para fazer isso com um orçamento pequeno, digamos que o VMWare vSphere, você pode usar um SAN ou VMWare, agora ofereça um que oferece dois armazenamentos de dados distintos em dois servidores que podem ser usados para alta disponibilidade. O vSphere também oferece pulsações integradas e configurações de alta disponibilidade.

Para fazer isso com o orçamento no , você pode ir pelo caminho Xen e usar o DRBD para replicar o armazenamento entre os dois nós. Em seguida, você configura o heartbeat para alternar o nó de armazenamento DRBD ativo e a instância do Xen para inicializar as VMs no segundo host quando o primeiro desce.

Você não terá o tempo de atividade de 5,9 (9,999%) usando estas recomendações básicas, mas você pode easilly obter 3,9 (9,9%) usando os métodos mais baratos se souber o que está fazendo.

    
por 04.03.2012 / 22:32
9

Você fala sobre "despesas" em termos de "quanto dinheiro isso custará para comprar" ao discutir o armazenamento compartilhado. Esse é um ponto totalmente válido, claro, o dinheiro é apertado em todos os lugares .

Mas se você está falando de Alta Disponibilidade, então você também precisa perguntar " por que queremos alta disponibilidade?" e se a resposta for, por exemplo, "porque o negócio gera mais de US $ 2000 por hora em vendas on-line, então, se estivermos fora por uma hora, perdemos US $ 2000", então a questão de despesas e acessibilidade pode se tornar "Podemos permitir que não comprem algo que habilite ou melhore bastante nossa implantação de alta disponibilidade? "

Este é um detalhe importante e joga com o seu comentário sobre o orçamento - a 'cauda' de TI não deve abanar o 'cão' da empresa insistindo em uma solução excessivamente complexa e cara para um pequeno problema, mas ao mesmo tempo A empresa tem certos requisitos de sua infra-estrutura de TI, então ela precisa estar preparada para orçá-los adequadamente ou ajustar seus requisitos.

Eu acho que a virtualização tem muito potencial em melhorar a disponibilidade de sistemas, mas não é uma varinha mágica. O lado do hardware, embora importante, é muito secundário em relação aos requisitos de software - não adianta ter um cluster de banco de dados SQL que cai sem problemas no caso de um dos servidores SQL falhar se o aplicativo front-end que fala para o banco de dados engasga porque não pode lidar com o failover.

E dois servidores "altamente disponíveis" ao lado um do outro em um datacenter ainda estão vulneráveis a falhas de energia, roubo, etc. Novamente, dependendo da resposta para " por que estamos fazendo isso? ", você pode precisar considerar este aspecto com bastante cuidado, pois pode adicionar despesas e complexidade a algumas partes do seu projeto.

    
por 04.03.2012 / 22:47
5

Sem saber qual banco de dados e servidor de aplicativos você usa, eu recomendaria:

  • Use o XEN > 3.2 no modo PV para as VMs (apenas meu favorito pessoal) - compartimentos ou outras soluções de virutalização lightwight podem se encaixar também (OpenVZ para nomear um).
  • Construa quatro máquinas de VM em cada nó físico
  • Use um RAID 5 local com discos SAS de 3,5 "- quantos discos forem possíveis localmente (5 é bom)
  • Use discos de 15k RPM (seus bancos de dados precisarão)
  • Use o DRBD e o OCFS2 para fornecer armazenamento "compartilhado" barato, use uma rede local rápida, segura e confiável para essa conexão (a interconexão direta é muito rápida e boa).
  • Faça o HA no nível do aplicativo
  • Use balanceamento de carga entre os pares de máquinas, para que você tenha 8 máquinas executando tarefas simultâneas

Exemplos de HA:

  • Servidor de aplicativos: use o Tomcat no modo ativo / ativo em cluster
  • LVS: Use slave simultâneo e replicação master de lvs
  • Oracle-DB: Use o RAC (não sei se há solução equivalente para DBs OpenSource)

Se você fizer o HA na camada de aplicativo, essa camada saberá como replicar as sessões. Se um nó ficar inativo (planejado ou não), o nó sobrevivente assumirá - incluindo as sessões.

    
por 04.03.2012 / 22:29
2

Por que você quer comprar seus próprios hosts? Por que você não encontra um provedor de Enterprise Cloud / IaaS como BlueLock ou Terremark que fornecerá a infraestrutura de que você precisa. Eles fornecerão serviços como o vSphere HA (mais como tempo de inatividade reduzido do que o HA de serviço, mas é uma solução econômica), Firewall, LTM / SSL Offloader, SAN (com prateleiras redundantes), Monitoramento / Alerta etc. Observe que não falando sobre as soluções de nuvem do consumidor aqui, esteja preparado para pagar pelo valor.

    
por 04.03.2012 / 23:11
2

Você pode analisar uma solução de replicação virtualizada / de armazenamento tudo-em-um.

O sistema de arquivos ZFS torna isso possível, como descrito neste post de blog .

Outra opção seria seguir o tutorial detalhando uma solução com o Red Hat KVM .

    
por 04.03.2012 / 23:30