文章目录
Keepalived与LVS高可用群集部署指南
在企业级应用中,高可用性和负载均衡是确保服务稳定性的重要保障。本文将详细介绍Keepalived的工作原理、主要模块及其作用,并通过实际部署示例讲解如何使用Keepalived与LVS搭建高可用群集。
一、Keepalived的工作原理
Keepalived 是一个基于 VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)协议实现的高可用方案,主要用于解决 LVS 服务集群中的单点故障问题。在 LVS 服务集群中,通常配置一台主服务器(MASTER)和一台或多台备份服务器(BACKUP)。这些服务器对外提供统一的虚拟IP(VIP)地址。
1.1 Keepalived的工作机制
- 主备切换:主服务器会定期发送 VRRP 通告信息给备份服务器,告知其自身的正常状态。当备份服务器未收到主服务器的 VRRP 信息时,即认为主服务器故障,会自动接管虚拟IP,继续对外提供服务,从而确保服务的高可用性。
1.2 Keepalived的主要模块
Keepalived 的体系架构主要由以下三个模块组成:
- core模块:Keepalived 的核心模块,负责主进程的启动、维护,以及全局配置文件的加载和解析。
- vrrp模块:实现 VRRP 协议,用于主备切换和虚拟IP地址的管理。
- check模块:负责对后端服务器进行健康检查,常见的检查方式包括端口检查和 URL 检查。
二、LVS+Keepalived高可用群集部署
接下来,我们将通过一个实际案例,演示如何配置和部署一个基于 LVS 和 Keepalived 的高可用群集。
2.1 环境说明
- 主DR服务器:
192.168.10.80
(VIP:192.168.10.180
) - 备DR服务器:
192.168.10.23
(VIP:192.168.10.180
) - Web服务器1:
192.168.10.16
- Web服务器2:
192.168.10.17
- 客户端:
192.168.10.100
2.2 配置负载调度器
在主、备DR服务器上进行相同的配置。
-
安装必要软件并加载模块:
systemctl stop firewalld.service setenforce 0 yum -y install ipvsadm keepalived modprobe ip_vs cat /proc/net/ip_vs # 确认ip_vs模块已加载
-
配置Keepalived:
- 在
/etc/keepalived/keepalived.conf
中进行如下配置:global_defs { smtp_server 127.0.0.1 router_id LVS_01 # 主服务器为LVS_01,备服务器为LVS_02 # vrrp_strict # 注释掉此行以避免VIP无法连接 } vrrp_instance VI_1 { state MASTER # 主服务器为MASTER,备服务器为BACKUP interface ens33 virtual_router_id 10 priority 100 # 主服务器优先级为100,备服务器为90 advert_int 1 authentication { auth_type PASS auth_pass abc123 } virtual_ipaddress { 192.168.10.180 } } virtual_server 192.168.10.180 80 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP real_server 192.168.10.16 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.10.17 80 { weight 1 TCP_CHECK { connect_port 80 connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
- 在
-
配置VIP(虚拟IP):
- 编辑
/etc/sysconfig/network-scripts/ifcfg-ens33:0
:DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.180 NETMASK=255.255.255.255
- 启用虚拟网卡:
systemctl restart network ifup ens33:0
- 编辑
-
启动 ipvsadm 服务:
- 在主、备DR服务器上分别执行:
ipvsadm-save > /etc/sysconfig/ipvsadm systemctl start ipvsadm ipvsadm -C ipvsadm -A -t 192.168.10.180:80 -s rr ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.16:80 -g ipvsadm -a -t 192.168.10.180:80 -r 192.168.10.17:80 -g ipvsadm -ln # 查看配置
- 在主、备DR服务器上分别执行:
-
调整系统参数:
- 修改
/etc/sysctl.conf
关闭Linux 内核的重定向参数响应:net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens33.send_redirects = 0
- 应用配置:
sysctl -p
- 修改
2.3 配置Web节点服务器
在两台 Web 服务器上进行以下操作:
-
安装并启动HTTP服务:
systemctl stop firewalld setenforce 0 yum -y install httpd systemctl start httpd
-
配置虚拟IP:
- 编辑
/etc/sysconfig/network-scripts/ifcfg-lo:0
:DEVICE=lo:0 ONBOOT=yes IPADDR=192.168.10.180 NETMASK=255.255.255.255
- 启用虚拟网卡:
systemctl restart network ifup lo:0 route add -host 192.168.10.180 dev lo:0
- 编辑
-
调整ARP响应参数:
- 修改
/etc/sysctl.conf
,添加以下内容:net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
- 应用配置:
sysctl -p
- 修改
-
配置Web页面内容:
- 在
192.168.10.16
上执行:echo 'this is kgc web!' > /var/www/html/index.html
- 在
192.168.10.17
上执行:echo 'this is benet web!' > /var/www/html/index.html
- 在
2.4 测试与验证
- 在客户端浏览器中访问
http://192.168.10.180/
,可以看到通过LVS+Keepalived的负载均衡效果。 - 关闭主服务器的Keepalived服务后,再次访问,确保备服务器自动接管虚拟IP,继续提供服务:
systemctl stop keepalived
2.4 测试与验证
- 在客户端浏览器中访问
http://192.168.10.180/
,可以看到通过LVS+Keepalived的负载均衡效果。 - 关闭主服务器的Keepalived服务后,再次访问,确保备服务器自动接管虚拟IP,继续提供服务:
systemctl stop keepalived
通过上述步骤,您可以成功搭建一个高可用的LVS+Keepalived群集,实现企业级服务的负载均衡和故障自动切换。