当前位置:网站首页>Zabbix 6.0 源码安装以及 HA 配置
Zabbix 6.0 源码安装以及 HA 配置
2022-07-01 12:43:00 【51CTO】
Zabbix 6.0 已经发布,现在版本发布到了 6.0.6 ,其中新增加了原生的 HA 功能,这个功能解决了 Zabbix Server 单点的问题,算是 Zabbix 6.0 比较大的一个功能点,我们来看看这个功能怎么配置。 另外 Zabbix 6.0 发布以后,官方支持推荐的操作系统是 CentOS 8 或者以上,CentOS 8 以下不在提供编译好的安装包,需要自己进行编译,而且数据库的版本也要求最低是 MySQL 8.0 ,PHP 的版本要求最低是 7.2.5 ,但是不支持 8.0 。
环境介绍
这次安装我们需要 3 台机器,操作系统是 CentOS 7.4 ,数据库选择了 MySQL 8.0.28 ,PHP 选择了 7.4.30,机器的 IP 和用途分别是
- 192.168.1.10 : 用来部署 MySQL 数据库
- 192.168.1.11 : 用来部署 Zabbix Server Master、Zabbix Web
- 192.168.1.12 : 用来部署 Zabbix Server Slave
Zabbix 6.0 源码安装
源码安装需要先准备 MySQL 环境,然后进行编译,编译好以后进行修改配置文件。
准备 MySQL 数据库环境
首先,我们在 192.168.1.10 机器上部署 MySQL 8.0 数据库,用来给 Zabbix Server 提供数据存储。 这次部署 MySQL 8.0.28 ,需要准备如下安装包:
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-server-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-common-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-devel-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-client-plugins-8.0.28-1.el7.x86_64.rpm
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-community-icu-data-files-8.0.28-1.el7.x86_64.rpm
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
如果需要安装其他版本的 MySQL 版本,可以在 MySQL 的归档地址 https://downloads.mysql.com/archives/community/ 中选择版本进行下载。
下载上边 MySQL 8.0.28 的 8 个软件依赖包到指定目录,然后使用 yum 进行统一安装
安装好以后修改一下数据库配置文件 /etc/my.cnf 中的最大连接数,否则连接太多,默认值不够用,在文件的最后一行添加如下字符串:
然后启动数据库实例
启动好以后在 /var/log/mysqld.log 日志文件中搜索 password 关键字,找到 MySQL 的初始密码,存储密码的字段大概这个样子,初次登陆的时候会被强制修改这个密码。
2022-06-30T21:17:24.373611Z 6 [Note] [MY-010454] [Server] A temporary password is generated for [email protected]: qPWHk<Rgh1lq
- 1.
数据库启动好以后,接下来我们就可以初始化数据库了,一共两个步骤,一个是创建库和用户,另一个是导入 SQL 文件。 先创建数据库和用户:
[[email protected] ~]# msyql -uroot -pqPWHk<Rgh1lq
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewMysqlRootPasswrod';
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix_server'@'%' identified by 'ZBX_SER_PSW';
mysql> grant all privileges on zabbix.* to 'zabbix_server'@'%';
mysql> quit;
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
接下来我们下载 Zabbix Server 的源码文件,因为数据库初始化脚本在源码文件中,
解压这个压缩文件,然后进入到目录下,把 schema.sql、images.sql、data.sql 3 个文件导入即可。
[[email protected] <sub>]# cd database/mysql/
[[email protected] </sub>]# mysql -uzabbix_server -p zabbix < schema.sql
[[email protected] <sub>]# mysql -uzabbix_server -p zabbix < images.sql
[[email protected] </sub>]# mysql -uzabbix_server -p zabbix < data.sql
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
这个时候数据库就可以使用了,我们先记录好数据库的库名、用户名、密码、IP 地址,稍后在配置 Zabbix Server 的时候会用到。
注:Zabbix Server 的数据库在实验或者其他一些不太重要的地方可以自己搭建,在企业的生产环境中建议邀请公司的 DBA 同学来搭建,我们提供初始化的 SQL 文件就好,DBA 会对数据库有一些规范的要求以及适当的调优,这些对我们是有利的。如果没有 DBA 支持的话,那就自己来吧。所以本文中并不涉及任何的数据库优化项目。
准备编译环境
接下来在 192.168.1.11 上进行编译部署 Zabbix Server。 CentOS 7 默认安装了 MariaDB 的 lib 包,我们因为要统一使用 MySQL,所以先卸载掉这个包。
接下来安装编译需要的工具
其中 net-snmp-devel 是监控使用 snmp 的时候要用的,如果不需要可以不安装。 其中 unixODBC unixODBC-devel mysql-connector-odbc freetds 是通过 ODBC 监控数据库使用的,如果不需要可以不安装。 接下来创建目录结构
安装好这些编译依赖创建好部署目录以后,下载 Zabbix 源码包。
解压压缩包
接下来进入目录开始编译:
如果需要可以添加下边的编译选项
-
--with-net-snmp 监控中要使用 snmp -
--enable-java 监控中要使用 Java 的 JMX -
--with-unixodbc=/usr/bin/odbc_config 要通过 ODBC 监控数据库。
编译好了会提示如下,如果没有那就是编译有问题,解决遇到的问题就好。
接下来执行 make install ,等待执行结束就可以了,执行结束整个编译过程就结束了。
修改 Zabbix Server 配置
编译好以后配置文件是在 /opt/zabbix-server/etc/zabbix_server.conf ,修改这个文件,将上边的数据库的 IP 地址、数据库名称、数据库的用户名和密码配置进去,就基本可以了。
zabbix_server.conf 还有很多地方可以调整,这个后边有时间再看。
配置好配置文件以后,添加一个 /usr/lib/systemd/system/zabbix-server.service 文件,这个文件用来启动、重启 Zabbix Server。
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/opt/zabbix-server/etc/zabbix_server.conf"
Type=forking
Restart=on-failure
PIDFile=/opt/zabbix-server/run/zabbix_server.pid
KillMode=control-group
ExecStart=/opt/zabbix-server/sbin/zabbix_server -c $CONFFILE
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
安装 Zabbix Web
由于 Zabbix Web 页面是使用 PHP 写的,所以需要一个 PHP,并且需要 Nginx 进行代理,把页面放出去。由于 Zabbix 需要一个大于 7.2.5 小于 8.0 的版本,所以我们安装 PHP 7.4.30,这是 7.x 最新的版本。 这个版本可以在官网下载源码包进行编译安装,但是为了方便,我们使用 yum 进行安装,这个时候需要一个 yum 源,我们安装 remi 的 yum 源,里边包含最新的 PHP 安装包,默认的源只能安装 5.4.16 的 PHP。
执行 yum list |grep php74 就可以找到可以用的 PHP 7.4.30 和相应的各种扩展。
接下来我们安装
安装好以后启动 PHP,
启动以后将 Zabbix 源码中的 UI 文件拷贝到对应的目录下就可以。
接下来修改 PHP 的配置文件,配置文件 /etc/opt/remi/php74/php.ini
其中 date.timezone 的注释要打开,修改为 date.timezone = "Asia/Shanghai" ,其余参数参考
https://www.zabbix.com/documentation/6.0/en/manual/installation/frontend 进行修改。 修改好系统的 PHP 配置文件以后,再修改 Zabbix 的 Web 配置文件,先将模板文件重命名,使得可以在后边使用。
修改 zabbix.conf.php ,其实主要就是配置数据库的链接信息,Zabbix Server 的信息在 6.0 存储在了数据库中,不需要在进行配置了,如下
到这里 Zabbix Web 就配置好了。 解析来下载一个 Nginx ,把这段配置加到 Nginx 中,并且启动 Zabbix 。
server{
listen 80;
server_name zabbix.erdong.site;
root /opt/zabbix-web/frontends/;
location /
{
try_files $uri $uri/ /index.php?$args;
}
location <sub> ^(.+.php)(.*)$ {
fastcgi_split_path_info ^(.+.php)(.*)$;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_buffer_size 128k;
fastcgi_buffers 32 32k;
fastcgi_connect_timeout 1200;
fastcgi_read_timeout 1200;
fastcgi_send_timeout 1200;
}
location </sub>* ^.+\.(ico|gif|jpg|jpeg|png|html|css|htm|bmp|js|svg)$ {
root /opt/zabbix-web/frontends/;
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
到现在 Zabbix Server 6.0 就配置好了,做好域名的映射以后就可以通过 http://zabbix.erdong.site/zabbix/index.php 进行访问了
开启 HA 功能
上边我们只是配置了单点的 Zabbix Server,接下我们开双点,做成 HA 。 首先我们在 192.168.1.12 是编译安装 Zabbix Server,和在 192.168.1.11 上的一样,但是不需要安装 Zabbix Web。 然后修改 Zabbix Server 的配置文件在 zabbix_server.conf 配置文件中去掉 HANodeName 和 NodeAddress 参数的注释,配置上名称就可以了。
在 Master 192.168.1.11 机器上添加
在 Slave 192.168.1.12 机器上添加
先重启 Master 机器,然后重启 Slave ,这样配置就生效了, 我们就可以在页面看到 HA Cluster 是启动的。

使用 zabbix_server 命令还可以看到当前的状态。
[[email protected] sbin]# ./zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:
# ID Name Address Status Last Access
1. cl50nx5ou0001jaryp82xvfya Erdong-1-11 192.168.1.11:10051 active 0s
2. cl50nxaq10001lzrzkcn9wwbq Erdong-1-12 192.168.1.12:10051 standby 3s
[[email protected] sbin]#
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
然后我们测试一下,关闭 Master 机器,然后在进行查看:
[[email protected] sbin]# ./zabbix_server -R ha_status
Failover delay: 60 seconds
Cluster status:
# ID Name Address Status Last Access
1. cl50nx5ou0001jaryp82xvfya Erdong-1-11 192.168.1.11:10051 stopped 2m 37s
2. cl50nxaq10001lzrzkcn9wwbq Erdong-1-12 192.168.1.12:10051 active 3s
[[email protected] sbin]#
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
在页面上也可以看到已经切换了。

接着把 Master 起来,从页面上没有看到变化。但是实际上后边已经是 2 台机器了。

到这里 HA 也配置好了,Zabbix Proxy 和 Zabbix Agent 对 HA 的 Zabbix Server 只要把两个 Server 的地址都配置上就好,用逗号隔开就行。
边栏推荐
- 数字信号处理——线性相位型(Ⅱ、Ⅳ型)FIR滤波器设计(2)
- be based on. NETCORE development blog project starblog - (13) add friendship link function
- Based on the open source stream batch integrated data synchronization engine Chunjun data restore DDL parsing module actual combat sharing
- Quickly understand what the compressed list in redis is
- MHA high availability cluster deployment and failover of database
- GID:旷视提出全方位的检测模型知识蒸馏 | CVPR 2021
- Manage nodejs with NVM (downgrade the high version to the low version)
- SQLAlchemy在删除有外键约束的记录时,外键约束未起作用,何解?
- Topic 2612: the real topic of the 12th provincial competition of the Blue Bridge Cup in 2021 - the least weight (enumerating and finding rules + recursion)
- Ansible Playbook
猜你喜欢

【脑洞大开】《西潮》及《走向世界丛书》

Queue operation---

Circular linked list--

晓看天色暮看云,美图欣赏

logstash报错:Cannot reload pipeline, because the existing pipeline is not reloadable

Four years after graduation: work, resign, get married, buy a house

基于.NetCore开发博客项目 StarBlog - (13) 加入友情链接功能

VS Code 设置单击打开新文件窗口,不覆盖前一个窗口

Based on the open source stream batch integrated data synchronization engine Chunjun data restore DDL parsing module actual combat sharing

shell脚本导入存储过程到数据库
随机推荐
CPI tutorial - asynchronous interface creation and use
VS Code 设置代码自动保存
Router.use() requires a middleware function but got a Object
腾讯总考epoll, 很烦
Eurake partition understanding
leetcode:226. 翻转二叉树【dfs翻转】
flinkcdc要实时抽取oracle,对oracle要配置什么东西?
Topic 2612: the real topic of the 12th provincial competition of the Blue Bridge Cup in 2021 - the least weight (enumerating and finding rules + recursion)
Circular linked list--
be based on. NETCORE development blog project starblog - (13) add friendship link function
MHA high availability cluster deployment and failover of database
Teach you to complete the actual battle of image classification hand in hand -- Image Recognition Based on convolutional neural network
木架的场景功能
微信模拟地理位置_伪装微信地理位置
leetcode:226. Flip binary tree [DFS flip]
Run PowerShell script prompt "because running script is prohibited on this system" solution
Chain storage of binary tree
系统测试UI测试总结与问题(面试)
When Sqlalchemy deletes records with foreign key constraints, the foreign key constraints do not work. What is the solution?
路由基础之OSPF LSA详细讲解