在阿里云上搭建 LVS(Linux Virtual Server)需要注意云环境的特殊性。关键限制是:云上 VPC 网络不支持标准的 VIP(虚拟 IP)漂移(如 ARP 广播),因此传统的 LVS + Keepalived 主备模式无法直接工作。

但你可以通过以下两种在阿里云可行的方式实现 LVS 负载均衡:
方案一:使用单臂模式(LVS-NAT)进行二层转发(官方推荐替代方案)
这是云上最符合逻辑的方式,因为不需要 VIP 漂移,LVS 作为网关,后端 Real Server 将默认网关指向 LVS 内网 IP。
架构:
- 客户端 → LVS(1台或2台,每台独立绑定公网IP) → Real Server(多台,内网IP,网关指向LVS内网IP)

配置步骤(以 CentOS 为例):
1、安装 ipvsadm
yum install -y ipvsadm
2、开启 IP 转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
3、配置 LVS 规则(在 LVS 主机上执行)
# 假设 LVS 内网IP:10.0.0.1,Real Server内网IP:10.0.0.2, 10.0.0.3 ipvsadm -A -t 公网IP:80 -s rr # rr 为轮询算法 ipvsadm -a -t 公网IP:80 -r 10.0.0.2:80 -m # -m 表示NAT模式 ipvsadm -a -t 公网IP:80 -r 10.0.0.3:80 -m
4、配置 iptables 做 SNAT(源地址转换,让Real Server回包经过LVS)

iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 10.0.0.1
5、Real Server 配置
- 安装 Web 服务(如 Nginx)
将默认网关修改为 LVS 的内网 IP(10.0.0.1)
- 关闭 ARP 响应问题(可选,但通常不需要,因为 NAT 模式不涉及子网内 VIP)
6、高可用处理(可选)
- 你可以再买一台 LVS 主机,同样绑定一个独立公网 IP + 内网 IP。
- 客户端通过 DNS 轮询或全局负载均衡(如阿里云 DNS 解析 + 健康检查)来访问两个 LVS 的公网 IP。
不要尝试使用 Keepalived 做 VIP 漂移,VPC 下不会成功。
方案二:使用 DR 模式 + 辅助弹性网卡(进阶,适用于极端高性能场景)
DR 模式需要 VIP 绑定在一张网卡上,但云上 VPC 不允许纯 ARP 抢夺,不过你可以通过在 LVS 主机上额外绑定一张弹性网卡(ENI),并把 VIP 配置在弹性网卡上来模拟。
架构:
- 客户端 → LVS(一台或两台,每台有主IP + 浮动VIP,通过弹性网卡实现) → Real Server(多台,配置VIP回包)
关键步骤:
1、为 LVS 主机创建弹性网卡
- 在阿里云控制台为 LVS 主机创建辅助弹性网卡,分配一个内网 IP 作为 VIP(10.0.0.10)。
- 绑定到 LVS 主机。
注意:这个 VIP 不能让两台 LVS 同时拥有,否则冲突。 因此你需要“手动切换”或者用 DNS 绑定到其中一台,故障时手动将弹性网卡转移到另一台主机。
2、在 LVS 主机上配置 IP
ip addr add 10.0.0.10/24 dev eth1 # 辅助网卡设备名
3、配置 LVS 规则(DR 模式)
ipvsadm -A -t VIP:80 -s rr ipvsadm -a -t VIP:80 -r 10.0.0.2:80 -g # -g 表示DR模式 ipvsadm -a -t VIP:80 -r 10.0.0.3:80 -g
4、Real Server 配置
- 在 lo 网卡上配置 VIP(抑制 ARP)
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce ip addr add 10.0.0.10/32 dev lo
5、高可用情况
- 你需要购买的是弹性网卡资源,故障时手动将弹性网卡从一台 LVS 解绑,绑定到另一台,自动化可用阿里云 API 或使用 terraform。
优缺点: 性能高(直接二层转发),但运维复杂,切换需要几秒到几十秒,不推荐初学者。
如果你只是想做云上的四层负载均衡,阿里云官方 SLB(Server Load Balancer) 是最省心、高可用的选择。
| 方案 | 成本 | 维护难度 | 故障切换速度 | 适用场景 |
| 阿里云 SLB | 按量或包年包月(有独立公网IP和SLB资源费) | 极低 | 秒级自动切换 | 绝大多数业务 |
| LVS-NAT 单臂 | 只需主机费用,SLB费用省了 | 中等 | 需DNS或手动干预 | 省钱、自定义策略、学习实验 |
| LVS-DR + 弹性网卡 | 主机费用+弹性网卡小计 | 较高 | 手动数秒至分钟 | 追求极限性能但不愿用SLB |
新项目/生产环境:强烈推荐直接用阿里云 SLB,它本身就是基于类似 LVS 的技术,并且免运维。
实验/学习/特殊要求(如自定义调度算法、必须自己控制转发逻辑):使用方案一(LVS-NAT 单臂),关掉 Keepalived 的 VIP 功能,用 DNS 轮询或前端加一台 Nginx 反代做简单切换。
不要尝试在云上标准 Keepalived VIP 漂移,那会浪费大量排错时间。
如果你需要具体的安全组配置(SLB 白名单、Real Server 只接受 LVS 流量),可以继续追问。
文章摘自:https://idc.huochengrm.cn/zj/26444.html
评论