脑裂简介
脑裂的产生原因
脑裂的常见解决方案
配置环境说明
角色 | IP地址 |
---|---|
zabbix server | 192.168.10.40 |
备keepalived zabbix anget | 192.168.10.30 |
主 keepalived | 192.168.10.20 |
在zabbix_agent端配置备keepalived
[root@agent ~]# dnf -y install keepalived
[root@agent ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass yyyyyyyy
}
virtual_ipaddress {
192.168.10.100
}
}
virtual_server 192.168.10.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.10.20 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.10.30 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@agent ~]# systemctl start keepalived
[root@agent ~]# systemctl enable keepalived
配置主keepalived
[root@master ~]# dnf -y install keepalived
[root@master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id lb01
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass yyyyyyyy
}
virtual_ipaddress {
192.168.10.100
}
}
virtual_server 192.168.10.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.10.20 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.10.30 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
[root@master ~]# systemctl start keepalived
[root@master ~]# systemctl enable keepalived
查看vip在哪里
[root@agent ~]# 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:42:63:a3 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.30/24 brd 192.168.149.255 scope global dynamic noprefixroute ens33
valid_lft 1185sec preferred_lft 1185sec
inet6 fe80::1fcc:722e:fbf2:e519/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[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:ec:0b brd ff:ff:ff:ff:ff:ff
inet 192.168.10.20/24 brd 192.168.149.255 scope global dynamic noprefixroute ens33
valid_lft 1485sec preferred_lft 1485sec
inet 192.168.10.100/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::bab5:57cc:73a1:f92c/64 scope link noprefixroute
valid_lft forever preferred_lft forever
编写监控keppalived脚本
[root@agent ~]# mkdir /scripts
[root@agent ~]# vim /scripts/check_keepalived.sh
[root@agent ~]# cat /scripts/check_keepalived.sh
#!bin/bash
if [ `ip a show ens33 |grep 192.168.10.100|wc -l` -ne 0 ]
then
echo "1"
else
echo "0"
fi
[root@agent ~]# chmod +x /scripts/check_keepalived.sh
[root@agent ~]# chown -R zabbix.zabbix /scripts/check_keepalived.sh
测试脚本
[root@agent ~]# su - zabbix
[zabbix@agent root]$ bash /scripts/check_keepalived.sh
0
修改配置文件,将脚本写入配置文件
[root@agent ~]# vim /usr/local/etc/zabbix_agentd.conf
写入以下:
UnsafeUserParameters=1
UserParameter=check_keepalived,/bin/bash /scripts/check_keepalived.sh
[root@agent ~]# pkill zabbix
[root@agent ~]# zabbix_agentd
[root@server ~]# zabbix_get -s 192.168.10.30 -k check_keepalived
0
配置zabbixWEB界面
添加监控项,触发器,媒介请参考zabbix邮箱告警配置文章
触发验证
修改virtual_router_id两端参数配置
[root@agent ~]# vim /etc/keepalived/keepalived.conf
virtual_router_id 50
[root@master ~]# vim /etc/keepalived/keepalived.conf
interface ens33
virtual_router_id 51
priority 100
查看vip
[root@agent ~]# systemctl restart keepalived
[root@agent ~]# 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:42:63:a3 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.30/24 brd 192.168.149.255 scope global dynamic noprefixroute ens33
valid_lft 1489sec preferred_lft 1489sec
inet 192.168.10.100/32 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::1fcc:722e:fbf2:e519/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@master ~]# systemctl restart keepalived
[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:ec:0b brd ff:ff:ff:ff:ff:ff
inet 192.168.10.20/24 brd 192.168.149.255 scope global dynamic noprefixroute ens33
valid_lft 1489sec preferred_lft 1489sec
inet 192.168.10.100/32 scope global ens33
valid_lft 939sec preferred_lft 939sec
inet6 fe80::bab5:57cc:73a1:f92c/64 scope link noprefixroute
valid_lft forever preferred_lft forever