zabbix高可用实现

zabbix高可用简介

Zabbix高可用性的实现方式

  1. 多节点部署
    • 将Zabbix部署在多个节点上,每个节点负责监控一部分设备或服务器。这种部署方式可以分散监控负载,提高系统的整体性能和可靠性。
    • 使用负载均衡器来实现请求的分发,确保所有节点都能够平均处理监控数据。
  2. 数据同步
    • 在不同节点之间进行数据同步,以避免数据丢失。
    • 可以使用数据库复制或分布式存储系统来实现数据的同步,确保每个节点都有最新的监控数据。
  3. 故障切换
    • 当某个节点发生故障时,需要及时切换到其他节点,以确保监控系统的持续运行。
    • 可以使用心跳监测或集群管理工具来实现节点的故障切换。

下文zabbix高可用的实现方法

以下高可用配置主要用于测试,共用一个数据库,如果要实现数据库的高可用可以用MHA或者PXC来实现。

zabbix的server节点只有一个是active的,其他处于standbby状态。

主机 角色
192.168.126.51 master zabbix-server、mysql数据库
192.168.126.52 slave zabbix-server

zabbix-server安装

安装zabbix源

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
 dnf clean all
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy 

yum install -y mysql-server
systemctl enable --now mysqld

mysql

create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by '123456';
grant all privileges on zabbix.* to zabbix@localhost;
flush privileges;
set global log_bin_trust_function_creators = 1;
quit;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p123456 zabbix

mysql

set global log_bin_trust_function_creators = 0;
quit;

需要修改端口和域名,zabbix没有在nginx默认主机的位置下

listen          80;
server_name     master.zabbix.com;
[root@localhost ~]# vim  /etc/nginx/conf.d/zabbix.conf
[root@localhost ~]# nginx -s reload

开启zabbix服务

systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm

《zabbix高可用实现》
《zabbix高可用实现》
《zabbix高可用实现》

zabbix需要主机名来通信,所以所有机器的hostname和zabbix的设置必须一致
《zabbix高可用实现》

《zabbix高可用实现》
《zabbix高可用实现》

用户名Admin 密码zabbix

高可用配置

修改my.cnf

skip_name_resolve=ON

mysql授权远程连接

create user zabbix@'%' identified by '123456';
grant all privileges on zabbix.* to zabbix@'%';
FLUSH PRIVILEGES;

注意要先停止zabbix-server,然后修改配置,再进行开启zabbix-server,不然容易重启失败

[root@master ~]# egrep -v '^$|^#' /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=192.168.126.51
DBName=zabbix
DBUser=zabbix
DBPassword=123456
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=192.168.126.0/24
HANodeName=master
NodeAddress=192.168.126.51:10051

slave节点修改数据库的ip

[root@slave ~]# egrep -v '^$|^#' /etc/zabbix/zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=192.168.126.51
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=192.168.126.0/24
HANodeName=slave
NodeAddress=192.168.126.52:10051

如果之前指定了本机数据库,还需要修改/etc/zabbix/web/zabbix.conf.php

$DB['SERVER']                   = '192.168.126.51';

重启服务

systemctl restart zabbix-server

查看zabbix高可用状态,只能在active的节点使用改命令

zabbix_server -R ha_status

《zabbix高可用实现》

《zabbix高可用实现》

agent端配置

所有的agent端都要修改配置文件,指明多个zabbix-server的地址

vim /etc/zabbix/zabbix_agent2.conf

Server=192.168.126.51,192.168.126.52
ServerActive=192.168.126.51,192.168.126.52

重启agent服务

systemctl restart zabbix-agent2.service

master端停止服务

[root@master ~]# systemctl stop zabbix-server.service

可以看到所有的主机状态还是可用的

《zabbix高可用实现》

停止一个nginx,可以看到监控

《zabbix高可用实现》

systemctl start zabbix-server.service

此时master节点处于standby状态

[root@slave ~]# zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:
   #  ID                        Name                      Address                        Status      Last Access
   1. clybiis4b00010qjaf1h1ik34 master                    192.168.126.51:10051           standby     4s
   2. clybjl8jh00016gg4z22vrm4k slave                     192.168.126.52:10051           active      2s

《zabbix高可用实现》

错误及解决

zabbix-server无法重启

因为修改了配置,没有先停止服务,导致无法重启。

杀死进程即可重启。

ps -ef | grep zabbix | grep -v grep | awk '{print $2}'  | xargs kill -9

Database error:No such file or directory

《zabbix高可用实现》

修改配置/etc/zabbix/web/zabbix.conf.php中的mysql的ip

《zabbix高可用实现》

参考

zabbix高可用实现过程-CSDN博客

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注