提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Linux Virtual Server(LVS)作为Linux内核自带的负载均衡组件,凭借其高效的数据包转发机制、丰富的调度算法(如轮询、加权轮询、最小连接数等)以及良好的兼容性,成为构建负载均衡集群的优选基础。然而,单纯的LVS架构存在明显短板:作为负载入口的调度器本身若发生故障,将导致整个集群服务瘫痪,形成新的“单点瓶颈”。Keepalived的出现恰好弥补了这一缺陷,它基于VRRP(虚拟路由冗余协议)实现了服务器的故障检测与自动切换,能够在调度器发生异常时,快速将虚拟IP(VIP)漂移至备用节点,确保服务入口的连续性。
LVS与Keepalived的组合架构,通过“负载均衡+故障自愈”的双重保障,构建了一套低成本、高可靠的集群解决方案,广泛应用于电商交易、金融支付、政务服务等对可用性要求严苛的场景。本文将围绕该集群架构的核心原理、部署配置、性能优化等关键内容展开探讨,为技术从业者搭建高可用服务集群提供实践参考,而以下前言与总结部分,将分别梳理技术背景与核心价值,凝练实践要点与应用展望。

一、主 DR(192.168.10.12)配置

1. 基础环境准备

#关防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

#安装依赖工具(ipvsadm 用于 LVS 配置,keepalived 实现高可用) 
yum -y install ipvsadm keepalived

#加载 ip_vs 内核模块(LVS 依赖内核模块),并验证加载结果
modprobe ip_vs
cat /proc/net/ip_vs  # 输出内容即表示模块加载成功

在这里插入图片描述

2、配置 VIP 网卡(ens33:0)

#进入网卡配置目录,复制基础网卡配置文件生成 VIP 网卡配置
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0  # 以ens33为例,若网卡名不同需替换(如eth0)

#编辑 VIP 网卡配置文件(ifcfg-ens33:0)
vim ifcfg-ens33:0
#输入内容
DEVICE=ens33:0 
ONBOOT=yes 
IPADDR=192.168.10.180 
NETMASK=255.255.255.255

#启用 VIP 网卡并验证
ifup ens33:0
ifconfig ens33:0  # 查看是否显示VIP(192.168.10.180)

在这里插入图片描述

3. 内核参数优化(避免转发冲突)

#编辑内核配置文件,关闭 IP 转发和重定向,适配 LVS DR 模式
vim /etc/sysctl.conf

#添加以下内容:
net.ipv4.ip_forward = 0  # DR模式无需开启IP转发
net.ipv4.conf.all.send_redirects = 0  # 关闭所有网卡的重定向
net.ipv4.conf.default.send_redirects = 0  # 关闭默认网卡的重定向
net.ipv4.conf.ens33.send_redirects = 0  # 关闭基础网卡(ens33)的重定向

#执行命令使配置生效:
sysctl -p

在这里插入图片描述

4. 配置 Keepalived(核心高可用配置)

global_defs {
router_id LVS_01 # MASTER 为 LVS_01,BACKUP 为 LVS_02
smtp_server 127.0.0.1
}
vrrp_instance VI_1 {
state MASTER # BACKUP 节点写 BACKUP
interface ens33
virtual_router_id 10
priority 100 # MASTER 高于 BACKUP
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
}
}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置 Web 节点

systemctl stop firewalld
setenforce 0
yum -y install httpd
systemctl start httpd
echo 'this is kgc web!' > /var/www/html/index.html # 192.168.10.16
echo 'this is benet web!' > /var/www/html/index.html # 192.168.10.17
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255
service network restart
ifup lo:0
route add -host 192.168.10.180 dev lo:0
vim /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

测试

  1. 客户端访问 VIP:
http://192.168.10.180/
  1. 停掉 MASTER Keepalived:
systemctl stop keepalived

观察 BACKUP 节点接管 VIP 是否成功。
再启动 MASTER,观察 VIP 是否回归(抢占或非抢占模式)。

总结

LVS+Keepalived高可用集群架构通过组件间的协同互补,有效解决了传统单节点服务的性能瓶颈与单点故障问题,构建了“高效分发+可靠冗余”的服务支撑体系,其核心价值与实践要点可总结为以下三方面。
首先,架构的核心优势在于“分工明确、协同高效”。LVS作为底层负载调度核心,依托内核态转发机制实现了高并发请求的快速分发,结合不同调度算法可适配多样业务场景——如加权轮询适用于服务器性能不均的场景,最小连接数适用于请求处理时长差异较大的业务;Keepalived则作为高可用保障组件,通过VRRP协议实时监控主备调度器的运行状态,利用心跳检测与优先级机制实现了VIP的秒级漂移,确保故障切换过程对用户透明,将服务中断时间控制在毫秒级。二者的组合既保留了LVS的高性能优势,又通过Keepalived补齐了高可用短板,形成了1+1>2的技术效应。

更多推荐