Centos7 部署 Zabbix 5.4 高可用集群

2021-10-09 16:30:14 浏览数 (1)

Zabbix 是一个企业级分布式开源监控解决方案,能够监控各种网络设备、服务器、中间件和应用程序等等。Zabbix 支持主动轮询(polling)和被动捕获(trapping)两种方式获取数据。Zabbix 所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问,并且提供了完善的 API 接口便于二次开发。

Zabbix 有以下几个主要组件:

  • Zabbix Server:是 Zabbix 软件的核心组件,Zabbix Agent 向其报告可用性、系统完整性信息和统计信息。
  • Zabbix Web:通过 Apache HTTP 运行,提供前端的访问页面。
  • Zabbix Proxy(可选):Zabbix Proxy 可以代替 Zabbix Server 收集客户端的数据,然后把数据汇报给 Zabbix Server,以减轻 Zabbix Server 的负担,本文中没有安装 Zabbix Proxy。
  • Zabbix Agent:部署在需要监控的服务器上,主动监控本地资源和应用程序,并将收集到的数据上报给 Zabbix Server(或 Zabbix Proxy)。
  • 数据库存储:存储所有的配置信息以及 Zabbix 收集到的数据。数据库使用外部已经部署好的 MySQL 高可用集群。

目前 Zabbix 最新的稳定版本是 5.4,然而官方 yum 源只支持在 Centos8 上安装 Zabbix 5.4 版本,想要在 Centos7 上安装 Zabbix 5.4 版本上只能通过源码编译的方式安装。本文将会介绍在 Centos7 上通过源码编译安装的方式部署一套 Zabbix 高可用集群。

部署架构图

机器规划

主机名

IP地址

角色

ydt-net-zabbix1

11.8.38.70:80

Zabbix Web 主

ypt-net-zabbix2

11.8.38.100:80

Zabbix Web 备

ydt-net-zabbix1

11.8.38.70:10051

Zabbix Server 主

ypt-net-zabbix2

11.8.38.100:10051

Zabbix Server 备

11.8.38.208:80

Zabbix 虚拟 IP

11.17.6.81:4442

MySQL 虚拟 IP

准备工作

安装 PHP

Zabbix 5.4 版本要求 PHP 版本在 7.2 以上。

卸载旧版本 PHP:

代码语言:javascript复制
yum remove php-*

安装 7.2 版本 PHP:

代码语言:javascript复制
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y php72w php72w-opcache  php72w-xml  php72w-gd php72w-devel php72w-mysqlnd  php72w-intl    php72w-mbstring   php72w-pear  php72w-pdo  php72w-fpm  php72w-bcmath 

安装 Golang

Zabbix 前端服务依赖 Golang。

代码语言:javascript复制
rpm --import https://mirror.go-repo.io/centos/RPM-GPG-KEY-GO-REPO
curl -s https://mirror.go-repo.io/centos/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
yum install golang
go env -w GOPROXY=https://goproxy.cn

安装依赖

代码语言:javascript复制
 yum install -y gcc mysql-devel net-snmp-devel pcre*
 curl-devel libxml2 libxml2-devel 
 automake libssh2-devel libevent-devel httpd libcurl-devel.x86_64 
 kernel-devel openssl-devel popt-devel

部署 MySQL

MySQL 安装可以参考 MySQL Keepalived 双主热备搭建

注意 Zabbix 要求数据库版本在 5.7.35 以上,并且 database 字符集要求是 utf8,校验集为 utf8_bin。

创建 database 指定字符集。

代码语言:javascript复制
CREATE DATABASE `acpzabbixdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

源码编译部署 Zabbix

下载并解压源码包

代码语言:javascript复制
wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.4.tar.gz
tar -xzvf zabbix-5.4.4.tar.gz
cd zabbix-5.4.4

编译安装

代码语言:javascript复制
./configure --prefix=/usr/local/zabbix 
--enable-server 
--enable-agent 
--with-mysql 
--with-libcurl 
--with-net-snmp 
--with-libxml2 
--with-ssh2 
--enable-webservice

make install

部署 Zabbix Server

创建用户和相关目录
代码语言:javascript复制
useradd zabbix
mkdir /usr/local/zabbix/logs
mkdir /usr/local/zabbix/trap
chown -R zabbix.zabbix /usr/local/zabbix/
Zabbix Server 配置文件

编辑 /usr/local/zabbix/etc/zabbix_server.conf 文件:

代码语言:javascript复制
#Zabbix Server 地址
SourceIP=11.8.38.70

#日志文件目录
LogFile=/usr/local/zabbix/logs/zabbix_server.log
#Pid 文件目录
PidFile=/usr/local/zabbix/zabbix_server.pid
#Socket 文件目录
SocketDir=/usr/local/zabbix

#数据库连接信息
DBHost=11.17.6.81
DBPort=4442
DBName=acpzabbixdb
DBUser=acpzabbixdb
DBPassword=yourpassword

Timeout=4
LogSlowQueries=3000

#允许所有地址访问
StatsAllowedIP=0.0.0.0

#配置缓存
CacheSize=1G

#snmp trap 目录
SNMPTrapperFile=/usr/local/zabbix/trap/zabbix_traps
#开启 snmp trap
StartSNMPTrapper=1

#拉取 snmp 信息的线程数
StartProxyPollers=20

Zabbix Server 备机配置和主机除了 SourceIP 以外,其余配置一样。

初始化数据库

SQL 文件在源码解压后的目录 zabbix-5.4.4/database/ 中,执行以下命令初始化数据库。初始化数据库只需要做一次,Zabbix Server 备机和主机共用一个 MySQL 数据库。

代码语言:javascript复制
mysql -h 11.17.6.81 -P 4442 -uacpzabbixdb -pyourpassword acpzabbixdb < schema.sql
mysql -h 11.17.6.81 -P 4442 -uacpzabbixdb -pyourpassword acpzabbixdb < images.sql
mysql -h 11.17.6.81 -P 4442 -uacpzabbixdb -pyourpassword acpzabbixdb < data.sql
配置 Zabbix Server 系统服务

编辑 /usr/lib/systemd/system/zabbix-server.service 文件:

代码语言:javascript复制
[Unit]
Description=Zabbix Server
After=network.target

[Service]
User=zabbix
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
Type=forking
Restart=on-failure
PIDFile=/usr/local/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target

启动 Zabbix Server,并设置开机自动启动。

代码语言:javascript复制
systemctl enable zabbix-server.service 
systemctl start zabbix-server.service 

查看 Zabbix Server 状态,Running 表示正常运行:

代码语言:javascript复制
root@ydt-net-zabbix1:/root/zabbix-5.4.4/database #systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2021-09-13 11:27:14 CST; 3min 23s ago
  Process: 18685 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=0/SUCCESS)
  Process: 18688 ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
 Main PID: 18690 (zabbix_server)
   CGroup: /system.slice/zabbix-server.service
           ├─18690 /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
           ├─18692 /usr/local/zabbix/sbin/zabbix_server: configuration syncer [synced configuration in 0.055682 sec, idle 60 sec]
           ├─18693 /usr/local/zabbix/sbin/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.006520 sec during 5.006634 sec]
           ├─18694 /usr/local/zabbix/sbin/zabbix_server: alerter #1 started
           ├─18695 /usr/local/zabbix/sbin/zabbix_server: alerter #2 started
           ├─18696 /usr/local/zabbix/sbin/zabbix_server: alerter #3 started
           ├─18697 /usr/local/zabbix/sbin/zabbix_server: preprocessing manager #1 [queued 0, processed 2 values, idle 5.000761 sec during 5.000817 sec]
           ├─18698 /usr/local/zabbix/sbin/zabbix_server: preprocessing worker #1 started
           ├─18699 /usr/local/zabbix/sbin/zabbix_server: preprocessing worker #2 started
           ├─18700 /usr/local/zabbix/sbin/zabbix_server: preprocessing worker #3 started
           ├─18701 /usr/local/zabbix/sbin/zabbix_server: lld manager #1 [processed 0 LLD rules, idle 5.954542sec during 5.954592 sec]
           ├─18702 /usr/local/zabbix/sbin/zabbix_server: lld worker #1 started
           ├─18703 /usr/local/zabbix/sbin/zabbix_server: lld worker #2 started
           ├─18704 /usr/local/zabbix/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
           ├─18705 /usr/local/zabbix/sbin/zabbix_server: timer #1 [updated 0 hosts, suppressed 0 events in 0.001053 sec, idle 59 sec]
           ├─18706 /usr/local/zabbix/sbin/zabbix_server: http poller #1 [got 0 values in 0.000933 sec, idle 5 sec]
           ├─18707 /usr/local/zabbix/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000936 sec, idle 60 sec]
           ├─18708 /usr/local/zabbix/sbin/zabbix_server: history syncer #1 [processed 0 values, 0 triggers in 0.000021 sec, idle 1 sec]
           ├─18709 /usr/local/zabbix/sbin/zabbix_server: history syncer #2 [processed 2 values, 2 triggers in 0.002352 sec, idle 1 sec]
           ├─18710 /usr/local/zabbix/sbin/zabbix_server: history syncer #3 [processed 0 values, 0 triggers in 0.000012 sec, idle 1 sec]
           ├─18711 /usr/local/zabbix/sbin/zabbix_server: history syncer #4 [processed 0 values, 0 triggers in 0.000022 sec, idle 1 sec]
           ├─18712 /usr/local/zabbix/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.001885 sec, idle 3 sec]
           ├─18713 /usr/local/zabbix/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000037 sec, idle 5 sec]
           ├─18714 /usr/local/zabbix/sbin/zabbix_server: self-monitoring [processed data in 0.000017 sec, idle 1 sec]
           ├─18715 /usr/local/zabbix/sbin/zabbix_server: task manager [processed 0 task(s) in 0.003206 sec, idle 5 sec]
           ├─18716 /usr/local/zabbix/sbin/zabbix_server: poller #1 [got 0 values in 0.000026 sec, idle 5 sec]
           ├─18717 /usr/local/zabbix/sbin/zabbix_server: poller #2 [got 0 values in 0.000054 sec, idle 5 sec]
           ├─18718 /usr/local/zabbix/sbin/zabbix_server: poller #3 [got 0 values in 0.000018 sec, idle 5 sec]
           ├─18719 /usr/local/zabbix/sbin/zabbix_server: poller #4 [got 0 values in 0.000014 sec, idle 5 sec]
           ├─18720 /usr/local/zabbix/sbin/zabbix_server: poller #5 [got 0 values in 0.000067 sec, idle 5 sec]
           ├─18721 /usr/local/zabbix/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000040 sec, idle 5 sec]
           ├─18722 /usr/local/zabbix/sbin/zabbix_server: trapper #1 [processed data in 0.000706 sec, waiting for connection]
           ├─18723 /usr/local/zabbix/sbin/zabbix_server: trapper #2 [processed data in 0.000486 sec, waiting for connection]
           ├─18724 /usr/local/zabbix/sbin/zabbix_server: trapper #3 [processed data in 0.000538 sec, waiting for connection]
           ├─18725 /usr/local/zabbix/sbin/zabbix_server: trapper #4 [processed data in 0.000475 sec, waiting for connection]
           ├─18726 /usr/local/zabbix/sbin/zabbix_server: trapper #5 [processed data in 0.000536 sec, waiting for connection]
           ├─18727 /usr/local/zabbix/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000017 sec, idle 5 sec]
           ├─18728 /usr/local/zabbix/sbin/zabbix_server: alert syncer [queued 0 alerts(s), flushed 0 result(s) in 0.001174 sec, idle 1 sec]
           ├─18729 /usr/local/zabbix/sbin/zabbix_server: history poller #1 [got 0 values in 0.000039 sec, idle 1 sec]
           ├─18730 /usr/local/zabbix/sbin/zabbix_server: history poller #2 [got 1 values in 0.000109 sec, idle 1 sec]
           ├─18731 /usr/local/zabbix/sbin/zabbix_server: history poller #3 [got 1 values in 0.000163 sec, idle 1 sec]
           ├─18732 /usr/local/zabbix/sbin/zabbix_server: history poller #4 [got 0 values in 0.000140 sec, idle 1 sec]
           ├─18733 /usr/local/zabbix/sbin/zabbix_server: history poller #5 [got 0 values in 0.000150 sec, idle 1 sec]
           └─18734 /usr/local/zabbix/sbin/zabbix_server: availability manager #1 [queued 0, processed 0 values, idle 5.005236 sec during 5.005267 sec]

部署 Zabbix Web

拷贝前端文件

Zabbix 前端是 PHP 编写的,所以必须运行在支持 PHP 的 Web 服务器上,使用 Apache HTTP 作为 Web 服务器。

建议使用子目录替代 HTML 根目录。可以使用下列命令,以创建一个子目录并复制 Zabbix 的前端文件到这个目录下。

代码语言:javascript复制
mkdir -p /var/www/html/zabbix
cp -a zabbix-5.4.4/ui/* /var/www/html/zabbix/
配置 PHP 文件

编辑 /var/www/html/zabbix/conf/zabbix.conf.php 文件:

代码语言:javascript复制
<?php
//MySQL 连接信息
$DB['TYPE']                             = 'MYSQL';
$DB['SERVER']                   = '11.17.6.81';
$DB['PORT']                             = '4442';
$DB['DATABASE']                 = 'acpzabbixdb';
$DB['USER']                             = 'acpzabbixdb';
$DB['PASSWORD']                 = 'yourpassword';

// Schema name. Used for PostgreSQL.
$DB['SCHEMA']                   = '';

// Used for TLS connection.
$DB['ENCRYPTION']               = false;
$DB['KEY_FILE']                 = '';
$DB['CERT_FILE']                = '';
$DB['CA_FILE']                  = '';
$DB['VERIFY_HOST']              = false;
$DB['CIPHER_LIST']              = '';

// Vault configuration. Used if database credentials are stored in Vault secrets manager.
$DB['VAULT_URL']                = '';
$DB['VAULT_DB_PATH']    = '';
$DB['VAULT_TOKEN']              = '';

// Use IEEE754 compatible value range for 64-bit Numeric (float) history values.
// This option is enabled by default for new Zabbix installations.
// For upgraded installations, please read database upgrade notes before enabling this option.
$DB['DOUBLE_IEEE754']   = true;

#Zabbix Server 信息
$ZBX_SERVER                             = 'localhost';
$ZBX_SERVER_PORT                = '10051';
$ZBX_SERVER_NAME                = 'ACP-ZABBIX-SERVER-1';

$IMAGE_FORMAT_DEFAULT   = IMAGE_FORMAT_PNG;

Zabbix Web 备机部署的配置以及步骤和主机的一样,只是修改 /var/www/html/zabbix/conf/zabbix.conf.php 为

代码语言:javascript复制
$ZBX_SERVER_NAME                = 'ACP-ZABBIX-SERVER-2';

便于我们识别主机和备机。

启动 Apache HTTP 服务,设置开机自动启动
代码语言:javascript复制
systemctl start httpd
systemctl enable httpd

查看 HTTP 服务状态,running 表示正常运行:

代码语言:javascript复制
root@ydt-net-zabbix1:/usr/local/zabbix/sbin #systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2021-09-13 11:05:30 CST; 39min ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 16648 (httpd)
   Status: "Total requests: 781; Current requests/sec: 0.3; Current traffic: 716 B/sec"
   CGroup: /system.slice/httpd.service
           ├─16648 /usr/sbin/httpd -DFOREGROUND
           ├─16649 /usr/sbin/httpd -DFOREGROUND
           ├─16651 /usr/sbin/httpd -DFOREGROUND
           ├─16741 /usr/sbin/httpd -DFOREGROUND
           ├─16749 /usr/sbin/httpd -DFOREGROUND
           ├─16751 /usr/sbin/httpd -DFOREGROUND
           ├─16752 /usr/sbin/httpd -DFOREGROUND
           ├─16879 /usr/sbin/httpd -DFOREGROUND
           ├─17012 /usr/sbin/httpd -DFOREGROUND
           ├─17209 /usr/sbin/httpd -DFOREGROUND
           └─18772 /usr/sbin/httpd -DFOREGROUND

浏览器输入 http://11.8.38.70/zabbix 访问 Zabbix Web 界面。默认用户名 Admin,密码 zabbix 。

部署 Keepalived

下载并解压安装包
代码语言:javascript复制
wget https://www.keepalived.org/software/keepalived-2.2.4.tar.gz
tar -xzvf keepalived-2.2.4.tar.gz
安装 Keepalived
代码语言:javascript复制
mkdir /usr/local/keepalived
mkdir /etc/keepalived
cd keepalived-2.2.4
./configure --prefix=/usr/local/keepalived
make && make install
Keepalived 配置文件
主 Zabbix Keepalived 配置

编辑 /etc/keepalived/keepalived.conf 文件:

代码语言:javascript复制
global_defs { 
     router_id acp_zabbix_server                 # 负载均衡标识,在局域网内应该是唯一的
}

vrrp_script check_zabbix {                               # 配置虚拟脚本
   script "/etc/keepalived/check_zabbix.sh"              # 执行脚本,检查 zabbix 服务是否存活
    interval 3                                           # 脚本执行间隔:秒
}

# vrrp_instance 
vrrp_instance v_zabbix { 
   state MASTER                                # 指定该 keepalived 节点的初始状态(MASTER|BACKUP)  
   interface eth0                               # VRRP 实例绑定的网口,用于发送 VRRP 包
   virtual_router_id 200                    # 路由 ID,范围是 0-255,主备都一样
   priority 100                                   # 指定优先级,优先级高的将成为 MASTER
   advert_int 1                                  # 指定发送 VRRP 广播的间隔。单位是秒
authentication {                               # 身份验证
   auth_type PASS                          # 指定认证方式
  auth_pass 123456                       # 指定认证所使用的密码 ,主备都一样
}

track_script {                               # 调用"vrrp_script"的脚本
    check_zabbix                           # 增加一个跟踪脚本到网口上
}

virtual_ipaddress {                     # 虚拟 IP
    11.8.38.208/24 
    } 
}

编辑 /etc/keepalived/check_zabbix.sh,设置主 Zabbix 健康检查脚本,当主 Zabbix 服务状态异常时,切换虚拟 IP 到备 Zabbix 上。

代码语言:javascript复制
#!/bin/bash
#检查 Zabbix Server 服务
systemctl status zabbix-server &>/dev/null
if [ $? -ne 0 ];then
    echo -e "`date " %F  %H:%M:%S"` 主机名: `hostname` Zabbix Server 服务异常,keepalived 切换" >> /usr/local/zabbix/logs/check_zabbix.log
    exit 1
else
   #检查 Zabbix Web 服务
   systemctl status httpd &>/dev/null
   if [ $? -ne 0 ];then
        echo -e "`date " %F  %H:%M:%S"` 主机名: `hostname` Zabbix Web 服务异常,keepalived 切换" >> /usr/local/zabbix/logs/check_zabbix.log
        exit 1
   else
      exit 0
   fi
exit 0
fi

为脚本赋予可执行权限:

代码语言:javascript复制
chmod  x /etc/keepalived/check_zabbix.sh
备 Zabbix Keepalived 配置

编辑 /etc/keepalived/keepalived.conf 文件:

代码语言:javascript复制
global_defs { 
      router_id acp_zabbix_server                # 负载均衡标识,在局域网内应该是唯一的
}

# vrrp_instance 
vrrp_instance v_zabbix { 
   state BACKUP                                 # 指定该 keepalived 节点的初始状态(MASTER|BACKUP)
   interface eth0                                        # VRRP 实例绑定的网口,用于发送 VRRP 包
   virtual_router_id 200                                   # 路由ID,范围是0-255,主备都一样
   priority 90                                             # 指定优先级,优先级高的将成为 MASTER
   advert_int 1                                            # 指定发送VRRP广播的间隔。单位是秒

authentication {                                     # 身份验证
   auth_type PASS                                          # 指定认证方式
   auth_pass 123456                                       # 指定认证所使用的密码 ,主备都一样
}

notify_master /etc/keepalived/notify_zabbix.sh # 转换成 master 时,执行的脚本
virtual_ipaddress { 
    11.8.38.208/24 
   } 
}

编辑 /etc/keepalived/notify_zabbix.sh,当 Zabbix 发送主备切换时,发送告警通知。

代码语言:javascript复制
#!/bin/bash
echo -e "`date " %F  %H:%M:%S"` Zabbix 发生主备切换" >> /usr/local/zabbix/logs/notify_zabbix.log

为脚本赋予可执行权限:

代码语言:javascript复制
chmod  x /etc/keepalived/notify_zabbix.sh
启动 Keepalived,并设置开机自动启动。
代码语言:javascript复制
systemctl enable keepalived
systemctl start keepalived
高可用验证

浏览器访问 Zabbix Web,可以看到此时访问的是 ACP-ZABBIX-SERVER-1。

现在 keepalived 虚拟 IP 在 ydt-net-zabbix1 服务器上。

代码语言:javascript复制
root@ydt-net-zabbix1:/etc/keepalived #ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 28:6e:d4:88:e3:33 brd ff:ff:ff:ff:ff:ff
    inet 11.8.38.70/24 brd 11.8.38.255 scope global eth0
       valid_lft forever preferred_lft forever
    #虚拟 IP
    inet 11.8.38.208/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::2a6e:d4ff:fe88:e333/64 scope link 
       valid_lft forever preferred_lft forever

停止 ydt-net-zabbix1 上的 Zabbix Server 服务,模拟故障:

代码语言:javascript复制
systemctl stop zabbix-server

查看 keepalived 状态,显示已经移除了本机的虚拟 IP。

代码语言:javascript复制
root@ydt-net-zabbix1:/etc/keepalived #systemctl status keepalived.service 
● keepalived.service - LVS and VRRP High Availability Monitor
   Loaded: loaded (/usr/lib/systemd/system/keepalived.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2021-09-13 14:17:29 CST; 1min 47s ago
     Docs: man:keepalived(8)
           man:keepalived.conf(5)
           man:genhash(1)
           https://keepalived.org
  Process: 52720 ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 52721 (keepalived)
   CGroup: /system.slice/keepalived.service
           ├─52721 /usr/local/keepalived/sbin/keepalived -D
           └─52722 /usr/local/keepalived/sbin/keepalived -D

Sep 13 14:17:38 ydt-net-zabbix1 Keepalived_vrrp[52722]: Sending gratuitous ARP on eth0 for 11.8.38.208
Sep 13 14:17:38 ydt-net-zabbix1 Keepalived_vrrp[52722]: Sending gratuitous ARP on eth0 for 11.8.38.208
Sep 13 14:17:38 ydt-net-zabbix1 Keepalived_vrrp[52722]: Sending gratuitous ARP on eth0 for 11.8.38.208
Sep 13 14:17:38 ydt-net-zabbix1 Keepalived_vrrp[52722]: Sending gratuitous ARP on eth0 for 11.8.38.208
Sep 13 14:17:38 ydt-net-zabbix1 Keepalived_vrrp[52722]: Sending gratuitous ARP on eth0 for 11.8.38.208
Sep 13 14:19:08 ydt-net-zabbix1 Keepalived_vrrp[52722]: Script `check_zabbix` now returning 1
Sep 13 14:19:08 ydt-net-zabbix1 Keepalived_vrrp[52722]: VRRP_Script(check_zabbix) failed (exited with status 1)
Sep 13 14:19:08 ydt-net-zabbix1 Keepalived_vrrp[52722]: (v_zabbix) Entering FAULT STATE
Sep 13 14:19:08 ydt-net-zabbix1 Keepalived_vrrp[52722]: (v_zabbix) sent 0 priority
Sep 13 14:19:08 ydt-net-zabbix1 Keepalived_vrrp[52722]: (v_zabbix) removing VIPs.

此时虚拟 IP 已经偏移到 ydt-net-zabbix2 上了。

代码语言:javascript复制
root@ydt-net-zabbix2:/etc/keepalived #ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 28:6e:d4:88:e3:34 brd ff:ff:ff:ff:ff:ff
    inet 11.8.38.100/24 brd 11.8.38.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 11.8.38.208/24 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::2a6e:d4ff:fe88:e334/64 scope link 
       valid_lft forever preferred_lft forever

浏览器刷新页面,可以看到此时访问的是 ACP-ZABBIX-SERVER-2。

部署 Zabbix Agent

Zabbix Agent 用于收集服务器的监控数据(CPU,内存等等)发送给 Zabbix Server,在部署 Zabbix Server 的服务器上部署 Zabbix Agent 监控自己。

Zabbix Agent 配置文件

编辑 /usr/local/zabbix/etc/zabbix_agentd.conf 文件:

代码语言:javascript复制
#Pid 文件目录
PidFile=/usr/local/zabbix/zabbix_agentd.pid
#Zabbix Agent 日志目录
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
#允许所有地址访问
Server=0.0.0.0/0
#Zabbix Server 地址,由于Zabbix Server 服务器和 Zabbix Agent 在一台机器上,因此用 127.0.0.1 通信即可
ServerActive=127.0.0.1
Hostname=Zabbix server

配置 Zabbix Agent 系统服务

编辑 /usr/lib/systemd/system/zabbix-agentd.service 文件:

代码语言:javascript复制
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
User=zabbix
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target

启动 Zabbix Server,并设置开机自动启动。

代码语言:javascript复制
systemctl enable zabbix-agentd.service 
systemctl start zabbix-agentd.service 

查看 Zabbix Agent 主机信息:

参考资料

  • [官网 Zabbix 5.4 版本源码安装] (https://www.zabbix.com/documentation/current/manual/installation/install)
  • [zabbix ha 官方推荐高可用集群] (https://blog.z0ukun.com/?p=3632)
  • [Zabbix-5.4安装_实操文档] (https://www.jianshu.com/p/ad4bcd9ffeeb)

0 人点赞