Para duas máquinas em um cluster para cooperar e fornecer um serviço altamente disponível, são necessários vários componentes e mecanismos importantes:
1. Armazenamento compartilhado ou replicação de dados: *
armazenamento compartilhado: Ambas as máquinas precisam acessar o mesmo local de armazenamento (por exemplo, SAN, NAS, sistema de arquivos compartilhado). Isso permite que o serviço falhe perfeitamente para a outra máquina sem perda de dados porque os dados estão prontamente disponíveis.
*
Replicação de dados: Se o armazenamento compartilhado não for viável ou desejável, um mecanismo de replicação de dados (por exemplo, DRBD, CEPH, bancos de dados distribuídos com replicação) garantem a consistência dos dados entre as duas máquinas. Uma máquina atua como primária, enquanto a outra mantém uma cópia sincronizada.
2. Software/estrutura de cluster: * Este software gerencia o processo de failover, monitora a saúde de ambas as máquinas e garante que apenas uma máquina atenda ao serviço a qualquer momento. Exemplos incluem:
*
marcapasso/corosync: Uma solução popular de cluster de fonte aberta.
*
Keepalived: Frequentemente usado para gerenciamento de IP virtual (VIP).
*
batimento cardíaco: Outra solução de código aberto para alta disponibilidade.
*
Soluções proprietárias: Muitos fornecedores oferecem seu próprio software de agrupamento adaptado aos seus sistemas operacionais e hardware.
3. Endereço IP virtual (VIP): * Um único endereço IP é atribuído ao serviço, gerenciado pelo software de cluster. Este endereço IP "flutua" entre as duas máquinas. Quando a máquina principal falha, o software de cluster muda o VIP para a máquina secundária, tornando o serviço imediatamente acessível novamente.
4. Monitoramento da saúde: * O software de agrupamento monitora continuamente a saúde de ambas as máquinas (uso da CPU, memória, conectividade de rede, status de serviço). Se a máquina principal falhar na verificação de saúde, o processo de failover será iniciado.
5. Mecanismo de failover: * O software de agrupamento define e executa o processo de failover. Isso inclui:
* Detectar uma falha da máquina primária.
* Desligando graciosamente o serviço na máquina com falha (se possível).
* Iniciando o serviço na máquina secundária.
* Alternando o VIP para a máquina secundária.
6. Configuração da rede: * Ambas as máquinas devem ter conectividade de rede confiável. Uma configuração de rede redundante (por exemplo, várias interfaces de rede, interfaces ligadas) aumenta a robustez do sistema.
7. Configuração consistente: * Ambas as máquinas devem ter uma configuração idêntica para o serviço, incluindo versões de software, arquivos de configuração e quaisquer dependências necessárias. As ferramentas de gerenciamento de configuração (por exemplo, Ansible, Puppet, Chef) podem ajudar a manter a consistência.
8. Consciência do aplicativo: * O aplicativo em si deve estar ciente do ambiente de agrupamento e ser capaz de lidar com o failover com graciosidade. Isso geralmente envolve recursos como persistência de sessão ou mecanismos de travamento distribuídos.
Em essência, o clustering altamente disponível depende da redundância em vários níveis - dados, rede e o próprio serviço - gerenciado por software inteligente que garante failover contínuo e tempo de inatividade mínimo.