zabbix监控高可用脑裂的部署
部署agentd
我们要用zabbix监控必须要把zabbix_agentd部署在备节点上面用zabbix服务端监控备节点。
实验需要准备三台机器
实验环境:
系统信息 | 主机 | IP |
---|---|---|
centos8 | master | 192.168.171.141 |
centos8 | slave(部署agent) | 192.168.171.13 |
centos8 | 部署了zabbix服务的主机 | 192.168.171.136 |
本次实验需要关闭所有主机的防火墙和selinux
部署备节点
//在备节点主机上创建zabbix用户
[root@slave ~]# useradd -rMs /sbin/nologin zabbix
//然后下载zabbix的源码包wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.2.tar.gz
[root@slave ~]# ls
anaconda-ks.cfg zabbix-6.2.2.tar.gz
//如果没有下载依赖包是编译不成功的
[root@slave zabbix-6.2.2]# yum -y install make pcre-devel openssl gcc gcc-c++
//然后解压包进入解压目录然后编译agent(注意这里只编译agent)
[root@slave ~]# tar xf zabbix-6.2.2.tar.gz
[root@slave ~]# ls
anaconda-ks.cfg zabbix-6.2.2 zabbix-6.2.2.tar.gz
[root@slave ~]# cd zabbix-6.2.2
[root@slave zabbix-6.2.2]# ./configure --enable-agent
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
[root@slave zabbix-6.2.2]# make
[root@slave zabbix-6.2.2]# make install
//修改配置文件
[root@slave ~]# vim /usr/local/etc/zabbix_agentd.conf
…………
Server=192.168.171.136 //服务端主机ip
…………
ServerActive=192.168.171.136 //agent主动模式
…………
Hostname=zabbix //zabbix系统内主机名
//启动服务
[root@slave ~]# zabbix_agentd
[root@slave ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:22
写监控脚本
[root@slave scripts]# ls
check_keepalived.sh notify.sh
[root@slave scripts]# cat check_keepalived.sh
#!/bin/bash
if [ `ip a show ens33 |grep 192.168.171.250|wc -l` -ne 0 ];then
echo "1"
else
echo "0"
fi
[root@slave scripts]# chmod +x check_keepalived.sh
//修改配置文件
[root@slave zabbix-6.2.2]# cd /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_keepalived,/bin/bash /scripts/check_keepalived.sh
[root@slave zabbix-6.2.2]# pkill zabbix
[root@slave zabbix-6.2.2]# zabbix_agentd
//再去zabbix服务端测试一下
[root@localhost ~]# zabbix_get -s 192.168.171.13 -k check_keepalived
0
[root@localhost ~]#
添加监控项
这里就可以看到有数据产生了,但是此时还没有配置触发器
添加触发器
添加邮件触发媒介
qq邮箱必须添加白名单
模拟脑裂
//此时可以看到主节点还是主节点,那我们把路由id改掉模拟脑裂
[root@master ~]# curl http://192.168.171.250
master
[root@master ~]# curl http://192.168.171.250
master
//把备节点上的路由id改成和主节点不一样的
[root@slave ~]# vim /etc/keepalived/keepalived.conf
virtual_router_id 50 //主备路由id不同,产生脑裂
//此时可以看主节点和备节点都有vip
[root@slave ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:22:9f:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.171.13/24 brd 192.168.171.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.171.250/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe22:9f4e/64 scope link
valid_lft forever preferred_lft forever
[root@slave ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:10050 0.0.0.0:*
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@slave ~]#
[root@master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:b4:ea:df brd ff:ff:ff:ff:ff:ff
inet 192.168.171.141/24 brd 192.168.171.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.171.250/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feb4:eadf/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@master ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
[root@master ~]#