CentOS 7 系统下 LVS 集群部署指南
LVS 基础概念
LVS(Linux Virtual Server)是 Linux 内核实现的负载均衡集群系统,通过 IP 负载均衡技术将网络请求分发至后端多台真实服务器(Real Server),提升服务可用性与处理能力,其核心组件包括 调度器(Director) 和 真实服务器(RS),支持多种调度算法(如轮询 RR、加权轮询 WRR 等)。

环境准备与规划
在部署前需明确以下配置:
- 节点角色:1 台 Director(192.168.1.100)、2 台 RS(192.168.1.101/102),所有节点运行 CentOS 7 系统。
- 网络拓扑:Director 配置双网卡,内网网卡(eth1)用于连接 RS,外网网卡(eth0)对外提供服务;RS 仅需单网卡(eth0)连接内网。
- 软件依赖:确保所有节点内核版本 ≥ 3.10(CentOS 7 默认满足),并关闭防火墙
systemctl stop firewalld及 SELinuxsetenforce 0。
安装与配置 LVS 调度器(Director)
-
安装 ipvsadm 工具:
yum install -y ipvsadm
-
配置 Director 双网卡:
编辑/etc/sysconfig/network-scripts/ifcfg-eth0(外网):DEVICE=eth0 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8
编辑
/etc/sysconfig/network-scripts/ifcfg-eth1(内网):DEVICE=eth1 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static IPADDR=192.168.2.100 NETMASK=255.255.255.0
-
启用 IP 转发:
修改/etc/sysctl.conf,添加:net.ipv4.ip_forward = 1
执行
sysctl -p生效。
-
配置虚拟服务:
使用ipvsadm创建虚拟 IP(VIP)与服务规则:# 清空现有规则 ipvsadm -C # 添加虚拟服务(以 HTTP 为例,端口 80) ipvsadm -A -t 192.168.1.100:80 -s wrr # 虚拟服务地址 + 端口,调度算法为加权轮询 # 添加真实服务器(权重均为 1) ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.101:80 -g # 直接路由模式(DR) ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.102:80 -g # 保存规则 service ipvsadm save
配置真实服务器(RS)
-
设置回环接口 VIP:
在每台 RS 上创建虚拟 IP(与 Director 的 VIP 一致),编辑/etc/sysconfig/network-scripts/ifcfg-lo:0:DEVICE=lo:0 IPADDR=192.168.1.100 NETMASK=255.255.255.255 ONBOOT=yes
启动接口:
ifup lo:0,验证ip addr show lo:0。 -
调整 ARP 抑制:
防止 RS 响应 ARP 广播(避免与 Director 冲突),编辑/etc/sysctl.conf:net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2
执行
sysctl -p生效。 -
启动 Web 服务(示例):
安装 Nginx 并启动:
yum install -y nginx systemctl start nginx echo "RS1" > /usr/share/nginx/html/index.html # 区分 RS
测试与验证
-
访问 VIP 测试:
从客户端浏览器访问http://192.168.1.100,观察是否交替显示 RS1/RS2 内容(若使用 RR 算法)。 -
查看连接状态:
在 Director 上执行ipvsadm -L -n,确认 RS 列表及连接状态:IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.1.100:80 wrr -> 192.168.2.101:80 Route 1 5 0 -> 192.168.2.102:80 Route 1 5 0
常见问题与解决方案
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 客户端无法访问 VIP | 防火墙未关闭 | 所有节点执行 systemctl stop firewalld |
| RS 无流量分配 | 调度器规则错误 | 检查 ipvsadm -L -n 规则是否正确 |
| RS 响应 ARP 广播冲突 | 未配置 ARP 抑制 | 确保 net.ipv4.conf.all.arp_ignore=1 |
FAQs
Q1:为什么选择 DR 模式而非 NAT?
A:DR 模式(直接路由)性能更高,因数据包无需经过 Director 转发,仅修改 MAC 地址,适合高并发场景;NAT 模式虽配置简单,但易成为瓶颈。
Q2:如何动态添加/删除 RS?
A:使用 ipvsadm 命令动态操作:
- 添加 RS:
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.103:80 -g - 删除 RS:
ipvsadm -d -t 192.168.1.100:80 -r 192.168.2.103:80
操作后无需重启服务,即时生效。
通过以上步骤,即可在 CentOS 7 环境下完成 LVS 集群的稳定部署,实现服务的高可用与负载均衡。