vlambda博客
学习文章列表

Zabbix随笔:高可用篇(一)

本文通过 Zabbix 原生 HA 功能实现高可用(暂不讨论数据库和前端的高可用,下期会讲到),本文以 LAMP 环境演示,其他环境可以参考之前的文章。

正文

本文环境

  • CentOS 8.5

  • Zabbix 6.0 LTS RC1

  • Mariadb 10.6.5 / Postgresql 13

  • Nginx / Apache

本文架构图

本文物理环境

  • Zabbix Front 01 192.168.0.228

  • Zabbix Front 02 192.168.0.39

  • Zabbix Server 01 192.168.0.200

  • Zabbix Server 02 192.168.0.125

  • Zabbix DB 192.168.0.103

前提准备

新手建议关闭防护墙以及SELinux,老鸟请忽略~

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsetenforce 0systemctl stop firewalld && systemctl disable firewalld

前端部分

两台前端同样的操作为,yum 源配置、注入 gpgkey 、安装前端组件、启动前端组件部分。

采用清华源

cat <<EOF > /etc/yum.repos.d/zabbix.repo[zabbix]name=Zabbix Official Repository - \$basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/\$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]name=Zabbix Official Repository non-supported - \$basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/\$basearch/enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXgpgcheck=1EOF

注入 GPGkey

curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXcurl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

安装 Zabbix 前端组件

dnf install  zabbix-web-mysql zabbix-apache-conf  zabbix-agent2 -y

启动前端组件

systemctl start httpd php-fpm systemctl enable httpd php-fpm

效果

理论上应该是可以访问的,否则安装出现了错误。

Zabbix随笔:高可用篇(一)

第一台

Zabbix随笔:高可用篇(一)第二台

数据库部分

由于 6.0 要求为10.6.5的数据库,因此需要安装 Mariadb 官方源。

cat <<EOF > /etc/yum.repos.d/mariadb.repo# MariaDB 10.6 CentOS repository list - created 2022-01-16 15:10 UTC# https://mariadb.org/download/[mariadb]name = MariaDBbaseurl = https://mirrors.cloud.tencent.com/mariadb/yum/10.6/centos8-amd64module_hotfixes=1gpgkey=https://mirrors.cloud.tencent.com/mariadb/yum/RPM-GPG-KEY-MariaDBgpgcheck=1EOF

安装数据库

dnf -y install mariadb-server

启动数据库

systemctl start mariadb && systemctl enable mariadb

设置数据库 root 密码

mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xiaoyu123');"

创建 数据库 及用户

这里需要注意的是由于数据库与应用分开部署,所以需要授权远程登录。

create database zabbix character set utf8 collate utf8_bin;create user zabbix@localhost identified by 'xiaoyu123';grant all privileges on zabbix.* to zabbix@'%' identified by 'xiaoyu123' with grant option;quit;

Zabbix随笔:高可用篇(一)

安装 Zabbix 源

cat <<EOF > /etc/yum.repos.d/zabbix.repo[zabbix]name=Zabbix Official Repository - \$basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/\$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]name=Zabbix Official Repository non-supported - \$basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/\$basearch/enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXgpgcheck=1EOF

注入GPGKEY

curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXcurl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

安装 Zabbix 数据库相关包

dnf -y install zabbix-sql-scripts zabbix-agent2

导入 Zabbix 数据库文件

zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

Zabbix Server 部分

两台 Server 主机同样的操作为安装源、注入GPGKEY、Server 配置文件数据库部分。

安装 Zabbix 源

cat <<EOF > /etc/yum.repos.d/zabbix.repo[zabbix]name=Zabbix Official Repository - \$basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/\$basearch/enabled=1gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]name=Zabbix Official Repository non-supported - \$basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/\$basearch/enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXgpgcheck=1EOF

注入GPGKEY

curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIXcurl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

安装 Zabbix Server

dnf -y install zabbix-server-mysql zabbix-agent2

调整 Zabbix Server 配置

vim /etc/zabbix/zabbix_server.conf

Zabbix随笔:高可用篇(一)DBHost部分需要修改为数据库IP

Zabbix随笔:高可用篇(一)密码需要设置为数据库用户密码

Zabbix随笔:高可用篇(一)第一台Server

Zabbix随笔:高可用篇(一)第二台Server

启动 Zabbix Server

systemctl start zabbix-server zabbix-agent2 systemctl enable zabbix-server zabbix-agent2

效果

Zabbix随笔:高可用篇(一)第二台出现standby即为成功

前端部分

Zabbix随笔:高可用篇(一)需要修改的为DB HOST部分,为数据库IP

Zabbix随笔:高可用篇(一)前端一

Zabbix随笔:高可用篇(一)前端二

Zabbix随笔:高可用篇(一)效果

切换效果

主重启服务

service zabbix-server restart

Zabbix随笔:高可用篇(一)主发生了角色切换

Zabbix随笔:高可用篇(一)备变成主

Zabbix随笔:高可用篇(一)前端表现

模拟突然断电

此时表现不会立即切换,会等待一分钟的时间,重新拉起备机,默认的 failover_delay 为1分钟,最低为10S,在实际测试中,由于存在一分钟的切换时间,所以这一分钟的数据会出现缺失,前端表现如下图。

Zabbix随笔:高可用篇(一)

Zabbix随笔:高可用篇(一)手动切换的日志

Zabbix随笔:高可用篇(一)原主状态变成高可用

HA 部分配置说明

调整故障转移时长目前只能通过 zabbix_server 命令调整

设置 failover_delay 时间

zabbix_server -R ha_set_failover_delay=10s

Zabbix随笔:高可用篇(一)调整切换时间,及时生效

Zabbix随笔:高可用篇(一)调整切换时间后

附录

server 配置

vim /etc/zabbix/zabbix_agent2.confserver=127.0.0.1,10.0.0.1

Zabbix随笔:高可用篇(一)

ServerActive 配置

注意是; 不是,

vim /etc/zabbix/zabbix_agent2.confserver=127.0.0.1;10.0.0.1

禁用 HA

注释高可用部分即可

启动时命令

zabbix_server -R
  • ha_status

  • ha_remove_node=target

  • ha_set_failover_delay=delay

举例


最后

整个 Zabbix 6.0 的 HA 功能配置起来还是比较简单的,但是还是有很多不足之处,例如无法提供 EIP 功能,在 agent 指定时需要指定两个IP,与之前的多写有点相似,其次无法做到配置同步,在实际测试中,如果备机的配置较低或者没有优化配置,会出现 server 挂死,但相比之前的第三方方案还是要强了很多,毕竟不依赖第三方组件,而且切换灵敏,目前官方发布了 6.0 LTS RC1 版本,基本可以预测不会有太大的调整,在后续的版本中希望持续优化 HA 功能,真正实现完整的高可用。