1 Alta disponibilidade
Visão geral
Alta disponibilidade (HA) é normalmente exigida em infraestruturas críticas que não podem se dar ao luxo de praticamente nenhum tempo de inatividade. Portanto, para qualquer serviço que possa falhar, deve haver uma opção de failover em vigor para assumir caso o serviço atual falhe.
O Zabbix oferece uma solução de alta disponibilidade nativa que é fácil de configurar e não requer experiência prévia em HA. A HA nativa do Zabbix pode ser útil como uma camada extra de proteção contra falhas de software/hardware do server Zabbix ou para reduzir o tempo de inatividade devido à manutenção.
No modo de alta disponibilidade do Zabbix, vários servers Zabbix são executados como nós em um cluster. Enquanto um server Zabbix no cluster está ativo, os outros ficam em standby, prontos para assumir se necessário.

A migração para a HA do Zabbix não é definitiva. Você pode voltar à operação independente a qualquer momento.
Veja também: Detalhes de implementação
Ativando alta disponibilidade
Iniciando o Zabbix server como nó de cluster
Dois parâmetros são necessários na configuração do server para iniciar um Zabbix server como nó de cluster:
- o parâmetro
HANodeNamedeve ser especificado para cada Zabbix server que será um nó de cluster HA.
Este é um identificador exclusivo do nó (por exemplo, zabbix-node-01) pelo qual o server será referenciado nas configurações de agent e proxy.
Se você não especificar HANodeName, o server será iniciado em modo standalone.
- o parâmetro
NodeAddressdeve ser especificado para cada nó.
O parâmetro NodeAddress (address:port) será usado pelo frontend do Zabbix para se conectar ao nó ativo do server.
NodeAddress deve corresponder ao IP ou ao nome FQDN do respectivo Zabbix server.
Reinicie todos os Zabbix servers após fazer alterações nos arquivos de configuração. Eles agora serão iniciados como nós de cluster. O novo status dos servers pode ser visto em Relatórios > Informações do sistema e também executando:
zabbix_server -R ha_status
Este comando em tempo de execução registrará o status atual do cluster HA no log do Zabbix server (e no stdout):

Preparando o frontend
Certifique-se de que o address:port do Zabbix server não esteja definido na configuração do frontend (encontrada em conf/zabbix.conf.php no diretório de arquivos do frontend).

O frontend do Zabbix detectará automaticamente o nó ativo lendo as configurações da tabela de nós no banco de dados do Zabbix. O endereço do nó ativo será usado como o endereço do Zabbix server.
Configuração do proxy
Os nós do cluster HA (servers) devem ser listados na configuração de um proxy Zabbix passivo ou ativo.
Para um proxy passivo, os nomes dos nós devem ser listados no parâmetro Server do proxy, separados por uma vírgula.
Server=zabbix-node-01,zabbix-node-02
Para um proxy ativo, os nomes dos nós devem ser listados no parâmetro Server do proxy, separados por um ponto e vírgula.
Server=zabbix-node-01;zabbix-node-02
Configuração do agent
Os nós do cluster HA (servers) devem ser listados na configuração do Zabbix agent ou do Zabbix agent 2.

Para habilitar verificações passivas, os nomes dos nós devem ser listados no parâmetro Server parameter, separados por uma vírgula.
Server=zabbix-node-01,zabbix-node-02
Para habilitar verificações ativas, os nomes dos nós devem ser listados no parâmetro ServerActive parameter. Observe que, para verificações ativas, os nós devem ser separados por uma vírgula de quaisquer outros servers, enquanto os próprios nós devem ser separados por um ponto e vírgula, por exemplo:
ServerActive=zabbix-node-01;zabbix-node-02
Failover para nó em standby
O Zabbix fará failover para outro nó automaticamente se o nó ativo parar. É necessário haver pelo menos um nó com status standby para que o failover aconteça.
Quão rápido será o failover? Todos os nós atualizam seu último horário de acesso (e o status, se ele for alterado) a cada 5 segundos. Portanto:
- Se o nó ativo for desligado e conseguir informar seu status como "stopped", outro nó assumirá em até 5 segundos.
- Se o nó ativo for desligado/tornar-se indisponível sem conseguir atualizar seu status, os nós em standby aguardarão o failover delay + 5 segundos para assumir.
O failover delay é configurável, com intervalo suportado entre 10 segundos e 15 minutos (um minuto por padrão). Para alterar o failover delay, você pode executar:
zabbix_server -R ha_set_failover_delay=5m
Gerenciando o cluster HA
O status atual do cluster HA pode ser gerenciado usando as opções dedicadas de controle em tempo de execução:
ha_status- registra o status do cluster HA no log do Zabbix server (e no stdout);ha_remove_node=target- remove um nó HA identificado pelo seu<target>- nome ou ID do nó (o nome/ID pode ser obtido a partir da saída da execução deha_status), por exemplo:
zabbix_server -R ha_remove_node=zabbix-node-02
Observe que nós ativos/em espera não podem ser removidos.
ha_set_failover_delay=delay- define o atraso de failover do HA (entre 10 segundos e 15 minutos; sufixos de tempo são suportados, por exemplo 10s, 1m).
O status do nó pode ser monitorado:
- Em Reports > System information.
- No widget System information do dashboard.
- Usando a opção de controle em tempo de execução
ha_statusdo server (veja acima).
O item interno zabbix[cluster,discovery,nodes] pode ser usado para descoberta de nós, pois retorna um JSON com as informações do nó de alta disponibilidade.
Desativando o cluster HA
Para desativar um cluster de alta disponibilidade:
- Faça cópias de backup dos arquivos de configuração2.
- Pare os nós em standby.
- Remova o parâmetro HANodeName do server primário ativo.
- Reinicie o server primário (ele será iniciado no modo autônomo).
Atualizando o cluster HA
Para realizar uma atualização de versão principal dos nós HA:
- Pare todos os nós.
- Crie um backup completo do banco de dados.
- Se o banco de dados usar replicação, certifique-se de que todos os nós estejam sincronizados e sem problemas. Não faça a atualização se a replicação estiver quebrada.
- Selecione um único nó que realizará a atualização do banco de dados, altere sua configuração para o modo standalone comentando
HANodeNamee faça a atualização dele. - Certifique-se de que a atualização do banco de dados foi concluída totalmente (System information deve exibir que o Zabbix server está em execução).
- Reinicie o nó no modo HA.
- Atualize e inicie o restante dos nós (não é necessário alterá-los para o modo standalone, pois o banco de dados já estará atualizado neste ponto).
Em uma atualização de versão menor, é suficiente atualizar o primeiro nó, certificar-se de que ele foi atualizado e está em execução, e então iniciar a atualização no próximo nó.
Detalhes de implementação
O cluster de alta disponibilidade (HA) é uma solução opcional e é suportado para o Zabbix server. A solução nativa de HA foi projetada para ser simples de usar, funciona entre sites e não tem requisitos específicos para os bancos de dados reconhecidos pelo Zabbix. Os usuários podem usar a solução nativa de HA do Zabbix ou uma solução de HA de terceiros, dependendo do que melhor atenda aos requisitos de alta disponibilidade em seu ambiente.
A solução consiste em várias instâncias ou nós do zabbix_server.
Cada nó:
- É configurado separadamente.
- Usa o mesmo banco de dados.
- Pode ter vários modos: ativo, standby, indisponível, parado.
Apenas um nó pode estar ativo (em execução) por vez. Um nó em standby executa apenas um processo - o gerenciador de HA. Um nó em standby não faz coleta de dados, processamento ou outras atividades regulares do server; ele não escuta em portas; ele tem o mínimo de conexões com o banco de dados.
Tanto os nós ativos quanto os em standby atualizam seu último horário de acesso a cada 5 segundos.
Cada nó em standby monitora o último horário de acesso do nó ativo.
Se o último horário de acesso do nó ativo ultrapassar os segundos de "failover delay", o nó em standby se torna o nó ativo e atribui o status unavailable ao nó que estava ativo anteriormente.
O nó ativo monitora sua própria conectividade com o banco de dados - se ela for perdida por mais de failover delay-5 segundos, ele deve interromper todo o processamento e mudar para o modo standby.
O nó ativo também monitora o status dos nós em standby - se o último horário de acesso de um nó em standby ultrapassar os segundos de "failover delay", o nó em standby recebe o status unavailable.
Os nós foram projetados para serem compatíveis entre versões menores do Zabbix.