Zabbix6.0 TLS 原生高可用集群(二)

2022-03-14 14:51:47 浏览数 (1)

Zabbix HA 概述

Zabbix 高可用为运行Zabbix Server 的服务器提供了针对软件/硬件故障的保护,并允许在软件/硬件维护期间最大限度地减少停机时间。

Zabbix High availability cluster 由多个 zabbix_server 实例或节点组成。

其中每个节点:

  • 单独配置(配置文件、脚本、加密、数据导出...)
  • 使用相同的数据库

ZABBIX HA 节点状态

  • active(活动)
  • standby(备用)
  • unavailable(不可用)
  • stopped(停止)

在同一个Zabbix 高可用集群中只能有一个节点处于活动状态。备用节点不进行数据收集、处理或其他常规服务器活动;备节点不监听端口;保持最少的数据库连接。

Zabbix HA切换方式

活动节点和备用节点每 5 秒更新一次它们的最后一次访问时间。每个备用节点监控活动节点的最后访问时间。如果活动节点的最后访问时间超过“故障转移延迟“时间,则备用节点将自己切换为活动节点并将“不可用”状态分配给先前的活动节点。

活动节点监控自己的数据库连接—如果丢失超过故障转移延迟5秒,它必须停止所有处理并切换到备用模式。活动节点还监视备用节点的状态—如果备用节点的最后访问时间超过“故障转移延迟“,则为备用节点分配“不可用”状态。

部署环境

主机

IP

描述

Zabbix-M

192.168.99.185

活动

Zabbix-S

192.168.99.186

备用

Zabbix-DB

192.168.99.185

数据库

启用 Zabbix HA 集群

服务器配置高可用性群集参数,主节点配置如下,备节点修改对应的主机名和IP即可。

sudo vim /etc/zabbix/zabbix_server.conf

代码语言:javascript复制
DBHost=192.168.99.185
DBName=zabbix
DBUser=zabbix
DBPassword=password
# HANodeName设置为当前节点主机名或者IP地址,需保证同一集群中唯一
HANodeName=Zabbix-M
# NodeAddress设置为节点IP:10051
NodeAddress=192.168.99.185:10051

备机节点状态

查看 HA 状态

将 HA 故障转移延迟设置为 10 s

代码语言:javascript复制
zabbix_server -R ha_set_failover_delay=10s

Zabbix HA Runtime control 参数

代码语言:javascript复制
#在日志中打印Zabbix HA节点状态
ha_status 
#删除指定的高可用HA节点
ha_remove_node=target 
#设置HA 故障转移延迟
ha_set_failover_delay=delay

数据库ha_node表

代码语言:javascript复制
sudo mysql uzabbix -p -h 192.168.99.185

Zabbix Agent 配置

Zabbix6.0 LTS 高可用Zabbix Agent配置文件中需要指定主机和备机的Zabbix Server 地址用于主备切换后的数据采集;

代码语言:javascript复制
ubuntu@node01:~$ egrep -v "*#|^$" /etc/zabbix/zabbix_agentd.conf 
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.99.185,192.168.99.186
ServerActive=192.168.99.185;192.168.99.186
Hostname=Zabbix server M
HostMetadata=Linux
Include=/etc/zabbix/zabbix_agentd.d/*.conf

Zabbix HA 切换测试

  1. 停止服务
代码语言:javascript复制
ubuntu@node01:~$ sudo systemctl  stop zabbix-server

备节点切换为主节点(目测3s左右)

前主节为stopped 状态

启动前主节点的zabbix_server 服务后,节点为standby状态

代码语言:javascript复制
ubuntu@node01:~$ sudo systemctl  start zabbix-server

2.关闭主机

代码语言:javascript复制
ubuntu@node02:~$ sudo systemctl  poweroff

节点发生切换(目测3s左右)

Zabbix HA 高可用的实现方式基于数据库实现,前端PHP,NGINX 等组件异常无法实现高可用切换。

当主备节点发生切换后,Zabbix Web 访问需要访问不同节点的IP,目前没有使用虚拟IP方式实现高可用。

0 人点赞