zabbix-server 高可用搭建
一、架构图如下

二、环境规划
| ip地址 | 主机名 | 服务 | 系统 |
|---|---|---|---|
| 192.168.25.249 | mysql | mysql8.0 | Rocky 10 |
| 192.168.25.248 | zabbix-server-slave | zabbix-server+keepalive+zabbix-agent2 | Rocky 10 |
| 192.168.25.234 | zabbix-server-master | zabbix-server+keepalive+zabbix-agent2 | Rocky 10 |
| 192.168.25.247 | zabbix-agent | zabbix-agent2 | Rocky 10 |
三、zabbix-server搭建
1. mysql数据安装
dnf -y install http://repo.mysql.com/mysql80-community-release-el9.rpm
dnf -y install mysql-community-server --nogpgcheck
systemctl enable mysqld --now
修改数据库root密码:
pw=$(grep 'temporary password' /var/log/mysqld.log|awk -F'root@localhost:' '{print $2}'| tr -d " ")
mysql -uroot -p"$pw" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql#2025';" --connect-expired-password
- root密码:Mysql#2025
创建zabbix用户和数据库,并将zabbix数据库授权给zabbix用户:
mysql -uroot -p'Mysql#2025' -e "create database zabbix character set utf8mb4 collate utf8mb4_bin;"
mysql -uroot -p'Mysql#2025' -e "create user zabbix@'%' identified by 'Zabbix#2025'"
mysql -uroot -p'Mysql#2025' -e "grant all privileges on zabbix.* to zabbix@'%';"
mysql -uroot -p'Mysql#2025' -e "set global log_bin_trust_function_creators = 1;"
导入mysql初始化数据库:
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm
dnf clean all
dnf -y install zabbix-sql-scripts
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p'Zabbix#2025' zabbix
mysql -uroot -p'Mysql#2025' -e "set global log_bin_trust_function_creators = 0;"
mysql -uroot -p'Mysql#2025' -e "FLUSH PRIVILEGES;"
2. 安装zabbix-server
安装zabbix-server两台zabbix-server都要安装
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm
dnf clean all
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2
dnf -y install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql
修改/etc/zabbix/zabbix_server.conf配置文件设置数据库信息:
DBName=zabbix
DBUser=zabbix
DBPort=3306
DBHost=192.168.25.249
DBPassword=Zabbix#2025
启动zabbix-server
systemctl start zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm
访问web ui配置数据库信息,两台都要:

3. 主备配置
修改/etc/zabbix/zabbix_server.conf文件:
zabbix-server-master:
HANodeName=zabbix-server-master
NodeAddress=192.168.25.234:10051
zabbix-server-slave:
HANodeName=zabbix-server-slave
NodeAddress=192.168.25.248:10051
- HANodeName :主机名
- NodeAddress :zabbix server端口地址
重启zabbix-sever
systemctl restart zabbix-server
查看日志:
grep "HA manager started" /var/log/zabbix/zabbix_server.log
备节点:
HA manager started in standby mode
主节点:
HA manager started in active mode
当某个节点处理主节点时,备节点就会被停止。
四、keepalived实现高可用
1. 安装keepalived
两台都要安装
dnf -y install keepalived
2. 修改keepalived配置
192.168.25.234:
/etc/keepalived/keepalived.conf:
global_defs {
router_id zabbix-server01 # 唯一标识符
vrrp_skip_check_adv_addr 1
}
vrrp_script check_zabbix {
script "/etc/keepalived/scripts/check_zabbix.sh"
interval 3
timeout 1
}
vrrp_instance VI_1 {
state BACKUP # 两台主机都设置为BACKUP,通过优先级决定谁是MASTER
nopreempt # 抢占模式
interface ens160 # 指定VIP地址所在的接口
virtual_router_id 51 # 虚拟路由组ID,主备需要一致,确保处于同一组
priority 100 # 优先级
advert_int 1 # 发送vrrp心跳报文的间隔/s
authentication { # 认证,主备需要一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # VIP可以多个,地址不能重复,需要和当前DIP处于同一网段。
192.168.25.100
}
track_script {
check_zabbix
}
}
192.168.25.248:
/etc/keepalived/keepalived.conf:
global_defs {
router_id zabbix-server02 # 唯一标识符
vrrp_skip_check_adv_addr 1
}
vrrp_script check_zabbix {
script "/etc/keepalived/scripts/check_zabbix.sh"
interval 3
timeout 1
}
vrrp_instance VI_1 {
state BACKUP # 两台主机都设置为BACKUP,通过优先级决定谁是MASTER
interface ens160 # 指定VIP地址所在的接口
nopreempt # 非抢占模式
virtual_router_id 51 # 虚拟路由组ID,主备需要一致,确保处于同一组
priority 99 # 优先级
advert_int 1 # 发送vrrp心跳报文的间隔/s
authentication { # 认证,主备需要一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { # VIP可以多个,地址不能重复,需要和当前DIP处于同一网段。
192.168.25.100
}
track_script {
check_zabbix
}
}
/etc/keepalived/scripts/check_zabbix.sh:
#!/bin/bash
# Zabbix Server 存活检测脚本
ZABBIX_SERVER_PORT=10051
#检查端口是否监听
if ! ss -tuln | grep -q ":$ZABBIX_SERVER_PORT"; then
killall keepalived
exit 1
else
exit 0
fi
chmod +x check_zabbix.sh
启动keepalived:
systemctl enable keepalived --now
systemctl restart zabbix-server
3. 添加agent主机
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/10/x86_64/zabbix-release-latest-7.0.el10.noarch.rpm
dnf clean all
dnf -y install zabbix-agent2
配置:
/etc/zabbix/zabbix_agent2.conf:
Server=0.0.0.0/0
ServerActive=192.168.25.247
Hostname=zabbix-agent
systemctl enable zabbix-agent2 --now

4. 高可用测试
关闭zabbix 主节点:
systemctl stop zabbix-server
VIP随之会迁移到备节点
488

被折叠的 条评论
为什么被折叠?



