一、Keepalive
1. Keepalive概述
代理服务器和调度器都是单点模式,Keepalive是一种实现LVS调度器实现高可用集群的架设,以提高节点的冗余和容错。
Keepalive是一种基于VRRP协议实现的调度器高可用方案,为了实现LVS的集群而设计开发,但是适用场景不仅局限于LVS。Keepalive会为后台服务做健康检查,服务不可用时,会自动移除IPVS的转发策略,服务恢复时会自动把策略重新加入IPVS中。
Keepalive可以实现以下功能:
- 主备切换。
- 故障检测和恢复。
- 主备设备通过组播地址224.0.0.18通信。
- 通过配置VIP来实现集群入口。
2. Keepalive工作原理
- 主备调度器的权重不同,通过VIP来访问调度器集群。
- 当主调度器故障,备用调度器会接替成为主服务器。通过VIP访问后端服务器,也就成为通过该调度器来进行访问。
- 当故障恢复,两台调度器会通过组播地址进行通信,比较权重。此时原先的主调度器会正常工作,通过VIP访问也就是通过该调度器进行访问。
二、Keepalive具体架设
1. 调度器部署
-
两台调度器上都安装ipvsadm和keepalived软件包。
apt -y install ipvsadm keepalived
-
复制Keepalive配置文件模板。
cp /usr/share/doc/keepalived/samples/keepalived.conf.sample /etc/keepalived/keepalived.conf
-
配置keepalived.conf文件。
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_01vrrp_iptables }vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1virtual_ipaddress {192.168.1.100} }virtual_server 192.168.1.100 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 0protocol TCPreal_server 192.168.1.129 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.1.130 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}} }
-
将keepalived.conf配置文件从主调度器发送给备用调度器,并将备用调度器的文件做出如下修改。
router_id LVS_01 state BACKUP priority 50
-
保存文件后,分别在两台调度器上重启keepalived服务。
systemctl restart keepalived
-
配置系统内核文件/etc/sysctl.conf。
net.ipv4.ip_forward = 0net.ipv4.conf.all.send_redirects = 0net.ipv4.conf.default.send_redirects = 0net.ipv4.conf.ens37.send_redirects = 0
-
应用内核配置,使其生效。
sysctl -p
-
检查ipvsadm策略、VIP是否正常显示。
2. 后端服务器部署
-
配置两台后端服务器的网卡。
# 第一台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.100/24]# 第二台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.100/24]
-
保存文件后,应用网卡配置。
netplan apply
-
在两台服务器上配置静态路由。
route add -host 192.168.1.100 dev ens37
-
配置系统的内核文件/etc/sysctl.conf。
net.ipv4.conf.ens37.arp_ignore = 1 net.ipv4.conf.ens37.arp_announce = 2
-
应用内核配置,使其生效。
sysctl -p
-
开启两台后端服务器的Nginx服务。
systemctl restart nginx
3. 客户端访问测试
- 访问VIP地址,查看是否能够获取到网页内容。
4. 调度器宕机测试
-
在主调度器上关闭keepalived访问。
systemctl stop keepalived
-
查看两台调度器的网络信息,检查VIP是否发生了转移。
ip address
-
再次通过客户端访问VIP,查看是否能够获取到网页内容。