linux-keepalived-配置详解

Keepalived提供通过请求一个VIP来达到请求真实IP地址的功能,而VIP能够在一台机器发生故障时候,自动漂移到另外一台机器上,从而达到了高可用HA功能

cat /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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
! Configuration File for keepalived
global_defs {
notification_email { # 配置提醒邮箱,可配置多个
admin1@163.com
admin2@163.com
}
notification_email_from warning@163.com # 收件人邮箱
smtp_server 127.0.0.1 # 邮件服务器地址
smtp_connect_timeout 30 # 连接邮箱服务器超时时间
router_id LVS_DEVEL # 路由id,每组的路由id是唯一的
vrrp_skip_check_adv_addr
vrrp_strict # 此项设置启动keepalived时会打开iptables,会默认DROP掉所有访问vip的数据包,需要清空着一条规则,命令:iptables -nL 查看规则, iptables -F 清空规则
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 {
state MASTER # 主服务器为MASTER, 从服务器为BACKUP
interface eth0 # 定义网络接口,与实际网卡关联
virtual_router_id 88 # 定义VRID号(同一组的主备必须一致)
priority 100 # 定义服务器权重(0-255, 默认100), 越大权重越高
authentication { # 定义认证信息
auth_type PASS # keepalived只支持俩中认证,这里使用第二种简单密码认证,也就是预认证
auth_pass abcd1234 # 主备节点间的认证密码(最长8位)
}
virtual_ipaddress { # 定义VIP(虚IP), 可以配置多个
172.23.6.2
172.23.6.3
}
}
virtual_server 172.23.6.2 443 { # VIP及其端口号
delay_loop 2 # 检查周期2秒
lb_atgo wrr # 常用算法(rr|wrr|lc|wlc), rr: 轮询, wrr: 加权轮询, lc: 最少连接, wlc: 加权最少连接
lb_kind NAT # 模式(NAT|DR|TUN), 常用DR,NAT
persistence_timeout 50 # 保持连接,开启后,客户端在一定时间内始终访问相同服务器, 测试环境可注释掉,生产环境开启
protocol TCP # 协议类型TCP,只支持TCP
#sorry_server 127.0.0.1:80 用于集群挂掉了,并且该调度器为MASTER时,提示的友好界面给客户机,比如提示:服务器正在维护等等友好信息...
real_server 172.23.6.200 443 { # 实际后端主机ip和端口
weight 1 # 权重值(默认为1,最小值为1),权重越大,该后端主机承受的压力越大。提示:仅仅lb_algo选择wrr|wlc时有效
SSL_GET { # 加密的https健康检查
url {
path / # 检查根下的文件
digest 640205b7b0fc66c1ea91c463fac6334d # 对比码,如加密的md5
#status_code 200 # 返回状态码为200表示OK,上一行可用这个代替,具体情况看自己的需求
}
url {
path /mrtg/ # 检查/mrtg/下的文件
digest ab0205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3 # 连接超时时间,单位秒
nb_get_retry 3 # 重复连接次数
delay_before_retry 3 # 延时3秒重连一次
}
}
real_server 172.23.6.201 443 {
......
}
}
virtual_server 172.23.6.202 8000 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET { # 普通http健康检查
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}