注意

  • 不需要修改默认源
  • 全程需要以root身份执行
  • 目前只能在虚拟机或实体机安装,docker中暂时还有问题

安装

1
2
3
4
apt-cache search keepalived
keepalived - Failover and monitoring daemon for LVS clusters

apt-get install keepalived

安装完成,会生成/etc/keepalived/目录,该目录是keepalived的配置文件目录。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
A=$(ps -C nginx --no-header |wc -l)
if [ "$A" -eq 0 ]
then
systemctl start nginx
sleep 2
A2=$(ps -C nginx --no-header |wc -l)
if [ "$A2" -eq 0 ]
then
killall keepalived
fi
fi

主配置

  • ifconfig 查看网卡名称和ip
  • vim /etc/keepalived/keepalived.conf
1
vi /etc/keepalived/keepalived.conf
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
58
59
60
61
62
63
64
65
66
67
68
69
70
# 全局配置
global_defs {
notification_email {
chensz@xxx.com
}
notification_email_fromchensz@xxx.com
smtp_server 192.168.140.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# 严格遵守vrrp协议,下面这些功能将会禁止:1. 0 VIP 2. unicast(单播) peers 3. vrrp 版本2的ipv6功能
vrrp_strict
# 小数类型,单位秒,在一个网卡上每组gratuitous arp消息之间的延迟时间,默认为0,一个发送的消息=n组 arp报文
vrrp_garp_interval 0
# 小数类型,单位秒, 在一个网卡上每组na消息之间的延迟时间,默认为0
vrrp_gna_interval 0
}

vrrp_script check_nginx_alive {

script "/usr/bin/check_nginx_alive.sh"
# 检查时间间隔
interval 2
# 脚本执行失败则优先级减10
weight -10
# 表示两次失败才算失败
fall 2
}

# 定义实例
vrrp_instance VI_1 {
state MASTER
interface ens32
# 指定VRRP实例ID,范围是0-255.同一个组要一致
virtual_router_id 51
priority 100
# 指定发送VRRP通告的间隔。单位是秒。
advert_int 1
# 指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)。密码" 最多8位
authentication {
auth_type PASS
auth_pass 1111
}
# 设备之间使用的虚拟ip地址
virtual_ipaddress {
192.168.140.222
}
# 执行脚本
track_script {
check_nginx_alive
}
}

virtual_server 192.168.140.222 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP

real_server 192.168.140.210 80 {
weight 1
TCP_CHECK{
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

备配置

1
vim /etc/keepalived/keepalived.conf
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
58
59
60
61


# 全局配置
global_defs {
notification_email {
chensz@xxx.com
}
notification_email_from chensz@xxx.com
smtp_server 192.168.140.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# 严格遵守vrrp协议,下面这些功能将会禁止:1. 0 VIP 2. unicast(单播) peers 3. vrrp 版本2的ipv6功能
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_script check_nginx_alive {
script "/usr/bin/check_nginx_alive.sh"
interval 3
weight -10
fall 2
}
# 定义实例
vrrp_instance VI_1 {
state BACKUP
interface ens160
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.140.222
}
track_script {
check_nginx_alive
}
}

virtual_server 192.168.140.222 80 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP

real_server 192.168.140.213 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

1
2
systemctl enable keepalived
systemctl start keepalived

注意

新版本

1
ip a 

查看网卡,只会存在 主master 可以看到 虚拟vip

1
2
tail -500f /var/log/syslog | grep Keepalived
cat /var/log/syslog | grep Keepalived