写点什么

Zabbix 6.0 源码安装以及 HA 配置

作者:耳东@Erdong
  • 2022 年 7 月 17 日
  • 本文字数:5430 字

    阅读完需:约 18 分钟

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
复制代码


如果需要安装其他版本的 MySQL 版本,可以在 MySQL 的归档地址 https://downloads.mysql.com/archives/community/  中选择版本进行下载。


下载上边 MySQL 8.0.28 的 8 个软件依赖包到指定目录,然后使用 yum 进行统一安装


yum install mysql-community-*
复制代码


安装好以后修改一下数据库配置文件 /etc/my.cnf 中的最大连接数,否则连接太多,默认值不够用,在文件的最后一行添加如下字符串:


max_connections=1000
复制代码


然后启动数据库实例


systemctl start mysqld
复制代码


启动好以后在 /var/log/mysqld.log 日志文件中搜索 password 关键字,找到 MySQL 的初始密码,存储密码的字段大概这个样子,初次登陆的时候会被强制修改这个密码。


2022-06-30T21:17:24.373611Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qPWHk<Rgh1lq
复制代码


数据库启动好以后,接下来我们就可以初始化数据库了,一共两个步骤,一个是创建库和用户,另一个是导入 SQL 文件。


先创建数据库和用户:


[root@Erdong-1-10 ~]# 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;
复制代码


接下来我们下载 Zabbix Server 的源码文件,因为数据库初始化脚本在源码文件中,


wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.6.tar.gz
复制代码


解压这个压缩文件,然后进入到目录下,把 schema.sql、images.sql、data.sql 3 个文件导入即可。


[root@Erdong-1-10 ~]# cd database/mysql/
[root@Erdong-1-10 ~]# mysql -uzabbix_server -p zabbix < schema.sql
[root@Erdong-1-10 ~]# mysql -uzabbix_server -p zabbix < images.sql
[root@Erdong-1-10 ~]# mysql -uzabbix_server -p zabbix < data.sql
复制代码


这个时候数据库就可以使用了,我们先记录好数据库的库名、用户名、密码、IP 地址,稍后在配置 Zabbix Server 的时候会用到。


注:Zabbix Server 的数据库在实验或者其他一些不太重要的地方可以自己搭建,在企业的生产环境中建议邀请公司的 DBA 同学来搭建,我们提供初始化的 SQL 文件就好,DBA 会对数据库有一些规范的要求以及适当的调优,这些对我们是有利的。如果没有 DBA 支持的话,那就自己来吧。所以本文中并不涉及任何的数据库优化项目。

准备编译环境

接下来在 192.168.1.11 上进行编译部署 Zabbix Server。


CentOS 7 默认安装了 MariaDB 的 lib 包,我们因为要统一使用 MySQL,所以先卸载掉这个包。


yum remove mariadb-libs
复制代码


接下来安装编译需要的工具


yum install libxml2 libxml2-devel  net-snmp-devel libevent-devel curl-devel unixODBC  unixODBC-devel mysql-connector-odbc freetds
复制代码


其中 net-snmp-devel 是监控使用 snmp 的时候要用的,如果不需要可以不安装。


其中 unixODBC  unixODBC-devel mysql-connector-odbc freetds 是通过 ODBC 监控数据库使用的,如果不需要可以不安装。


接下来创建目录结构


mkdir /var/log/zabbixmkdir /opt/zabbix-server-6006mkdir /opt/zabbix-server-6006/runcd /optln -s zabbix-server-6006 zabbix-server
复制代码


安装好这些编译依赖创建好部署目录以后,下载 Zabbix 源码包。


wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.6.tar.gz
复制代码


解压压缩包


tar -zxf zabbix-6.0.6.tar.gz -C ~/
复制代码


接下来进入目录开始编译:


cd ~/zabbix-6.0.6
./configure --prefix=/opt/zabbix-server-6006 --enable-server --with-mysql --with-libcurl --with-libxml2
复制代码


如果需要可以添加下边的编译选项


  • --with-net-snmp 监控中要使用 snmp

  • --enable-java 监控中要使用 Java 的 JMX

  • --with-unixodbc=/usr/bin/odbc_config 要通过 ODBC 监控数据库。


编译好了会提示如下,如果没有那就是编译有问题,解决遇到的问题就好。


************************************************************            Now run 'make install'                       **                                                         **            Thank you for using Zabbix!                  **              <http://www.zabbix.com>                    ************************************************************
复制代码


接下来执行 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 ServerAfter=syslog.targetAfter=network.target
[Service]Environment="CONFFILE=/opt/zabbix-server/etc/zabbix_server.conf"Type=forkingRestart=on-failurePIDFile=/opt/zabbix-server/run/zabbix_server.pidKillMode=control-groupExecStart=/opt/zabbix-server/sbin/zabbix_server -c $CONFFILEExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -SIGTERM $MAINPIDRestartSec=10sTimeoutSec=0LimitNOFILE=100000
[Install]WantedBy=multi-user.target
复制代码

安装 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。


rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
复制代码


执行 yum list |grep php74 就可以找到可以用的 PHP 7.4.30 和相应的各种扩展。


接下来我们安装


yum install php74 php74-php-gd php74-php-pdo php74-php-mysql php74-php-xml php74-php-ldap php74-php-bcmath php74-php-fpm php74-php-mbstring 
复制代码


安装好以后启动 PHP,


systemctl start php74-php-fpm
复制代码


启动以后将 Zabbix 源码中的 UI 文件拷贝到对应的目录下就可以。


mkdir /opt/zabbix-web-6006/frontends/cd /opt/ln -s zabbix-web-6006 zabbix-web
cp -r ~/zabbix-6.0.6/ui /opt/zabbix-web/frontends/zabbix
复制代码


接下来修改 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 配置文件,先将模板文件重命名,使得可以在后边使用。


cd /opt/zabbix-web/frontends/zabbix/conf
mv zabbix.conf.php.example zabbix.conf.php
复制代码


修改 zabbix.conf.php ,其实主要就是配置数据库的链接信息,Zabbix Server 的信息在 6.0 存储在了数据库中,不需要在进行配置了,如下


$DB['TYPE']                     = 'MYSQL';$DB['SERVER']                   = '192.168.1.10';$DB['PORT']                     = '0';$DB['DATABASE']                 = 'zabbix';$DB['USER']                     = 'zabbix_server';$DB['PASSWORD']                 = 'ZBX_SER_PSW';

$ZBX_SERVER_NAME = 'Erdong Zabbix 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 ~ ^(.+.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 ~* ^.+\.(ico|gif|jpg|jpeg|png|html|css|htm|bmp|js|svg)$ {       root           /opt/zabbix-web/frontends/;   }   }
复制代码


到现在 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 配置文件中去掉 HANodeNameNodeAddress 参数的注释,配置上名称就可以了。


在 Master 192.168.1.11 机器上添加


HANodeName=Erdong-1-11NodeAddress=192.168.1.11:10051
复制代码


在 Slave 192.168.1.12 机器上添加


HANodeName=Erdong-1-12NodeAddress=192.168.1.12:10051
复制代码


先重启 Master 机器,然后重启 Slave ,这样配置就生效了,


我们就可以在页面看到 HA Cluster 是启动的。


使用 zabbix_server 命令还可以看到当前的状态。


[root@Erdong-1-11 sbin]# ./zabbix_server -R ha_statusFailover delay: 60 secondsCluster 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[root@Erdong-1-11 sbin]# 
复制代码


然后我们测试一下,关闭 Master 机器,然后在进行查看:


[root@Erdong-1-12 sbin]# ./zabbix_server -R ha_statusFailover delay: 60 secondsCluster 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[root@Erdong-1-12 sbin]#
复制代码


在页面上也可以看到已经切换了。


接着把 Master 起来,从页面上可以看到和之前一样,而且后端已经是 2 台机器了。


到这里 HA 也配置好了,Zabbix Proxy 和 Zabbix Agent 对 HA 的 Zabbix Server 只要把两个 Server 的地址都配置上就好,用逗号隔开就行。


另外现在 Zabbix 已经发布了 6.2.0 版本,安装上应该区别不大,可以直接使用。

发布于: 11 小时前阅读数: 6
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Zabbix 6.0 源码安装以及 HA 配置_zabbix_耳东@Erdong_InfoQ写作社区