LVS+keepalived
keepalived背景
针对LVS的辅助工具,主要提供故障切换与健康检查。
工作场景:作为调度器的双机热备,以及节点服务器的健康检查以及故障切换(删除条目)。
借鉴了VRRP协议来实现高可用。
keepalived部署
拓扑
两台调度器之间实现高可用并实现对web服务器的健康状态检查,web服务器之间做一个负载均衡。
两台调度器的配置
准备前奏
添加或关闭防火墙,内核安全机制也要关闭
关闭NetworkManager
该服务如果不关闭,漂移IP无法进行漂移
安装keepalived并进行配置
安装后先设置为开机自启
systemctl disable keepalived
拷贝配置文件:在/etc/keepalived/keepalived
配置文件详解
全局配置部分
global_defs {
notification_email {
该模块表示当keep发生切换操作后需要发送Email通知,以及发送给哪些邮件地址
acassen@firewall.loc
具体的邮件地址,每行一个
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
该行定义了发送警报邮件的发送者是谁(发件人)
smtp_server 192.168.200.1
表示可以用那台服务器的邮件服务发送邮件,通常可以使用127.0.0.1也就是本机提供该服务。
smtp_connect_timeout 30
连接stmp服务的超时时间
router_id LVS_DEVEL
机器标识:区分不同服务器的标识,对实际的服务的运行不产生影响,邮件服务快速定位
vrrp_skip_check_adv_addr
不对master的宣告地址做检查,宽松的运行keepalived
vrrp_strict
启用该项是除非恰当设置网络,否则不允许单播通信。
vrrp_garp_interval 0
定期宣告IP地址所有权,当设置为0时仅在切换后做宣告
vrrp_gna_interval 0
}
vrrp实例部分
vrrp_instance VI_1 {
实例名称,一个服务器可以有多个实例(应用场景)后面会写。
state MASTER
确定初始状态的角色
在vrrp的选举循环中的init位置
interface eth0
承载VIP的网卡,以自己为准
virtual_router_id 51
每一个实例都必须用相同的VRID才能加入到同一个热备组。
priority 100
因为VRRP采用优先级做选举master依据范围(0~255)0保留,255(IP地址拥有者)
advert_int 1
master的宣告报文间隔,以秒为单位(告诉其他backup)master还活着。
authentication {
当其他的实例想要加入该热备组需要进行密码认证。
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
虚拟VIP地址:每一个虚拟vip就代表着一个群集
192.168.200.16
192.168.200.17
192.168.200.18
}
}
虚拟服务器部分
virtual_server 192.168.200.100 443 {
与实例中的VIP对应,是一个群集的开始
delay_loop 6
健康检查的时间间隔
lb_algo rr
调度算法
rr|wrr|lc|wlc|lblc|sh|dh
lb_kind NAT
工作模式
DR TUN NET
persistence_timeout 50
持久超时(会话保持,在50秒内来自同一个IP的请求会被转发到同一个服务器上)
protocol TCP
健康检查用的协议
real_server 192.168.201.100 443 {
后端真实服务器的IP地址以及端口
weight 1
该真实服务器的权重
SSL_GET {
健康检查的方法
-
- 5:SMTP_CHECK:用来检测邮件服务的smtp的
- 5:SMTP_CHECK:用来检测邮件服务的smtp的
url {
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_port 80
健康检查的端口
connect_timeout 3
健康检查的连接超时时间
nb_get_retry 3
超时后重试的次数
delay_before_retry 3
重试次数之间的间隔
}
}
}
配置文件中需要改动的地方
#vrrp_strict
将不允许单播注释
根据需要可以设为不同的标识
router_id LVS_01
state MASTER
根据拓扑需求设置为不同的角色
interface ens33
根据实际需要选择合适的网卡承载VIP
virtual_router_id 51
确保同一个热备组中的实例的id一致
priority 100
优先级越高越优先
virtual_ipaddress { 192.168.10.172 }
选择虚拟ip
virtual_server 192.168.10.172 80 { delay_loop 6 lb_algo rr lb_kind DR nat_mask 255.255.255.0 ! persistence_timeout 50 protocol TCP real_server 192.168.10.103 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } }
修改成合适的IP地址,选择健康检查方式,将会话保持功能关闭方便后期测试。
在调度器内核中加入相关参数
net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0
关闭内核的重定向功能,
最后开启keepalived
从服务器也要进行相关设置
web服务器处理
两台服务器分别用lo:0去承载VIP,并且在内核中添加相关参数。
net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2
最后在web网页文档目录下设置相关参数进行测试,分别down掉调度器与web服务器看是否能正常访问。
复制全部到xmind即可形成条理性笔记,图片复制不过去请单独粘贴!