Este documento descreve como criar, configurar e monitorar um cluster na Segura® Platform utilizando o Orbit CLI.
O comando orbit cluster configura a topologia do cluster, converge cada nó ao estado declarado e verifica a saúde do ambiente.
Pré-requisitos
- Duas ou mais VMs da Segura® Platform implantadas e em execução com a mesma versão.
- Todas as VMs com recursos de computação idênticos ou equivalentes (CPU, RAM, disco).
- Conectividade full mesh confirmada entre todos os nós.
- Todos os appliances com licença aplicada individualmente e operando em modo standalone.
- Acesso SSH a todos os nós com privilégios
sudopara rodar os comandosorbit.
Criar o cluster
Configure o cluster exclusivamente pelo Orbit CLI. A versão 4.2.9 descontinuou a configuração via interface web; não utilize mais essa opção.
Passo 1: Verificação inicial
Antes de qualquer configuração, rode as verificações a seguir em todos os nós.
-
Confirme que todos os nós estão em modo standalone e em execução:
sudo orbit app statusSaída esperada em cada nó antes da configuração do cluster:
Application: Active Replication: Inactive Instance: Primary Node Name: <node_hostname> Maintenance: No Main: Yes -
Confirme a conectividade de rede entre os nós. A partir de cada nó, verifique se as portas a seguir estão acessíveis nos demais nós:
nmap -p 9300,4567,4248,443 <IP_do_outro_nó> -
Confirme que todos os nós estão na mesma versão da Segura® Platform:
sudo orbit version -
Confirme que todos os serviços estão em execução em todos os nós:
sudo orbit services listSaída esperada para todos os serviços:
Active: active (running)
Passo 2: Realizar a configuração em cada nó
Rode o comando a seguir em cada nó que fará parte do cluster, antes de aplicar a configuração em qualquer um deles.
sudo orbit cluster configure
O assistente interativo solicitará as seguintes informações, nesta ordem:
Cluster primary IP:
Secondary node IPs (one per line, blank to finish):
Secondary IP #1 (blank to finish):
Secondary IP #2 (blank to finish):
...
Arbiter IP (blank for none):
- Em Cluster primary IP, informe o IP do nó primário. Use o mesmo valor em todos os nós.
- Em cada solicitação de Secondary IP, informe os IPs dos nós secundários, um por linha, na mesma ordem em todos os nós. Deixe o próximo prompt em branco para finalizar a lista.
- Em Arbiter IP, deixe em branco caso não haja árbitro no ambiente.
Ao concluir, o assistente exibe um resumo. Confirme se os valores estão corretos antes de prosseguir para o próximo nó:
Configuration summary:
mode : cluster
role : primary
file sync : true
primary : <node1-ip>
secondaries: <node2-ip>, <node3-ip>
arbiter : (none)
As configurações devem ser idênticas em todos os nós do cluster, especialmente a ordem dos endereços IP dos membros. Configurações incorretas podem causar indisponibilidade ou perda de dados. Não avance para o Passo 3 até que o comando orbit cluster configure tenha sido concluído em todos os nós.
Passo 3: Aplicar a configuração nó a nó
Somente após a conclusão do Passo 2 em todos os nós, aplique a configuração em um nó por vez, começando pelo nó primário.
Não rode o comando orbit cluster apply em mais de um nó simultaneamente. Iniciar o comando no próximo nó antes do nó anterior concluir e sincronizar o processo pode causar falha na formação do cluster.
-
No nó atual, abra uma sessão
screene aplique a configuração. Este passo é demorado. Aguarde a conclusão antes de verificar a saída:sudo screen -S cluster sudo orbit cluster applySaída esperada ao final:
Cluster apply completed on this node. Verify with 'orbit cluster status'. -
Confirme que a replicação foi concluída antes de avançar para o próximo nó:
grep "Synchronized with group, ready for connections" /var/log/mysql/mysql-error.logSaída esperada:
<data atual> [Note] WSREP: Synchronized with group, ready for connections -
Somente após confirmar as condições dos itens 1 e 2 no nó atual, avance para o próximo nó e repita o Passo 3.
Verificar o status do cluster
Verifique o status geral do cluster:
sudo orbit cluster status
Saída esperada no nó primário:
Cluster status
mode : cluster
declared role : primary
primary node : <node1-ip>
this is primary: true
galera : healthy (Synced)
nats : managed
elasticsearch : managed
Cluster is healthy.
Verifique o status da aplicação no nó primário:
sudo orbit app status
Saída esperada no nó primário:
Application: Active
Replication: Active
Instance: Cluster
Node Name: cluster1_<id>
Primary: cluster1_<id>
Main: Yes
No nó secundário, a saída deve indicar:
Application: Active.Replication: Active.Instance: Cluster.Primary:apontando para o nome do nó primário.Main: No.
Verifique o status do Elasticsearch:
sudo orbit elasticsearch status
A saída deve exibir "status": "green", com number_of_nodes e number_of_data_nodes correspondendo ao total de nós, e unassigned_shards: 0.
O cluster está completamente operacional somente quando todos os nós reportam Application: Active, Replication: Active e Instance: Cluster.
Solução de problemas
Erros de autenticação NATS durante a formação inicial do cluster
Durante os primeiros 1 a 2 minutos após a formação do cluster, os logs do nats-senhasegura / nats-qr-senhasegura podem exibir mensagens como:
[WRN] Auth callout violation
[ERR] ... authentication error - Nkey "..."
Esse comportamento é transitório e se resolve automaticamente quando o cluster converge. Trate como um problema real apenas se os erros de auth/nkey continuarem por mais de 5 minutos após a conclusão do comando orbit cluster apply. Nesse caso, verifique os logs do serviço nats-senhasegura no nó afetado.
Mensagens periódicas de desconexão SSL no log do MySQL
O arquivo mysql-error.log pode exibir periodicamente (a cada 30 a 60 segundos):
WSREP: Failed to establish connection: unexpected eof while reading (SSL routines)
Essa mensagem pode aparecer mesmo em clusters saudáveis e não indica necessariamente uma falha de replicação. Antes de tratar como problema, confirme a saúde do cluster diretamente:
sudo mysql -e "SHOW STATUS LIKE 'wsrep_%';"
Verifique se:
wsrep_cluster_statusestá com o valorPrimary.wsrep_readyestá com o valorON.wsrep_local_state_commentestá com o valorSynced.