Configuração para ambiente virtualizado de alta disponibilidade

9

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á com um orçamento apertado. Portanto, uma solução de ponta pode não estar no orçamento.

Haverá duas máquinas executando o servidor Web (CMS, loja), uma máquina executando o banco de dados e uma máquina para executar um servidor de fax necessário para a entrega de pedidos aos parceiros. Todos os sistemas rodam Linux. Todos esses componentes precisam estar altamente disponíveis e devem oferecer suporte a 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 por onde começar. Parece óbvio que pelo menos os servidores são necessários como host para as máquinas virtuais, para que não haja um ponto único de falha.

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

A primeira pergunta é qual solução de virtualização é a melhor nessa situação. Precisa haver algum tipo de interface de gerenciamento. É necessário que haja 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. É necessário haver algum tipo de mecanismo, para que as máquinas virtuais ainda estejam disponíveis se um host falhar. Você poderia aconselhar sobre uma solução válida aqui?

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

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

spa
fonte
2
Quão alta é a alta disponibilidade? Você está filmando pela disponibilidade de 1 a 9 ou 6 a 9 ou em algum lugar intermediário? Até que você tenha requisitos concretos, é impossível dizer se o que você quer fazer é possível ou não com um determinado orçamento.
growse
Sim você está certo. Eu almejo uma disponibilidade de 99,9%.
spa
"99,9%" não é apenas uma frase que abordamos. Isso equivale a cerca de 8,8 horas de inatividade por ano . Isso tira você da gama de sistemas que são lançados juntos com um orçamento apertado. Se o seu orçamento for limitado, você pode dar suporte a esse nível de disponibilidade?
precisa
1
@ RobMoir - eu diria que, se você atender aos critérios descritos na minha resposta, não haverá muitos problemas que não poderá corrigir nessas 8 horas (e o orçamento ainda poderá ser pequeno). Se você garantir que o tempo de inatividade programado fora do horário e de aviso avançado não conte para o seu SLA (para software que não seja 24/7).
Mark Henderson
@ MarkHenderson Eu sei que você está certo, estou apenas dizendo que o processo requer um pouco de reflexão e planejamento e não "acontecerá" (você precisa garantir que você possa obter peças de reposição no local dentro de 8 horas, por por exemplo, para não perder 7 horas de "janela" para os correios ou encontrar o fornecedor favorito que escolheu naquele dia como esgotado em algum cabo trivial que eles normalmente teriam em estoque aos milhares) .
precisa

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 replicável (cara, muito rápida, muito confiável) ou por um sistema de arquivos replicado em cada um dos servidores (barato, 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 pode ver apenas o seu).

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 uma SAN ou o VMWare agora oferece um dispositivo de armazenamento auto-replicante que oferece dois armazenamentos de dados distintos em dois servidores que podem ser usados ​​para alta disponibilidade. O vSphere também oferece pulsações internas e configurações de alta disponibilidade.

Para fazer isso sem orçamento, você pode seguir o caminho do Xen e usar o DRBD para replicar o armazenamento entre os dois nós. Em seguida, configure a pulsação para alternar o nó de armazenamento DRBD ativo e a instância Xen para inicializar as VMs no segundo host quando o primeiro for desativado.

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

Mark Henderson
fonte
9

Você fala sobre "despesa" em termos de "quanto dinheiro isso custará para comprar" ao discutir o armazenamento compartilhado. Esse é um ponto totalmente válido, é claro, o dinheiro está apertado em todo lugar .

Mas se você está falando sobre alta disponibilidade, também precisa perguntar " por que queremos alta disponibilidade?" e se a resposta for, por exemplo, "porque a empresa fatura mais de US $ 2000 por hora em vendas on-line, por isso, se ficarmos fora por uma hora, perdemos US $ 2000", a questão da despesa e da acessibilidade pode se tornar "Podemos se dar ao luxo de não comprar algo que permita ou melhore bastante nossa implantação de alta disponibilidade? "

Esse é um detalhe importante e é válido para o seu comentário sobre o orçamento - a 'cauda' da TI não deve abanar o 'cão' da empresa, insistindo em uma solução muito complexa e cara para um pequeno problema, mas ao mesmo tempo se a empresa tiver certos requisitos de sua infraestrutura de TI, ele deve estar preparado para orçar adequadamente para eles ou para ajustar seus requisitos.

Eu acho que a virtualização tem muito potencial para melhorar a disponibilidade dos sistemas, mas não é uma varinha mágica. O lado do hardware, apesar de importante, é muito secundário aos requisitos de software - não é bom ter um cluster de banco de dados SQL que cai sem problemas no caso de um dos servidores SQL travar 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" sentados um ao lado 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 considerar esse aspecto bastante com cuidado, pois pode adicionar despesas e complexidade a várias partes do seu projeto.

Rob Moir
fonte
3
...no good having a SQL database cluster that falls over with no trouble in the event of one of the SQL servers crashing if the front-end application that talks to the database chokes because it can't handle the failover.- Eu não pude enfatizar isso o suficiente. Tivemos um cliente que nos levou a implementar um cluster HA SQL Server em uma grande SAN e, no final do dia, seu software tinha que ser reiniciado no caso de um failover, porque não conseguia lidar com uma quebra de comunicação. Foi um exercício caro e inútil quando um SQL Mirror e NLB seriam suficientes.
Mark Henderson
Parece que nós dois temos cicatrizes similares de projetos antigos
Rob Moir
@ MarkHenderson Por que a comunicação foi interrompida (entre qual deles - SAN ou rede)?
Nils
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 o meu favorito) - compartimentos ou outras soluções de virutalização do lightwight também podem se encaixar (OpenVZ para citar um).
  • Construa quatro máquinas VM em cada nó físico
  • Use um RAID 5 local com discos SAS 3,5 "- tantos discos quanto possível localmente (5 é bom)
  • Use discos de 15k RPM (seus DBs precisarão dele)
  • Use DRBD e OCFS2 para fornecer armazenamento "compartilhado" barato, use uma rede local rápida, segura e confiável para esta conexão (a ligação de interconexões diretas é muito rápida e boa).
  • Faça a HA no nível do aplicativo
  • Use o balanceamento de carga entre os pares de máquinas para obter 8 máquinas executando tarefas simultâneas

Exemplos de HA:

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

Se você faz HA na camada de aplicativo, essa camada sabe como replicar sessões. Se um nó for desativado (planejado ou não planejado), o nó sobrevivente assumirá o controle - incluindo as sessões.

Nils
fonte
"Oracle-DB: Use RAC" - Standard Edition não é licenciado ou suportado com OCFS2. Fora isso, uma resposta muito informativa.
Kubanczyk 27/10/2013
@kubanczyk O Oracle-RAC é mais do que o ocfs2. Mas o ocfs2 é gratuito. Então você pode usá-lo quando quiser.
Nils
2

Por que você quer comprar seus próprios anfitriões? Por que você não encontra um provedor Enterprise Cloud / IaaS como BlueLock ou Terremark que forneça a infraestrutura necessária? Eles fornecerão serviços como o vSphere HA (mais parecido com o tempo de inatividade reduzido do que o serviço HA, mas é uma solução econômica), firewall, descarregador LTM / SSL, SAN (com prateleiras redundantes), monitoramento / alerta etc. Observe que não estamos falando sobre soluções de nuvem para consumidores aqui, esteja preparado para pagar por valor.

HTTP500
fonte
Sim você está certo. No entanto, a configuração inclui hardware personalizado para a entrega do fax. Portanto, uma solução em nuvem não funciona tristemente.
spa
@spa, você ainda pode provisionar o hardware personalizado em seu ambiente físico, o restante no virtual e conectar as VLANs.
HTTP500 4/04/12