4

Zabbix 6.0 源码安装以及 HA 配置

 1 year ago
source link: https://blog.51cto.com/erdong/5432497
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Zabbix 6.0 源码安装以及 HA 配置

原创

erdongx 2022-06-30 22:37:18 博主文章分类:运维 ©著作权

文章标签 mysql php 数据库 Zabbix HA 文章分类 其它 云计算 阅读数207

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 <sub>]# cd database/mysql/

[root@Erdong-1-10 </sub>]# mysql -uzabbix_server -p zabbix < schema.sql

[root@Erdong-1-10 <sub>]# mysql -uzabbix_server -p zabbix < images.sql

[root@Erdong-1-10 </sub>]# 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/zabbix
mkdir /opt/zabbix-server-6006
mkdir /opt/zabbix-server-6006/run
cd /opt
ln -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 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

安装 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 <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/;
}

}

到现在 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 机器上添加

HANodeName=Erdong-1-11
NodeAddress=192.168.1.11:10051

在 Slave 192.168.1.12 机器上添加

HANodeName=Erdong-1-12
NodeAddress=192.168.1.12:10051

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

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

Zabbix 6.0 源码安装以及 HA 配置_Zabbix

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

[root@Erdong-1-11 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
[root@Erdong-1-11 sbin]#

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

[root@Erdong-1-12 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
[root@Erdong-1-12 sbin]#

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

Zabbix 6.0 源码安装以及 HA 配置_HA_02

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

Zabbix 6.0 源码安装以及 HA 配置_HA_03

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK