来了,Zabbix 6.0原生HA高可用抢先体验!

2022-02-09 09:11:35 浏览数 (1)

马嘉炜 | Zabbix开源社区签约专家

  • SRE运维工程师,六年Zabbix监控系统使用经验。在Zabbix架构设计及性能优化领域有丰富的经验,擅长监控模板制作及Zabbix API的二次开发。
  • 官方使用手册《Zabbix标准模板指南》译者

简介

日前,Zabbix发布了6.0.0Beta1版本,笔者也是第一时间下载部署。Zabbix 6.0最受期待的一项新功能便是原生支持了HA集群高可用。

Zabbix HA概述

Zabbix HA解决方案由多个zabbix_server实例或节点组成。每个节点独立配置,但数据库是使用同一个实例。

Zabbix HA节点包括以下几种状态:

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

在同一个Zabbix HA集群中,只有一个实例或节点处于active(活动)状态,standby(备用)节点不进行数据收集、处理或其他任务,并且不监听端口,并保持一个最少的数据库连接。

详细的官方文档说明大家可以参考:https://www.zabbix.com/documentation/devel/en/manual/concepts/server/ha

环境部署

一、环境说明

主机名

IP地址

操作系统

说明

sh-test-zbxsvr01

172.17.0.10

CentOS 8.2

Zabbix Server节点

sh-test-zbxsvr02

172.17.0.8

CentOS 8.2

Zabbix Server节点

sh-test-zbxsvr03

172.17.0.14

CentOS 8.2

Zabbix Server节点

sh-test-tdb01

172.17.0.17

云数据库TencentDB

MySQL数据库

实际测试过程中,Zabbix HA最少需要2个Zabbix Server节点即可实现HA集群高可用及故障转移。

二、安装Zabbix Server

注:当前为6.0.0Beta1版本,正式版安装方式可能有所不同

  1. 配置Zabbix的yum源

需要在三台Zabbix Server节点上执行

代码语言:javascript复制
$ rpm -Uvh https://repo.zabbix.com/zabbix/5.5/rhel/8/x86_64/zabbix-release-5.5-1.el8.noarch.rpm
$ dnf clean all
  1. 安装Zabbix Server、Zabbix Web和Zabbix Agent2

需要在三台Zabbix Server节点上执行

代码语言:javascript复制
$ dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
  1. 创建Zabbix数据库及用户

Zabbix 6.0首次支持了MySQL带有 utf8mb4_bin 排序规则的 utf8mb4 字符集 这里对授权登录的IP进行了限制,搭建可以根据自己的实际情况来创建用户

代码语言:javascript复制
$ mysql -h 172.17.0.17 -u root -p
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@'172.17.0.%' identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@'172.17.0.%';
mysql> quit;
  1. 初始化Zabbix数据库

注:在某一台Zabbix Server中执行即可,不需要重复执行

代码语言:javascript复制
$ zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h 172.17.0.17 -uzabbix -p zabbix
  1. 修改Zabbix Server配置

需要注意:三个Zabbix Server节点的数据库配置是一致的,HA配置不一样

代码语言:javascript复制
$ cat /etc/zabbix/zabbix_server.conf
## 以下数据库配置参数需要修改,其余参数根据实际情况修改
DBHost=172.17.0.17
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
## 以下两个参数是HA配置的参数
# HANodeName设置为当前节点主机名或者IP地址,需保证同一集群中唯一
HANodeName=sh-test-zbxsvr01
# NodeAddress设置为节点IP:10051
NodeAddress=172.17.0.10:10051
  1. 修改Nginx配置
代码语言:javascript复制
$ cat /etc/nginx/conf.d/zabbix.conf
## 取消listen和server_name的注释,并设置为相应的监听端口和域名
listen          80;
server_name     zabbix.madown.com;
  1. 启动服务
代码语言:javascript复制
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
  1. Web初始化配置

访问http://zabbix.madown.com/,可以看到熟悉的设置界面

按照提示进行设置即可,需要注意在数据库配置页面修改数据库连接配置

Zabbix server name不用设置。 默认时区需要修改为(UTC 08:00) Asia/Shanghai。 Zabbix 6.0的时区配置也从PHP配置文件转移到了Web界面配置

初始化的的配置需要在所有Zabbix Server节点上完成,或者将已完成节点的配置文件/etc/zabbix/web/zabbix.conf.php拷贝至其他节点

以上步骤完成后会看到熟悉的登录界面,默认用户名:Admin 密码:zabbix

HA配置验证

一、查看HA状态

查看HA状态有两种方式,一种是通过Web页面查看,另外一种是通过Runtime运行时的命令行查看

  • 通过Web页面查看

在Reports -> System infomation页面可以查看HA状态

  • 通过Runtime运行时的命令行查看

在Zabbix Server节点上执行命令zabbix_server -R ha_status,并在日志文件/var/log/zabbix/zabbix_server.log中查看HA状态

从图中可以看到HA高可用集群已经启用,目前sh-test-zbxsvr01状态为active(活动)节点,其余的节点为standby(备用)节点

二、配置Agent
  1. 修改agent配置 Zabbix HA的方案需要在agent配置文件中将所有的Server节点地址配置到Server和ServerActive中
代码语言:javascript复制
$ cat /etc/zabbix/zabbix_agent2.conf
Server=172.17.0.10,172.17.0.8,172.17.0.14
ServerActive=172.17.0.10,172.17.0.8,172.17.0.14
## 注释掉以下配置,Zabbix默认使用主机名作为Hostname,若未设置主机名,则需要配置此参数
# Hostname=Zabbix Server
  1. 重启agent
代码语言:javascript复制
$ systemctl restart zabbix-agent2
  1. 在Web界面中添加主机,添加完成后如下图所示
  1. 检查数据采集是否正常
三、模拟Zabbix Server节点故障

这里通过关闭处于active(活动)状态的Zabbix Server节点的zabbix-server服务,模拟Zabbix Server节点故障后,监控系统是否任然处于可用状态

  1. 停止active(活动)节点的zabbix-server服务
代码语言:javascript复制
$ systemctl stop zabbix-server
  1. 查看HA状态

可以看到节点sh-test-zbxsvr01现在处于stopped(停止)的状态,并且节点sh-test-zbxsvr03 状态变为了active(活动) 同时,界面上也出现了集群节点状态变化的告警

  1. 检查数据采集是否正常

可以看到,监控数据是可以正常采集的,说明Zabbix HA集群已经自动完成了故障切换

总结

Zabbix 6.0的HA集群高可用功能确实让笔者眼前一亮,相比于之前使用第三方Keepalived的高可用方案,在Server的配置上要简单很多,只需要两个参数即可完成HA集群的搭建。

唯一美中不足的就是需要修改agent的配置,对于旧版本的agent的兼容性官方也还未给出说明,毕竟目前还只是测试版,希望在不久的将来Zabbix 6.0发布正式版之后官方会给出详细的说明。

另外,在HA集群管理上,需要依赖于Runtime运行时命令,例如移除节点、设置HA故障转移延迟等操作。当然,这并不影响HA的基本功能,期待未来官方在HA集群高可用管理上的创新。

最后,大家可以访问http://zabbix.madown.com/ 来体验Zabbix 6.0(用户名:Admin 密码:masix.cn 请大家不要修改密码)

0 人点赞