前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix 随笔:高可用篇(一)

Zabbix 随笔:高可用篇(一)

作者头像
IT小白Kasar
发布2022-02-16 18:47:06
4530
发布2022-02-16 18:47:06
举报
文章被收录于专栏:个人技术随笔个人技术随笔

本文通过 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

前提准备

代码语言:javascript
复制
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld  && systemctl disable firewalld

前端部分

代码语言:javascript
复制
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
代码语言:javascript
复制
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
代码语言:javascript
复制
dnf install  zabbix-web-mysql zabbix-apache-conf  zabbix-agent2 -y
代码语言:javascript
复制
systemctl start httpd php-fpm 
systemctl enable httpd php-fpm

效果

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

第一台
第一台
第二台
第二台

数据库部分

代码语言:javascript
复制
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
安装数据库
代码语言:javascript
复制
dnf -y install mariadb-server
启动数据库
代码语言:javascript
复制
systemctl start mariadb && systemctl enable mariadb
初始化数据库
代码语言:javascript
复制
mariadb-secure-installation
创建数据库及用户
代码语言:javascript
复制
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 源
代码语言:javascript
复制
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
代码语言:javascript
复制
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 数据库相关包
代码语言:javascript
复制
dnf -y install zabbix-sql-scripts zabbix-agent2
导入 Zabbix 数据库文件
代码语言:javascript
复制
zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix

Zabbix Server 部分

安装 Zabbix 源
代码语言:javascript
复制
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
代码语言:javascript
复制
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
代码语言:javascript
复制
dnf -y install zabbix-server-mysql  zabbix-agent2
修改Zabbix Server 配置
代码语言:javascript
复制
vim /etc/zabbix/zabbix_server.conf

由于采用的组件是分布式部署,所以数据库部分需要特别设置。

DBhost部分需要修改为数据库IP
DBhost部分需要修改为数据库IP
修改数据库密码部分
修改数据库密码部分

翻到配置最后部分,找到 High availability cluster parameters 部分,该部分即为原生 HA 配置。 HANodeName 部分为集群节点名称,而 NodeAddress 部分一定要设置为相对应主机的 IP 地址,否则切换时会出现无法找到主机

第二台机器
第二台机器
启动 Zabbix Server
代码语言:javascript
复制
systemctl start zabbix-server zabbix-agent2 
systemctl enable zabbix-server zabbix-agent2
效果
当出现standby字眼即为正常
当出现standby字眼即为正常

前端部分

这里需要写成 DB 的 IP
这里需要写成 DB 的 IP
第一台
第一台
第二台
第二台
效果
效果

切换效果

在主重启服务

代码语言:javascript
复制
service zabbix-server restart
主发生了角色切换
主发生了角色切换
备变成了主用
备变成了主用
前端表现
前端表现

模拟突然断电

此时表现不会立即切换,会等待一分钟的时间,重新拉起备机,默认的 failover_delay 为1分钟,最低为10S,

手动切换的日志
手动切换的日志
原主会变的不可用
原主会变的不可用

HA 部分配置说明

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

代码语言:javascript
复制
zabbix_server -R ha_set_failover_delay=10s
调整完后
调整完后

附录

server 配置

代码语言:javascript
复制
server=127.0.0.1,10.0.0.1
高可用示例
高可用示例

ServerActive 配置

代码语言:javascript
复制
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 功能,真正实现完整的高可用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
    • 本文环境
      • 本文架构图
        • 本文物理环境
          • 前提准备
            • 前端部分
              • 效果
                • 数据库部分
                  • 安装数据库
                  • 启动数据库
                  • 初始化数据库
                  • 创建数据库及用户
                  • 安装 Zabbix 源
                  • 安装 Zabbix 数据库相关包
                  • 导入 Zabbix 数据库文件
                • Zabbix Server 部分
                  • 安装 Zabbix 源
                  • 安装 Zabbix Server
                  • 修改Zabbix Server 配置
                  • 启动 Zabbix Server
                  • 效果
                • 前端部分
                  • 切换效果
                    • 模拟突然断电
                      • HA 部分配置说明
                      • 附录
                        • server 配置
                          • ServerActive 配置
                            • 禁用 HA
                              • 启动时命令
                              相关产品与服务
                              数据库
                              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档