当前位置: 首页 > news >正文

zabbix原生高可用集群应用实战

一、zabbix原生高可用的原理

        Zabbix原生高可用(High Availability)解决方案由多个zabbix_server实例或节点组成。每个节点独立配置,但数据库是使用同一个实例。在Zabbix高可用模式下,多台Zabbix server作为集群中的节点运行。 当集群中的一个Zabbix server处于激活(active )状态时,其他服务器处于备用(standy)状态,随时准备在必要时接管。集群中一次只能有一个节点处于活动状态(工作)。

zabbix原生高可用集群示意图
zabbix原生高可用的基本架构示意图
zabbix原生高可用(HA)集群原理
序号zabbix原生高可用集群原理说明
1在zabbix原生高可用的基本架构示意图中,zbx-node1是活动节点,zbx-node是备用节点;两个节点之间每5秒发送一次心跳到zabbix数据库,若一个节点停止发送其心跳信号,则另一个节点将会接管服务。
2

zabbix节点间的心跳监控细节是:

《1》通过多个zabbix-server不断向数据库更新自己的时间戳来实现的,主节点和备节点每5秒去数据库更新一次自己的时间戳。

《2》首先,每个备用节点会监控主节点的最后一次访问。如果主节点的最后一次访问时间超过了“故障转移延迟”秒,备用节点将自己切换为主节点,并将“不可用”状态分配给先前的主节点。

《3》同时,主节点还会监视自己的数据库连接,如果与数据库连接丢失超过“故障转移延迟-5”秒,它就会停止所有处理并切换到备用模式。此外,主节点还会监视备用节点的状态,如果备用节点的最后访问时间超过了“故障转移延迟”秒,就将备用节点分配为“不可用”状态。

3若配置了zabbix原生高可用(zabbix HA),那么在zabbix agent中也需要配置多个zabbix server节点,如zabbix原生高可用的基本架构示意图:若zbx-node1失效,则zabbix agent会尝试去连接另一个zbx-node2,通过此机制,保证监控数据输出的连续性。
4

zabbix原生高可用节点的状态有如下四种:

《1》active——活动状态;

《2》standby——备用状态;

《3》unavailable——不可用状态;

《4》stopped——停止状态。

二、构建zabbix原生高可用基本架构集群

 2.1、zabbix原生高可用基本架构集群规划

zabbix原生高可用基本架构集群规划
zabbix原生高可用是【一主多备】模式,最简单的是一主一备,主备角色集群自动进行配置生成
序号IP地址主机名称操作系统说明
1192.168.1.36zabbix-server01Almalinux9.3

zabbix-server01节点

1.1-需安装的zabbix组件有:

《1》zabbix-server-mysql;

《2》zabbix-web-mysql;

《3》zabbix-nginx-conf;

《4》zabbix-sql-scripts;

《5》zabbix-selinux-policy;

《6》zabbix-agent2;

《7》zabbix-agent2-plugin-mongodb;

《8》zabbix-agent2-plugin-mssql;

《9》zabbix-agent2-plugin-postgresql;

1.2-安装数据库(如:mysql)【也可单独部署】

《1》mysql8.4.6

2192.168.1.37zabbix-server02Almalinux9.3

zabbix-server02节点

1.1-需安装的zabbix组件有:

《1》zabbix-server-mysql;

《2》zabbix-web-mysql(可选);

《3》zabbix-nginx-conf;

《4》zabbix-sql-scripts(可选);

《5》zabbix-selinux-policy;

《6》zabbix-agent2;

《7》zabbix-agent2-plugin-mongodb;

《8》zabbix-agent2-plugin-mssql;

《9》zabbix-agent2-plugin-postgresql;

 2.2、zabbix-server的安装

  2.2.1、zabbix-server01的zabbix server安装

        zabbix-server01服务器上可以完全按照这个《使用dnf/yum方式在线安装部署zabbix 7.0 LTS监控平台》的操作安装配置一遍就可以了。

#1-在共享数据库(mysql)中使用root用户登录并授权新节点(zabbix-server01)连接操作
/usr/local/mysql/mysql-8.4.6/bin/mysql -uroot -p
create user zabbix@192.168.1.36 identified by 'zabbix123';
grant all privileges on zabbix.* to zabbix@192.168.1.36;
select user,plugin,host from mysql.user;
flush privileges;
show grants for 'zabbix'@'192.168.1.36';
exit;
#1-zabbix web配置中,编辑配置文件/etc/nginx/conf.d/zabbix.conf,去掉【listen】与
【server_name】前的注释,修改后如下:
vi /etc/nginx/conf.d/zabbix.conf
listen          8091
server_name     example.com;#2-修改zabbix-server的基础配置,配置上zabbix数据库的【DBPassword】【DBSocket】及其一些参数优化
vi /etc/zabbix/zabbix_server.conf
#将这个zabbix_server.conf文件里面的内容修改如下:
DBHost=192.168.1.36
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
#DBSocket=/tmp/mysql.sock
DBPort=13336
ListenPort=10051
LogFile=/var/log/zabbixsrv/zabbix_server.log
ListenIP=0.0.0.0
StartPollers=5
StartTrappers=10
StartDiscoverers=10
AlertScriptsPath=/usr/lib/zabbix/alertscripts

  2.2.2、zabbix-server02的zabbix server安装

        注意:zabbix的安装源仓库地址是【https://repo.zabbix.com/zabbix/】。且该节点不用安装数据库,与zabbix-server01共享数据库(mysql)【即:两个节点的zabbix_server.conf配置文件中连接数据库的信息保持一致;若数据库默认只允许本机(localhost)连接,还需要在数据库上授权新节点zabbixserver02允许连接数据库】。

#安装部署zabbix7.0 LTS的实操流程#0-清除系统中原有的EPEL源(因为epel中的zabbix与zabbix提供的源有冲突,会造成无法正常安装zabbix server)
rm -rf /etc/yum.repos.d/epel*
yum clean all
yum repolist enabled | grep epel#1-下载zabbix7.0 LTS的安装源(我们安装好zabbix的源后,其实它是在【/etc/yum.repos.d/】路径下名为【zabbix.repo】)并清空仓库
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest-7.0.el9.noarch.rpm
#1.1-清理当前仓库
yum clean all#2-安装Zabbix server,Web前端,agent2
yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 -y#3-安装zabbix agent2的插件
yum install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql -y#4-在共享数据库(mysql)中使用root用户登录并授权新节点(zabbix-server02)连接操作
/usr/local/mysql/mysql-8.4.6/bin/mysql -uroot -p
create user zabbix@192.168.1.9 identified by 'zabbix123';
grant all privileges on zabbix.* to zabbix@192.168.1.9;
select user,plugin,host from mysql.user;
flush privileges;
show grants for 'zabbix'@'192.168.1.9';
exit;
#1-zabbix web配置中,编辑配置文件/etc/nginx/conf.d/zabbix.conf,去掉【listen】与
【server_name】前的注释,修改后如下:
vi /etc/nginx/conf.d/zabbix.conf
listen          8091
server_name     example.com;#2-修改zabbix-server的基础配置,配置上zabbix数据库的【DBPassword】【DBSocket】及其一些参数优化
vi /etc/zabbix/zabbix_server.conf
#将这个zabbix_server.conf文件里面的内容修改如下:
DBHost=192.168.1.36
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
#DBSocket=/tmp/mysql.sock
DBPort=13336
ListenPort=10051
LogFile=/var/log/zabbixsrv/zabbix_server.log
ListenIP=0.0.0.0
StartPollers=5
StartTrappers=10
StartDiscoverers=10
AlertScriptsPath=/usr/lib/zabbix/alertscripts
#1-启动Zabbix server、agent2、ngingx、php-fpm进程并设置开机自启
systemctl restart zabbix-server zabbix-agent2 nginx php-fpm
systemctl enable zabbix-server zabbix-agent2 nginx php-fpm#2-查看zabbix-server的日志来确认是否成功启动(日志里面没有错误信息则表示成功)
cd /var/log/zabbix/
cat zabbix_server.logtail -f  /var/log/zabbix/zabbix_server.log 

注意:若是zabbix-server02上的防火墙开启了,则需要放开8091、10050、10051端口。

#查看系统当前的防火墙是否打开,若打开则需要放开8091、10050、10051端口#1-查看系统当前防火墙的打开状态(若显示【Active: active (running)】则表示防火墙开启中)
systemctl status firewalld#2-【防火墙激活运行中】执行永久放开防火墙的8091、10050、10051端口
firewall-cmd --list-port
firewall-cmd --zone=public --add-port=8091/tcp --permanent
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --zone=public --add-port=10051/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port

 2.3、开启zabbix-server原生高可用

        要启用zabbix server的HA功能,只需要在zabbix_server.conf中开启两个参数即可,分别是HANodeName、NodeAddress。这两个配置参数在zabbix_server.conf文件的最后部分。

《1》HANodeName:集群中每个zabbix server节点此名称必须要有且唯一,如果没有指定HANodeName,那么服务器将以standalone模式启动。

《2》NodeAddress: 必须为每个server节点指定,NodeAddress参数(address:port)将被Zabbix前端用来连接到主server节点。NodeAddress必须匹配相应Zabbix server的IP。

配置完成后,重启两个zabbix server服务即可,详细操作如下所示:

查看和修改Linux的主机名称_linux如何查看和修改主机名?https://coffeemilk.blog.csdn.net/article/details/152363961

#一、开启192.168.1.36服务器的zabbix原生高可用
#1.1-进入192.168.1.36服务器中将该服务器的主机名称修改为【zabbix-server01】
hostnamectl set-hostname zabbix-server01
systemctl restart systemd-hostnamed
exec bashcp /etc/hosts /etc/hosts$(date +'%Y%m%d%H%M%S').bak
vi /etc/hosts
#【/etc/hosts】文件的内容如下:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.36    zabbix-server01
192.168.1.9     zabbix-server02#1.2-编辑【/ect/zabbix/zabbix_server.conf】文件,启用如下HA参数并保存退出:
vi /ect/zabbix/zabbix_server.conf
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
#DBSocket=/tmp/mysql.sock
DBPort=13336
HANodeName=zabbix-server01
NodeAddress=192.168.1.36:10051#1.3-重启zabbix-server服务(若启动失败可查看日志【 tail -f /var/log/zabbix/zabbix_server.log】)
systemctl restart zabbix-server.service
systemctl status zabbix-server.service
#二、开启192.168.1.9服务器的zabbix原生高可用
#2.1-进入192.168.1.9服务器中将该服务器的主机名称修改为【zabbix-server02】
hostnamectl set-hostname zabbix-server02
systemctl restart systemd-hostnamed
exec bashcp /etc/hosts /etc/hosts$(date +'%Y%m%d%H%M%S').bak
vi /etc/hosts
#【/etc/hosts】文件的内容如下:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.36    zabbix-server01
192.168.1.9     zabbix-server02#2.2-编辑【/ect/zabbix/zabbix_server.conf】文件,启用如下HA参数并保存退出:
vi /etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix123
#DBSocket=/tmp/mysql.sock
DBPort=13336
HANodeName=zabbix-server02
NodeAddress=192.168.1.9:10051#2.3-重启zabbix-server服务(若启动失败可查看日志【 tail -f /var/log/zabbix/zabbix_server.log】)
systemctl restart zabbix-server.service
systemctl status zabbix-server.service

        然后到zabbix-server的web界面上【192.168.1.36:8091】选择左侧导航栏的【报表】-->【系统信息】就可以看到高可用信息了,如下图所示:

到这里恭喜你,zabbx-server的原生高可用基本架构集群已经实现了。

2.4、修改zabbix-agent2的配置适配高可用

        由于启用了zabbix的原生高可用功能,因此所有的agent节点、proxy节点的配置文件也都需要进行修改(主要修改agent2中的【Server】【ServerActive】两个参数,这两个参数添加Zabbix HA集群所有节点的IP地址信息。

#1-修改agent2的配置文件【/etc/zabbix/zabbix_agent2.conf】内容
vi /etc/zabbix/zabbix_agent2.conf
#1.1-【被动代理】节点名称必须列在代理的服务器参数中,以逗号分隔内容如下:
Server=192.168.1.36,192.168.1.9#1.2-【主动代理】节点名称必须列在代理的服务器参数中,以分号分隔内容如下:
ServerActive=192.168.1.36;192.168.1.9#2-重启所有zabbix agent2服务
systemctl restart zabbix-agent2.service 
systemctl status zabbix-agent2.service
tail -f /var/log/zabbix/zabbix_agent2.log

        注意:当我们重启agent2后,需要对zabbix-server的web界面的名为【Zabbix server】的主机修改为【zabbix-server01】的IP及其配置详细操作如下,其还需要添加上【zabbix-server02】主机,如下图所示:

 2.5、zabbix集群故障切换

       若主节点停止,Zabbix将自动故障转移到另一个节点(要发生故障转移,必须至少有一个节点处于备用状态;故障转移会有多快? 所有节点每5秒更新一次他们的最后访问时间和状态(它被更改)) 因此:

  • 如果主节点关闭并成功报告其状态为“stopped”,另一个节点将在5秒内接管。
  • 如果主节点关闭/变得不可用,而无法更新其状态,备用节点将等待故障转移延迟 + 5秒来接管。
#手动模拟zabbix集群的故障切换
#(即:单个节点若其当前是active状态,若其故障后激活的节点转为其他节点,则该节点再恢复也不会转为active状态了,除非当前active的节点再次故障)#1-先将zabbix-server01的zabbix-server服务停止(此时该节点在集群的状态是stop)
systemctl stop zabbix-server.service#2-过了几分钟后再次将zabbix-server01的zabbix-server服务启动(此时该节点在集群的状态是standby)
systemctl restart zabbix-server.service

详细操作如下图所示:

三、管理zabbix原生高可用集群

 3.1、查看当前zabbix的集群状态

#查看zabbix集群的状态#方法一:在zabbix-server服务上运行命令查看(只能在激活节点运行)
zabbix_server -R ha_status#方法二:直接在zabbix-server的web界面左侧导航栏选择【报表】-->【系统信息】界面可以查看到详情

 3.2、设置zabbix集群的故障转移延迟时间

#设置zabbix集群的故障转移延迟时间命令(delay是具体的延时时间,范围为10秒到15分钟之间;支持时间后缀,例如 10s、1m。)
#zabbix_server -R ha_set_failover_delay=delay#示例:如将zabbix集群的故障转移延迟设置为15秒
zabbix_server -R ha_set_failover_delay=15s

 3.3、删除和添加zabbix集群的指定节点

#删除zabbix集群的指定节点命令【zabbix_server -R ha_remove_node=节点ID】(节点编号可以通过运行【zabbix_server -R ha_status】命令获取)
#(注意:当节点状态处于【active】【standby】模式时无法删除)
#示例:如删除zabbix集群中的【cmhq25fgx0001d35log1r6ppd】节点
zabbix_server -R ha_remove_node=cmhq25fgx0001d35log1r6ppd

注意,处于active、standby状态的节点不能被删除。因此要从集群中移除一个节点,可以先将此节点的zabbix server服务关闭,关闭后,此节点处于stopped状态,然后在执行上面命令删除。

要将某个节点重新加入zabbix ha集群,只需要重新启动此节点的zabbix server服务即可。

http://www.dtcms.com/a/585846.html

相关文章:

  • flink1.20.2环境部署和实验-1
  • 网站主目录程序开发步骤不包括
  • 云手机技术是如何实现的?
  • 现有rest api转换为MCP工具 存量api改造为MCP Server
  • MyBatis:性能优化实战 - 从 SQL 优化到索引设计
  • 【Golang】常见数据结构原理剖析
  • 做百度推广得用网站是吗做小说网站做国外域名还是国内的好处
  • Ubuntu 复制王者:rsync -av 终极指南 —— 进度可视化 + 无损同步,效率甩 cp 几条街!
  • ubuntu磁盘管理、磁盘扩容
  • 专业设计网站排名百达翡丽手表网站
  • 广度优先搜索
  • 高端网站建设公司名称动物自己做的网站
  • 编译OpenCV
  • jQuery Mobile 事件详解
  • 网站换模板影响国家域名注册中心
  • 佛山的网站建设公司凡科建站微信小程序
  • 建设部网站网上大厅长沙景点免费
  • 不练不熟,不写就忘 之 compose 之 动画之 animateSizeAsState动画练习
  • 函数模板和类模板
  • 从 0 到 1:我的 C++ 游戏开发全记录
  • 手机屏幕表面缺陷检测分割系统1:数据集说明(含下载链接)
  • 【MyBatis】 吃透 MyBatis:多表查询、SQL 注入防护(#{} vs ${})与连接池优化
  • 智能体AI的六大核心设计模式
  • 基于SLERP(Spherical Linear Interpolation) 进行旋转滤波
  • 站长工具seo查询5g5g成都市四方建设工程监理有限公司网站
  • 网站建设百科深圳网站建设公司fantodo
  • 接口自动化详细介绍
  • 深入解析多态:面向对象编程灵魂
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的赛道力构建与品牌发展研究
  • 怎么做网站地图的样式wordpress网站后缀