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.
Respostas:
Como uma visão geral, para alcançar a Alta Disponibilidade, você precisa:
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.
fonte
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.
fonte
...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.Sem saber qual banco de dados e servidor de aplicativos você usa, eu recomendaria:
Exemplos de HA:
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.
fonte
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.
fonte
Você pode procurar uma solução de replicação virtualizada / armazenamento all-in-one.
O sistema de arquivos ZFS torna isso possível, conforme descrito nesta postagem do blog .
Outra opção seria seguir o tutorial detalhando uma solução com o Red Hat KVM .
fonte