首页 > 其他分享 >Zabbix 6 系列学习 10:原生高可用介绍及使用

Zabbix 6 系列学习 10:原生高可用介绍及使用

时间:2022-12-29 18:00:13浏览次数:34  
标签:node 10 zabbix server Zabbix 系列学习 HA 节点

安装篇的最后一篇了,Zabbix 在 6.0 版本最大的变化就是提出了原生高可用功能,在之前的版本可能会通过其他第三方的方式来进行高可用,操作难度较大,本文将会对高可以展开讲解。

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用

须知

首先要明确官方的高可用到底怎么回事?官方的高可用仅仅针对 Zabbix Server 部分,数据库部分和前端部分需要自行采用各自领域的高可用解决方案,所以如果想实现完全高可用架构,还是需要具备一定的知识储备。

启用 HA

默认情况下,HA 是关闭的

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_02

本文环境

  • 主:zabbix-server-node01:192.168.181.183
  • 备:zabbix-server-node02:192.168.181.182
  • 数据库:mysql:192.168.181.183
  • 前端:apache+php:192.168.181.183
  • 系统:almalinux 8.7

Zabbix Server 配置

vim /etc/zabbix/zabbix_server.conf

HA 部分的配置在配置文件的最下面:High availability cluster parameters 部分

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_03

该部分配置有两个选项

  • HANodeName:故名思义,节点的名称,如果该名称为空,为 standalone模式,即为单机模式,但如果节点地址配置了,该字段为空,前端显示为 IP 地址
  • NodeAddress:节点的 IP,格式为 <address>[:port]

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_04

修改完成后,需要重启服务

systemctl restart zabbix-server

Zabbix 6 系列学习 10:原生高可用介绍及使用_数据库_05

将字段填写上

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_06

重启服务后,就能看到 HA 管理器已经开启了

Zabbix 6 系列学习 10:原生高可用介绍及使用_数据库_07

查看前端,高可用集群已经启用了

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_08

Zabbix 6 系列学习 10:原生高可用介绍及使用_Server_09

最新数据

安装另外一台 Zabbix Server

同样关闭防火墙和Selinux,可以参考之前的文章,本文忽略。

安装 Zabbix 源

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm

安装 Zabbix Server

dnf -y install zabbix-server zabbix-agent

修改 Zabbix server 配置文件

vim /etc/zabbix/zabbix_server.conf

修改数据库的主机 IP

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_10

修改数据库的密码

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_11

修改 HA 部分的配置,填写自身的信息

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_12

此时回出现无法连接数据库,因为数据库远程登录需要有权限。

mysql -uroot -pxiaoyu123
create user zabbix@'192.168.181.132' identified by 'xiaoyu123';
grant all privileges on zabbix.* to zabbix@'192.168.181.132';

重启 Zabbix server 服务

systemctl restart zabbix-server

就会出现下面情况,完成了加入节点,状态为 standby

Zabbix 6 系列学习 10:原生高可用介绍及使用_数据库_13

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_14

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_15

系统信息里

那么其实到这里了,HA 基本就可以实现了,那么是通过什么方式来确定的呢?通过抓包可以看到,实际上备机是通过查询 Zabbix 数据库的 ha_node表,来发现是否存在需要 HA 的关系,当然具体逻辑还得需要看源码才知道,这里不展开深究。

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_16

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_17

模拟故障

zabbix-server-node01 停止 server 服务

systemctl stop zabbix-server

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_18

zabbix-server-node02

立即做了切换(5s内),不可用状态根据切换时间来定(默认一分钟)

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_19

日志

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_20

前端

此时出现了主 Server stoped 字样

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_21

系统报告

那么高可用测试基本就没问题了。

注意

1.在启用了高可用双方的配置是不会自动同步的,所以需要主备集群需要保持参数一致,而主的配置参数高于备机,切换虽然能成功,但是容易出现切换完成后备机出现不可用情况

2.关于被监控的主机。

  • snmp 不会受主备影响
  • agent 部分需要重新配置
Server=zabbix-node-01,zabbix-node-02
ServerActive=zabbix-node-01;zabbix-node-02

需要注意的是在 ServerActive的连接符是‘;’而不是‘,’,在配置文件里也有详解

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_22

Server

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_23

ServerActive

如果不调整,当主机 down 掉了,会出现下面情况

Zabbix 6 系列学习 10:原生高可用介绍及使用_Server_24

Proxy 部分也需要注意

分两种情况

  • 主动模式
Server=zabbix-node-01;zabbix-node-02
  • 被动模式
Server=zabbix-node-01,zabbix-node-02

不调整会出现无法接收数据

3.主动中断服务是5s内立即切换,但如果非人为状态,例如断电/断网/宕机,都根据 failover_delay 时间(默认一分钟)切换,所以这一分钟会出现断图,丢数据等情况

4.当加入节点后,想退出 HA 模式,此时无法主动删除,需要用命令行移除备机,再取消掉主相关配置才可以。

附录

HA 集群状态

  • active
  • standby
  •  unavailable
  •  stopped

切换细节

主节点和备节点每5秒更新一次上次访问时间。每个备节点监控主节点的最后一次访问时间。如果主节点的最后一次访问时间超过了“故障转移延迟”秒,备用节点将自己切换为主节点,并将“unavailable”状态分配给先前的主节点。

命令行管理

修改切换时间(10s-15min)

zabbix_server -R ha_set_failover_delay=5m

Zabbix 6 系列学习 10:原生高可用介绍及使用_数据库_25

查看 HA 状态

zabbix_server -R ha_status

Zabbix 6 系列学习 10:原生高可用介绍及使用_Zabbix_26

针对 HA 新增相关模板,在 Zabbix server health 模板里

Zabbix 6 系列学习 10:原生高可用介绍及使用_高可用_27

写在最后

当前原生高可用功能,仅完成比较初期的功能,如果现网监控环境较复杂,需要更改的功能,当前只支持1主多备,其次性能参数无法实现自动同步,需要手工同步;再就是无法提供虚拟 IP ,所以需要在 agent/proxy 修改相关参数才可使用,但至少看到了0从1的跨越,至于1.1,1.2...怎么完善就看 Zabbix 官方如何优化该功能了,后续就进入到 Zabbix 操作部分了,敬请期待。

标签:node,10,zabbix,server,Zabbix,系列学习,HA,节点
From: https://blog.51cto.com/kasarit/5977635

相关文章

  • ip网络音频传输模块EA2101T网络音频传输控制模块
    广州新悦网络设备有限公司EA2101T网络音频模块是一款高性能的10/100M网络音频模块,采用高性能ARM处理器及专业Codec,能接收网络音频数据流,转换成音频模拟信号输出,具有CD级的......
  • 010 、JVM实战总结: 动手实验:亲自感受一下线上系统部署时如何设置JVM内存大小
     1、前文回顾      新生代里内存不够了,就会触发一次MinorGC,当他成为是十多岁的“老年人”的时候,就会被转移到老年代里去跟JVM内存相关的几个核心参数图解-Xms:Java......
  • ASEMI整流桥MB10S,DB207S和ABS210有什么区别
    编辑-ZASEMI整流桥MB10S,DB207S和ABS210有什么区别?这几个型号从外观看都是很相似的,那么他们参数有什么不一样呢?MB10S参数:型号:MB10S封装:MBS-4最大重复峰值反向电压(VRRM):1000V最......
  • ASEMI整流桥MB10S,DB207S和ABS210有什么区别
    编辑-ZASEMI整流桥MB10S,DB207S和ABS210有什么区别?这几个型号从外观看都是很相似的,那么他们参数有什么不一样呢? MB10S参数:型号:MB10S封装:MBS-4最大重复峰值反向电压(VR......
  • Windows10:该文件没有与之关联的应用来执行该操作
    发现桌面上快捷方式都有一个小箭头的图标,这当然更不能忍,于是在注册表里面删除了IsShortcut。(这是win10和win7时代的方法)。可是重启后,我发现下方任务栏的固定图标打不开......
  • day10Git
    1.Git介绍1.1版本控制(理解)无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况1.2开发中存在的问题(理解)程序员小明负责的模块就要完成了,就在即将提......
  • Django开发必备的10个第三方库
    以下的这几个第三方库,常用于Django开发中1.django-import-export:导入导出数据2.django-filter:过滤数据使用3.django-restframework:restful-Api使用4.pymysql:......
  • 第二章《Java程序世界初探》第10节:多重if...else语句
    ​程序员希望实现这样的功能:由用户从控制台输入一个考试分数,如果这个分数在90或90以上输出“优”,如果分数在70到89输出“良”,如果分数在60到69输出“平”,如果分数在60以......
  • Python--SQLite学习(10.29)
    最近开始反思自己了,发现自己就是缺少坚持,然后从今天起,每天都认真学一点Python,做个积累,希望年底可以换个好工作! 今天学的是SqlLite的操作:首先sqllite3是python3.7自带的模块......
  • windows 10 桌面ctrl alt 自定义快捷键打开程序慢 响应很慢 延迟问题
    思路为:关闭后台应用具体步骤如下:1.)设置,搜索 隐私  2.)找到隐私设置  3.)关闭后台这些后台应用,我都不需要,所以直接全部关闭了,如果有需要可以逐个实验,查找出来到底是哪个后......