网站首页 > 技术文章 正文
本文通过 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/config
setenforce 0
systemctl stop firewalld && systemctl disable firewalld
前端部分
两台前端同样的操作为,yum 源配置、注入 gpgkey 、安装前端组件、启动前端组件部分。
采用清华源
cat <<EOF > /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/\$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/\$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF
注入 GPGkey
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl 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
效果
理论上应该是可以访问的,否则安装出现了错误。
数据库部分
由于 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 = MariaDB
baseurl = https://mirrors.cloud.tencent.com/mariadb/yum/10.6/centos8-amd64
module_hotfixes=1
gpgkey=https://mirrors.cloud.tencent.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
安装数据库
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 源
cat <<EOF > /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/\$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/\$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF
注入GPGKEY
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl 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 - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/8/\$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/8/\$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF
注入GPGKEY
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 \
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl 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
翻到配置最后部分,找到 High availability cluster parameters 部分,该部分即为原生 HA 配置。HANodeName 部分为集群节点名称,而 NodeAddress 部分一定要设置为相对应的主机 IP 地址,否则切换时会出现无法找到主机。
启动 Zabbix Server
systemctl start zabbix-server zabbix-agent2
systemctl enable zabbix-server zabbix-agent2
效果
前端部分
切换效果
主重启服务
service zabbix-server restart
模拟突然断电
此时表现不会立即切换,会等待一分钟的时间,重新拉起备机,默认的 failover_delay 为1分钟,最低为10S,在实际测试中,由于存在一分钟的切换时间,所以这一分钟的数据会出现缺失,前端表现如下图。
HA 部分配置说明
调整故障转移时长目前只能通过 zabbix_server 命令调整
设置 failover_delay 时间
zabbix_server -R ha_set_failover_delay=10s
附录
server 配置
vim /etc/zabbix/zabbix_agent2.conf
server=127.0.0.1,10.0.0.1
ServerActive 配置
注意是; 不是,
vim /etc/zabbix/zabbix_agent2.conf
server=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 功能,真正实现完整的高可用。
猜你喜欢
- 2025-01-24 Zabbix入门操作指南(zabbix4.0使用手册)
- 2025-01-24 CentOS8部署Zabbix6.0监控系统详细步骤
- 2025-01-24 基于Centos7.9部署zabbix5.0(centos7配置教程)
- 2025-01-24 zabbix6.0 LTS 保姆级安装教程(zabbix4.0安装)
- 2025-01-24 alma8飞速搭建zabbix6、微信报警、windows、linux、交换机监控
- 2025-01-24 Linux中常用命令(linux常用命令查询端口是否正常)
- 2025-01-24 Centos8 安装 zabbix(centos安装bazel)
- 2025-01-24 CentOS7下Zabbix5.0+PostgreSQL12+TimescaleDB部署实践
- 2025-01-24 这篇保姆级 Zabbix 必备指南,助你成为监控老司机
- 2025-01-24 Linux面试题和答案!(linux经典面试题)
- 最近发表
-
- 如何在 Linux 上安装 Java_怎么在linux中安装jdk
- Linux中tar命令打包路径相关问题_linux怎么用tar打包一个目录
- 常用linux系统常用扫描命令汇总_常用linux系统常用扫描命令汇总表
- VM下linux虚拟机新建过程(有图)_linux虚拟机创建新用户命令
- 系统小技巧:迁移通过Wubi方式安装的Ubuntu系统
- 文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
- 如何利用ftrace精确跟踪特定进程调度信息
- prometheus网络监控之fping-exporter
- hyper linux的实操步骤,hyper-v批量管理工具的使用指南
- 2021年,运维工程师笔试真题(二)(附带答案)
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)