OpenEuler高可用部署zabbix7
OpenEuler高可用部署Zabbix7.2
Keepalived + Zabbix 主备架构:
前提条件
- 两台服务器:主机 (192.168.1.10) 和 备机 (192.168.1.11)
- 共享虚拟IP (VIP):192.168.1.100
- 确保两台服务器时间同步 (使用NTP)
- 相同的操作系统环境
###各组件部署方案参考:超详细 | 如何在OpenEuler系统下安装Zabbix 7.2?
部署步骤
步骤1:数据库主从复制 (MariaDB/MySQL)
在主机上 (192.168.1.10):
Bash# 编辑MariaDB配置文件
sudo vi /etc/my.cnf.d/server.cnf
# 添加以下内容:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
binlog-do-db=zabbix
在备机上 (192.168.1.11):
Bash# 编辑MariaDB配置文件
sudo vi /etc/my.cnf.d/server.cnf
# 添加以下内容:
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1
replicate-do-db=zabbix
在主机上创建复制用户:
SQLCREATE USER 'replica'@'192.168.1.11' IDENTIFIED BY 'StrongPassword123!';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.1.11';
FLUSH PRIVILEGES;
在备机上配置主从复制:
SQLCHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='replica',
MASTER_PASSWORD='StrongPassword123!',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=XXX; -- 从主机执行 SHOW MASTER STATUS; 获取具体值
START SLAVE;
步骤2:在两台服务器上安装Zabbix
Zabbix服务端安装(二选一方案)
方案A:源码编译安装(推荐)
Bash# 安装依赖
dnf install gcc make libevent-devel openssl-devel pcre-devel mysql-devel -y
# 下载源码
wget https://cdn.zabbix.com/zabbix/sources/stable/7.2/zabbix-7.2.0.tar.gz
tar -zxvf zabbix-7.2.0.tar.gz
cd zabbix-7.2.0
# 编译安装
./configure \
--prefix=/app/zabbix \
--enable-server \
--enable-agent \
--with-mysql
make -j$(nproc)
make install
# 创建系统用户
groupadd --system zabbix
useradd --system -g zabbix -d /app/zabbix -s /sbin/nologin zabbix
方案B:RPM仓库安装
Bash# 添加Zabbix官方仓库
rpm -Uvh https://repo.zabbix.com/zabbix/7.2/release/centos/9/noarch/zabbix-release-latest-7.2.el9.noarch.rpm
# 安装核心组件
dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y
步骤3:配置Zabbix
在主机上配置Zabbix数据库连接:
Bashsudo vi /etc/zabbix/zabbix_server.conf
# 修改以下参数:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=YourZabbixDBPassword
在备机上配置Zabbix数据库连接:
Bashsudo vi /etc/zabbix/zabbix_server.conf
# 修改以下参数:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=YourZabbixDBPassword
# 添加以下参数禁用数据收集(备机只做热备)
StartPollers=0
StartPollersUnreachable=0
StartPingers=0
Web前端配置(两台服务器相同):
Bashsudo vi /etc/zabbix/web/zabbix.conf.php
<?php
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'YourZabbixDBPassword';
$ZBX_SERVER = '192.168.1.100'; // 使用虚拟IP
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix HA Cluster';
步骤4:安装和配置Keepalived
在两台服务器上安装Keepalived:
Bashsudo dnf install keepalived -y
在主机上 (192.168.1.10) 配置Keepalived:
Bashsudo vi /etc/keepalived/keepalived.conf
vrrp_script chk_zabbix {
script "/usr/bin/pgrep zabbix_server"
interval 2
weight 50
}
vrrp_script chk_httpd {
script "/usr/bin/pgrep httpd"
interval 2
weight 50
}
vrrp_instance VI_1 {
state MASTER
interface ens33 # 使用实际网卡名
virtual_router_id 51
priority 200 # 主机优先级更高
authentication {
auth_type PASS
auth_pass kylin123
}
virtual_ipaddress {
192.168.1.100/24 dev ens33 # VIP配置
}
track_script {
chk_zabbix
chk_httpd
}
notify_master "/etc/keepalived/master.sh"
notify_backup "/etc/keepalived/backup.sh"
notify_fault "/etc/keepalived/fault.sh"
}
在备机上 (192.168.1.11) 配置Keepalived:
Bashsudo vi /etc/keepalived/keepalived.conf
vrrp_script chk_zabbix {
script "/usr/bin/pgrep zabbix_server"
interval 2
weight 50
}
vrrp_script chk_httpd {
script "/usr/bin/pgrep httpd"
interval 2
weight 50
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100 # 备机优先级较低
authentication {
auth_type PASS
auth_pass kylin123
}
virtual_ipaddress {
192.168.1.100/24 dev ens33
}
track_script {
chk_zabbix
chk_httpd
}
notify_master "/etc/keepalived/master.sh"
notify_backup "/etc/keepalived/backup.sh"
notify_fault "/etc/keepalived/fault.sh"
}
创建状态切换脚本(两台服务器相同):
Bashsudo mkdir /etc/keepalived/scripts
sudo vi /etc/keepalived/master.sh
#!/bin/bash
# 当此服务器成为MASTER时执行
systemctl start zabbix-server
systemctl start httpd
systemctl start mariadb
exit 0
sudo vi /etc/keepalived/backup.sh
#!/bin/bash
# 当此服务器成为BACKUP时执行
systemctl stop zabbix-server
systemctl stop httpd
systemctl stop mariadb
exit 0
sudo vi /etc/keepalived/fault.sh
#!/bin/bash
# 当发生故障时执行
logger "Keepalived进入FAULT状态"
exit 0
# 设置脚本权限
sudo chmod +x /etc/keepalived/*.sh
步骤5:启动服务
在两台服务器上:
Bash# 启动Keepalived
sudo systemctl enable keepalived
sudo systemctl start keepalived
# 启动Zabbix服务(注意:备机上会自动停止)
sudo systemctl enable zabbix-server zabbix-agent httpd
sudo systemctl start zabbix-server zabbix-agent httpd
步骤6:验证高可用性
- 检查VIP状态:
Bash ip addr show ens33
# 在主机上应该看到192.168.1.100
- 模拟故障转移:
Bash # 在主机上停止Keepalived
sudo systemctl stop keepalived
# 在备机上检查VIP是否转移
ip addr show ens33
# 检查备机上Zabbix服务是否启动
systemctl status zabbix-server
- 访问Web界面:
http://192.168.1.100/zabbix
- 验证数据库复制状态:
SQL # 在备机上执行
SHOW SLAVE STATUS\G
# 确保Slave_IO_Running和Slave_SQL_Running都是Yes
故障排除
- VIP不漂移:
- 检查防火墙是否允许VRRP协议:
Bash sudo firewall-cmd --add-protocol=vrrp --permanent
sudo firewall-cmd --reload
- 验证两台服务器是否在同一个二层网络
- 检查keepalived.conf中的virtual_router_id是否一致且唯一
- 数据库复制中断:
- 检查主从状态:SHOW SLAVE STATUS\G
- 修复复制错误:
SQL STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
- Zabbix服务不自动启动/停止:
- 检查脚本权限:chmod +x /etc/keepalived/*.sh
- 查看Keepalived日志:journalctl -u keepalived
维护建议
- 定期备份:
Bash # 备份Zabbix配置
mysqldump -u zabbix -p zabbix > zabbix_backup_$(date +%F).sql
- 监控Keepalived集群:
- 在Zabbix中添加对两台服务器和VIP的监控
- 设置告警规则(VIP切换、服务状态变化)
- 升级流程:
1. 在备机上停止Keepalived
2. 升级备机上的Zabbix
3. 手动切换VIP到备机
4. 升级原主机上的Zabbix
5. 恢复主备关系
此方案确保了Zabbix服务的高可用性,当主机故障时,VIP会自动漂移到备机,同时备机上的Zabbix服务会自动启动接管工作。数据库主从复制保证了数据的实时同步。