1. 安装keepalived软件包

yum install -y keepalived psmisc

2.keepalived master节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
[root@kubernets-master ~]# cp /etc/keepalived/keepalived.conf{,.bak}
[root@kubernets-master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 3
router_id LVS_HAPROXY
}
vrrp_script chk_managerdown {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weigth -10
fall 2
rise 1
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eno16777728
virtual_router_id 21
priority 100
advert_int 1
garp_master_delay 1
authentication {
auth_type PASS
auth_pass TTYCPass
}
virtual_ipaddress {
172.16.111.111
}
track_script {
chk_managerdown
chk_haproxy
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

3.配置notify通知切换脚本

[root@kubernets-master ~]# vim /etc/keepalived/notify.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#/bin/bash
vip=172.16.111.111
contact='root@localhost'
notify(){
mailsubject="`hostname` to be $1: $vip floating"
mainbody="`date '+%F %H:%M:%S'`:vrrp transition,`hostname` changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}
case "$1" in
master)
notify master
#/etc/rc.d/init.d/haproxy start
/usr/bin/systemctl start haproxy
exit 0
;;
backup)
notify backup
#/etc/rc.d/init.d/haproxy stop
/usr/bin/systemctl stop haproxy
exit 0
;;
fault)
notify fault
/usr/bin/systemctl stop haproxy
exit 0
;;
*)
echo 'Usage: `basename $0` {master|backup|fault}'
exit 1
;;
esac

4.拷贝master节点配置文件、脚本到backup节点

scp /etc/keepalived/{keepalived.conf,notify.sh} root@172.16.111.100:/etc/keepalived/

5.keepalived backup节点配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[root@docker-etcd-01 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
lianjie@sharelinux.com
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 3
router_id LVS_HAPROXY
}
vrrp_script chk_managerdown {
script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
interval 1
weigth -10
fall 2
rise 1
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 1
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface eno16777728
virtual_router_id 21
priority 99
advert_int 1
garp_master_delay 1
authentication {
auth_type PASS
auth_pass TTYCPass
}
virtual_ipaddress {
172.16.111.111
}
track_script {
chk_managerdown
chk_haproxy
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

6.防火墙允许组播规则

iptables -I INPUT 5 -s 172.16.111.0/24 -d 224.0.0.18 -j ACCEPT
iptables -nvL –line

7.安装、配置postfix服务

yum install -y postfix mail
systemctl start postfix
echo ‘Test Body.’ | mail -s ‘Test Sub’ root@localhost

8.开启keepalived服务

systemctl start keepalived

9.验证

  • 验证服务状态
    systemctl status keepalived

  • 验证VIP是否存在
    ip addr show

  • 查看keepalived日志
    tail -50f /var/log/message

10.参考