Zabbix 6 系列学习 10:原生高可用介绍及使用

时间:2022-12-29 17:16:20

安装篇的最后一篇了,Zabbix 在 6.0 版本最大的变化就是提出了原生高可用功能,在之前的版本可能会通过其他第三方的方式来进行高可用,操作难度较大,本文将会对高可以展开讲解。

Zabbix 6 系列学习 10:原生高可用介绍及使用

须知

首先要明确官方的高可用到底怎么回事?官方的高可用仅仅针对 Zabbix Server 部分,数据库部分和前端部分需要自行采用各自领域的高可用解决方案,所以如果想实现完全高可用架构,还是需要具备一定的知识储备。

启用 HA

默认情况下,HA 是关闭的

Zabbix 6 系列学习 10:原生高可用介绍及使用

本文环境

  • 主: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 配置

vim /etc/zabbix/zabbix_server.conf

HA 部分的配置在配置文件的最下面:High availability cluster parameters 部分

Zabbix 6 系列学习 10:原生高可用介绍及使用

该部分配置有两个选项

  • HANodeName:故名思义,节点的名称,如果该名称为空,为 standalone模式,即为单机模式,但如果节点地址配置了,该字段为空,前端显示为 IP 地址
  • NodeAddress:节点的 IP,格式为 <address>[:port]

Zabbix 6 系列学习 10:原生高可用介绍及使用

修改完成后,需要重启服务

systemctl restart zabbix-server

Zabbix 6 系列学习 10:原生高可用介绍及使用

将字段填写上

Zabbix 6 系列学习 10:原生高可用介绍及使用

重启服务后,就能看到 HA 管理器已经开启了

Zabbix 6 系列学习 10:原生高可用介绍及使用

查看前端,高可用集群已经启用了

Zabbix 6 系列学习 10:原生高可用介绍及使用

Zabbix 6 系列学习 10:原生高可用介绍及使用

最新数据

安装另外一台 Zabbix Server

同样关闭防火墙和Selinux,可以参考之前的文章,本文忽略。

安装 Zabbix 源

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm

安装 Zabbix Server

dnf -y install zabbix-server zabbix-agent

修改 Zabbix server 配置文件

vim /etc/zabbix/zabbix_server.conf

修改数据库的主机 IP

Zabbix 6 系列学习 10:原生高可用介绍及使用

修改数据库的密码

Zabbix 6 系列学习 10:原生高可用介绍及使用

修改 HA 部分的配置,填写自身的信息

Zabbix 6 系列学习 10:原生高可用介绍及使用

此时回出现无法连接数据库,因为数据库远程登录需要有权限。

mysql -uroot -pxiaoyu123
create user zabbix@'192.168.181.132' identified by 'xiaoyu123';
grant all privileges on zabbix.* to zabbix@'192.168.181.132';

重启 Zabbix server 服务

systemctl restart zabbix-server

就会出现下面情况,完成了加入节点,状态为 standby

Zabbix 6 系列学习 10:原生高可用介绍及使用

Zabbix 6 系列学习 10:原生高可用介绍及使用

Zabbix 6 系列学习 10:原生高可用介绍及使用

系统信息里

那么其实到这里了,HA 基本就可以实现了,那么是通过什么方式来确定的呢?通过抓包可以看到,实际上备机是通过查询 Zabbix 数据库的 ha_node表,来发现是否存在需要 HA 的关系,当然具体逻辑还得需要看源码才知道,这里不展开深究。

Zabbix 6 系列学习 10:原生高可用介绍及使用

Zabbix 6 系列学习 10:原生高可用介绍及使用

模拟故障

zabbix-server-node01 停止 server 服务

systemctl stop zabbix-server

Zabbix 6 系列学习 10:原生高可用介绍及使用

zabbix-server-node02

立即做了切换(5s内),不可用状态根据切换时间来定(默认一分钟)

Zabbix 6 系列学习 10:原生高可用介绍及使用

日志

Zabbix 6 系列学习 10:原生高可用介绍及使用

前端

此时出现了主 Server stoped 字样

Zabbix 6 系列学习 10:原生高可用介绍及使用

系统报告

那么高可用测试基本就没问题了。

注意

1.在启用了高可用双方的配置是不会自动同步的,所以需要主备集群需要保持参数一致,而主的配置参数高于备机,切换虽然能成功,但是容易出现切换完成后备机出现不可用情况

2.关于被监控的主机。

  • snmp 不会受主备影响
  • agent 部分需要重新配置
Server=zabbix-node-01,zabbix-node-02
ServerActive=zabbix-node-01;zabbix-node-02

需要注意的是在 ServerActive的连接符是‘;’而不是‘,’,在配置文件里也有详解

Zabbix 6 系列学习 10:原生高可用介绍及使用

Server

Zabbix 6 系列学习 10:原生高可用介绍及使用

ServerActive

如果不调整,当主机 down 掉了,会出现下面情况

Zabbix 6 系列学习 10:原生高可用介绍及使用

Proxy 部分也需要注意

分两种情况

  • 主动模式
Server=zabbix-node-01;zabbix-node-02
  • 被动模式
Server=zabbix-node-01,zabbix-node-02

不调整会出现无法接收数据

3.主动中断服务是5s内立即切换,但如果非人为状态,例如断电/断网/宕机,都根据 failover_delay 时间(默认一分钟)切换,所以这一分钟会出现断图,丢数据等情况

4.当加入节点后,想退出 HA 模式,此时无法主动删除,需要用命令行移除备机,再取消掉主相关配置才可以。

附录

HA 集群状态

  • active
  • standby
  •  unavailable
  •  stopped

切换细节

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

命令行管理

修改切换时间(10s-15min)

zabbix_server -R ha_set_failover_delay=5m

Zabbix 6 系列学习 10:原生高可用介绍及使用

查看 HA 状态

zabbix_server -R ha_status

Zabbix 6 系列学习 10:原生高可用介绍及使用

针对 HA 新增相关模板,在 Zabbix server health 模板里

Zabbix 6 系列学习 10:原生高可用介绍及使用

写在最后

当前原生高可用功能,仅完成比较初期的功能,如果现网监控环境较复杂,需要更改的功能,当前只支持1主多备,其次性能参数无法实现自动同步,需要手工同步;再就是无法提供虚拟 IP ,所以需要在 agent/proxy 修改相关参数才可使用,但至少看到了0从1的跨越,至于1.1,1.2...怎么完善就看 Zabbix 官方如何优化该功能了,后续就进入到 Zabbix 操作部分了,敬请期待。