
Em artigos anteriores, começamos a falar sobre o que é o Proxmox VE e como ele funciona. Hoje, vamos discutir como utilizar a capacidade de clustering e mostrar quais são as vantagens que isso oferece.
O que é um cluster e para que serve? Um cluster (do inglês cluster) é um grupo de servidores interligados por canais de comunicação de alta velocidade, que operam e se apresentam ao usuário como um único sistema. Existem vários cenários principais de uso de clusters:
- Garantia de alta disponibilidade (High-availability).
- O balanceamento de carga (Load Balancing).
- Aumento de desempenho (High Performance).
- Execução de computações distribuídas (Distributed computing).
Cada cenário tem suas próprias exigências para os componentes do cluster. Por exemplo, para um cluster que executa computações distribuídas, o principal requisito é uma alta velocidade na execução de operações de ponto flutuante e baixa latência na rede. Esses tipos de clusters são frequentemente usados para fins de pesquisa científica.
Já que tocamos no tema de computações distribuídas, vale a pena mencionar que existe também o conceito de sistema grid (do inglês grid — grade, rede). Apesar da semelhança geral, não devemos confundir um sistema grid com um cluster. Um grid não é um cluster nos moldes tradicionais. Ao contrário de um cluster, os nós que compõem um grid geralmente são heterogêneos e possuem baixa disponibilidade. Essa abordagem facilita a resolução de tarefas de computações distribuídas, mas não permite criar um sistema coeso com os nós.
Um exemplo marcante de sistema grid é a popular plataforma de computação (Berkeley Open Infrastructure for Network Computing). Esta plataforma foi inicialmente criada para o projeto (Search for Extra-Terrestrial Intelligence at Home), que se dedica à busca de vida extraterrestre por meio da análise de sinais de rádio.
Como funcionaUm enorme volume de dados obtidos dos radiotelescópios é dividido em várias partes pequenas, que são enviadas para os nós do sistema grid (no projeto SETI@home, os computadores de voluntários atuam como esses nós). Os dados são processados nos nós e, após a conclusão do processamento, são enviados ao servidor central do projeto SETI. Dessa forma, o projeto resolve uma complexa tarefa global, sem dispor da potência computacional necessária.
Agora que temos uma compreensão clara do que é um cluster, vamos analisar como podemos criar e utilizá-lo. Vamos usar um sistema de virtualização de código aberto. .
É especialmente importante entender claramente as limitações e os requisitos de sistema do Proxmox antes de começar a criar um cluster, a saber:
- o número máximo de nós em um cluster é 32;
- todos os nós devem ter a mesma versão do Proxmox (existem exceções, mas não são recomendadas para produção);
- se for planeado usar a funcionalidade de Alta Disponibilidade no futuro, o cluster deve ter no mínimo 3 nós;
- para a comunicação entre os nós, as portas devem estar abertas UDP/5404, UDP/5405 para corosync e TCP/22 para SSH;
- a latência na rede entre os nós não deve exceder 2 ms.
Criação de cluster
Importante! A configuração abaixo é apenas para testes. Não se esqueça de verificar a do Proxmox VE.
Para iniciar um cluster de teste, usamos três servidores com o hipervisor Proxmox instalado e com a mesma configuração (2 núcleos, 2 GB de RAM).
Se você quer saber como instalar o Proxmox, recomendamos ler nosso artigo anterior — .
Inicialmente, após a instalação do sistema operacional, um único servidor opera em Standalone-mode.

Vamos criar um cluster clicando no botão Create Cluster na seção correspondente.

Definimos um nome para o futuro cluster e escolhemos a conexão de rede ativa.

Clicamos no botão Create. O servidor gerará uma chave de 2048 bits e a gravará juntamente com os parâmetros do novo cluster nos arquivos de configuração.

A mensagem TAREFA OK indica que a operação foi realizada com sucesso. Agora, ao olhar as informações gerais do sistema, vemos que o servidor entrou no modo de cluster. Por enquanto, o cluster consiste apenas em um nó, ou seja, ainda não possui as funcionalidades para as quais um cluster é necessário.

Conectando ao cluster
Antes de nos conectarmos ao cluster criado, precisamos obter informações para realizar a conexão. Para isso, vamos para a seção Cluster e clicamos no botão Join Information.

Na janela que se abre, nos interessa o conteúdo do campo de mesmo nome. Será necessário copiá-lo.

Aqui estão codificados todos os parâmetros necessários de conexão: o endereço do servidor para conexão e a impressão digital. Vamos para o servidor que precisa ser incluído no cluster. Clique no botão Juntar ao Cluster e na janela que se abre, cole o conteúdo copiado.

Campos Endereço do Peer e Fingerprint serão preenchidos automaticamente. Digite a senha root do nó número 1, escolha a conexão de rede e clique no botão Juntar.

Durante o processo de junção ao cluster, a página web da GUI pode parar de atualizar. Isso é normal, basta recarregar a página. Da mesma forma, adicionamos mais um nó e, por fim, obtemos um cluster completo com 3 nós em funcionamento.

Agora podemos controlar todos os nós do cluster a partir de uma única GUI.

Organização de Alta Disponibilidade
O Proxmox ‘pronto para uso’ suporta a funcionalidade de organização de HA tanto para máquinas virtuais quanto para containers LXC. A ferramenta ha-manager detecta e gerencia erros e falhas, fazendo a transferência de emergência de um nó que falhou para um ativo. Para que o mecanismo funcione corretamente, é necessário que as máquinas virtuais e os containers tenham um armazenamento de arquivos comum.
Após ativar a funcionalidade de Alta Disponibilidade, a pilha de software ha-manager começará a monitorar continuamente o estado de operação da máquina virtual ou container e interagir assincronamente com outros nós do cluster.
Unir o armazenamento compartilhado
Como exemplo, nós configuramos um pequeno armazenamento de arquivos NFS no endereço 192.168.88.18. Para que todos os nós do cluster possam utilizá-lo, precisamos realizar as seguintes etapas.
No menu da interface web, escolhemos Datacenter — Armazenamento — Adicionar — NFS.

Preencha os campos ID e Servidor. No menu suspenso Export escolha o diretório desejado entre os disponíveis e na lista Conteúdo — os tipos de dados necessários. Após clicar no botão Adicionar o armazenamento será conectado a todos os nós do cluster.

Ao criar máquinas virtuais e containers em qualquer um dos nós, indicamos nosso storage como armazenamento.
Configurar HA
Como exemplo, criaremos um container com Ubuntu 18.04 e configuraremos a Alta Disponibilidade para ele. Após criar e iniciar o container, acesse a seção Datacenter — HA — Adicionar. No campo aberto, indicamos o ID da máquina virtual/container e o número máximo de tentativas de reinício e movimentação entre nós.
Se esse limite for ultrapassado, o hipervisor marcará a VM como falha e a colocará no estado de Erro, após o que interromperá qualquer ação relacionada a ela.

Após clicar no botão Adicionar utilitário ha-manager vai notificar todos os nós do cluster de que agora a VM com o ID especificado está sob controle e, em caso de falha, deve ser reiniciada em outro nó.

Vamos provocar uma falha
Para ver como o mecanismo de failover funciona, vamos desligar inesperadamente o node1 da energia. Vamos observar de outro nó o que acontece com o cluster. Vemos que o sistema registrou a falha.

O funcionamento do mecanismo de HA não significa continuidade na operação da VM. Assim que o nó 'cai', o funcionamento da VM pausa temporariamente até ser reiniciada automaticamente em outro nó.
E é aqui que começa a 'magia' — o cluster automaticamente realocou um nó para executar nossa VM e, em 120 segundos, a operação foi restaurada automaticamente.

Desligamos o node2 da energia. Vamos ver se o cluster consegue suportar isso e se a VM volta ao estado operacional automaticamente.

Infelizmente, como podemos ver, tivemos um problema em que o único nó restante em funcionamento já não possui quórum, o que desativa automaticamente a operação de HA. Damos o comando de forçar a configuração do quórum no console.
pvecm expected 1 
Após 2 minutos, o mecanismo de HA funcionou corretamente e, não encontrando o node2, iniciou nossa VM no node3.

Assim que ligamos novamente o node1 e o node2, a operação do cluster foi totalmente restaurada. Observe que a VM não migra automaticamente de volta para o node1, mas isso pode ser feito manualmente.
Resumindo
Falamos sobre como funciona o mecanismo de clusterização no Proxmox e também mostramos como configurar o HA para máquinas virtuais e contêineres. O uso adequado de clusterização e HA aumenta significativamente a confiabilidade da infraestrutura e garante recuperação após falhas.
Antes de criar um cluster, é essencial planejar imediatamente para quais fins ele será utilizado e quão escalável ele precisará ser no futuro. Também é necessário verificar a infraestrutura de rede para garantir que funcione com latência mínima, para que o cluster futuro opere sem falhas.
Conte-nos — você utiliza as capacidades de clusterização no Proxmox? Aguardamos seus comentários.
Artigos anteriores sobre o hipervisor Proxmox VE:
Fonte: habr.com
