详解keepalived配置和使用
! Configuration File for keepalived
global_defs { #指定keepalived在发生切换时需要发送email到的对象,一行一个
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
smtp_server 192.168.200.1 #指定smtp服务器地址
smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #每个keepalived节点的唯一标识,建议设置为当前主机名,并且多个节点重名时是不受影响的;
vrrp_skip_check_adv_addr #与vrrp_strict同时设置时可禁止iptables规则的生成,注释或者无vrrp_strict时可不加此项。
vrrp_strict #表示严格遵守VRRP协议,启用此项后以下状况将无法启动服务
vrrp_garp_interval 0 #可设置ARP接口之间发送免费报文的延迟时间,可以精确到毫秒,默认是0;
vrrp_gna_interval 0 #设置非请求消息的发送延迟时间,默认为0;
}
#模块可配置虚拟路由器,它包含以下内容:
vrrp_instance VI_1 { #1.模块后面的STRING为VRRP的实例名,一般设置为业务名称;
state MASTER #2.可设置此虚拟路由器的初始状态,可选择MASTER或者BACKUP;
interface eth0 #3.可以绑定当前虚拟路由器所使用的物理接口,如eth0、bond0和br0等,可以和VIP地址不在同一张网卡上;
virtual_router_id 51 #可设置每个虚拟路由器的唯一标识,取值范围为0-255,每个虚拟路由器的该项值必须是唯一的,否则无法启动服务,并且同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一;
priority 100 #可设置当前物理节点在此虚拟路由器中的优先级,优先级取值范围为1-254,值越大优先级越高,每个keepalived节点取值不同;
advert_int 1 #可设置VRRP通告的时间间隔,默认为1秒
authentication { #可设置认证机制,由以下两部分构成,1.auth_type为认证类型,可选择AH和PASS两种,AH为IPSC互联网安全协议认证,PASS为简单密码认证,推荐PASS认证.2.auth_pass为预共享秘钥设置,仅前8位有效,同一虚拟路由器的多个keepalived节点auth_pass值必须保持一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #可添加虚拟路由器的VIP,并可设置VIP对应的子网掩码、网卡和标签等,生产中可能会在同一个虚拟路由器上添加上百个VIP,不同的VIP分行隔开,不指定网卡时默认添加在eth0上,不设置子网掩码时默认为32位。在添加VIP地址时,需确保将要使用的VIP不存在,即还没被使用。
192.168.200.16
192.168.200.17
192.168.200.18
}
}
# virtual_server模块用于虚拟服务器配置,将虚拟路由器中添加的VIP与后端real server对应起来,该模块包括以下内容:
#1.virtual_server后面需要跟上VIP地址和端口,即客户端是通过哪一个VIP和哪个端口向后端服务器发起访问;
#2.delay_loop:检查后端服务器的时间间隔;
#3.lb_algo:可定义调度算法,如rr、wrr、lc、wlc、lblc、sh和dh等;
#4.lb_kind:可定义集群的类型,如NAT、DR和TUN,注意要使用大写;
#5.persistence_timeout:可设置持久连接时长;
#6.protocol:可指定服务协议,如TCP、UDP和SCTP,一般使用TCP;
#7.sorry_server:可设置当所有后端服务器都不可用时的备用服务器地址;
virtual_server 192.168.200.100 443 {
delay_loop 6 #2.健康检查时间间隔(实际并不一定完全是6秒,测试结果是小于6秒的随机值?)
lb_algo rr #3.调度算法rr|wrr|lc|wlc|lblc|sh|dh
lb_kind NAT #负载均衡转发规则NAT|DR|RUN,可定义集群的类型,如NAT、DR和TUN,注意要使用大写;
persistence_timeout 50 #会话保持时间
protocol TCP #可指定服务协议,如TCP、UDP和SCTP,一般使用TCP;
#8.real_server:设置VIP所对应的后端服务器IP和端口,包括以下构成部分
#8.1 weight可以设置对应后端服务器的权重
#8.2 SSL_GET、HTTP_GET、TCP_CHECK、SMTP_CHECK和MISC_CHECK等可以定义当前后端主机的健康状况检查方法
#8.3 connect_timeout表示客户端连接超时时长
#8.4 nb_get_retry表示重试次数
#8.5 delay_before_retry表示重试之前的延迟时长
real_server 192.168.201.100 443 {
weight 1 #默认为1,0为失效
SSL_GET {
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.2 1358 {
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 {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}