安装篇的最后一篇了,Zabbix 在 6.0 版本最大的变化就是提出了原生高可用功能,在之前的版本可能会通过其他第三方的方式来进行高可用,操作难度较大,本文将会对高可以展开讲解。
须知
首先要明确官方的高可用到底怎么回事?官方的高可用仅仅针对 Zabbix Server 部分,数据库部分和前端部分需要自行采用各自领域的高可用解决方案,所以如果想实现完全高可用架构,还是需要具备一定的知识储备。
启用 HA
默认情况下,HA 是关闭的
本文环境
- 主:zabbix-server-node01:192.168.181.183
- 备:zabbix-server-node02:192.168.181.182
- 数据库:mysql:192.168.181.183
- 前端:apache+php:192.168.181.183
- 系统:almalinux 8.7
Zabbix Server 配置
HA 部分的配置在配置文件的最下面:High availability cluster parameters 部分
该部分配置有两个选项
- HANodeName:故名思义,节点的名称,如果该名称为空,为 standalone模式,即为单机模式,但如果节点地址配置了,该字段为空,前端显示为 IP 地址
- NodeAddress:节点的 IP,格式为 <address>[:port]
将字段填写上
重启服务后,就能看到 HA 管理器已经开启了
查看前端,高可用集群已经启用了
安装另外一台 Zabbix Server
同样关闭防火墙和Selinux,可以参考之前的文章,本文忽略。
安装 Zabbix 源
安装 Zabbix Server
修改 Zabbix server 配置文件
修改数据库的主机 IP
修改数据库的密码
修改 HA 部分的配置,填写自身的信息
此时回出现无法连接数据库,因为数据库远程登录需要有权限。
重启 Zabbix server 服务
就会出现下面情况,完成了加入节点,状态为 standby
那么其实到这里了,HA 基本就可以实现了,那么是通过什么方式来确定的呢?通过抓包可以看到,实际上备机是通过查询 Zabbix 数据库的 ha_node表,来发现是否存在需要 HA 的关系,当然具体逻辑还得需要看源码才知道,这里不展开深究。
模拟故障
zabbix-server-node01 停止 server 服务
zabbix-server-node02
立即做了切换(5s内),不可用状态根据切换时间来定(默认一分钟)
此时出现了主 Server stoped 字样
那么高可用测试基本就没问题了。
注意
1.在启用了高可用双方的配置是不会自动同步的,所以需要主备集群需要保持参数一致,而主的配置参数高于备机,切换虽然能成功,但是容易出现切换完成后备机出现不可用情况
2.关于被监控的主机。
- snmp 不会受主备影响
- agent 部分需要重新配置
需要注意的是在 ServerActive的连接符是‘;’而不是‘,’,在配置文件里也有详解
如果不调整,当主机 down 掉了,会出现下面情况
Proxy 部分也需要注意
分两种情况
- 主动模式
- 被动模式
不调整会出现无法接收数据
3.主动中断服务是5s内立即切换,但如果非人为状态,例如断电/断网/宕机,都根据 failover_delay 时间(默认一分钟)切换,所以这一分钟会出现断图,丢数据等情况
4.当加入节点后,想退出 HA 模式,此时无法主动删除,需要用命令行移除备机,再取消掉主相关配置才可以。
附录
HA 集群状态
- active
- standby
- unavailable
- stopped
切换细节
主节点和备节点每5秒更新一次上次访问时间。每个备节点监控主节点的最后一次访问时间。如果主节点的最后一次访问时间超过了“故障转移延迟”秒,备用节点将自己切换为主节点,并将“unavailable”状态分配给先前的主节点。
命令行管理
修改切换时间(10s-15min)
查看 HA 状态
针对 HA 新增相关模板,在 Zabbix server health 模板里
写在最后
当前原生高可用功能,仅完成比较初期的功能,如果现网监控环境较复杂,需要更改的功能,当前只支持1主多备,其次性能参数无法实现自动同步,需要手工同步;再就是无法提供虚拟 IP ,所以需要在 agent/proxy 修改相关参数才可使用,但至少看到了0从1的跨越,至于1.1,1.2...怎么完善就看 Zabbix 官方如何优化该功能了,后续就进入到 Zabbix 操作部分了,敬请期待。