一、LVS概述
LVS(Linux Virtual Server)是Linux内核级别的负载均衡软件,高性能、高可用,支持多种负载均衡算法和工作模式。
风哥风哥提示:
1.1 LVS核心特性
- 内核级实现:在内核空间处理,性能极高
- 多种工作模式:NAT、DR、TUN三种模式
- 丰富调度算法:支持10种以上调度算法
- 高可用支持:配合Keepalived实现高可用
1.2 LVS工作模式
LVS工作模式对比:
┌─────────────────────────────────────────────────────┐
│ LVS-NAT模式 │
│ Client → Director(VIP) → RealServer → Director → Client │
│ 特点:RS网关指向Director,支持端口映射 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ LVS-DR模式 │
│ Client → Director(VIP) → RealServer(VIP) → Client │
│ 特点:RS直接响应客户端,性能最高 │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ LVS-TUN模式 │
│ Client → Director(VIP) → RealServer(IP Tunnel) → Client │
│ 特点:支持跨网段,适合异地部署 │
└─────────────────────────────────────────────────────┘
二、LVS安装部署
2.1 安装ipvsadm
# 安装ipvsadm
yum install -y ipvsadm
# 查看版本
ipvsadm --version
# 加载ip_vs模块
modprobe ip_vs
lsmod | grep ip_vs
# 开机自动加载
echo "ip_vs" >> /etc/modules-load.d/ipvs.conf
# 查看ipvs信息
cat /proc/net/ip_vs
# 输出示例
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
三、LVS-NAT模式配置
3.1 Director配置
# Director服务器配置
# 配置VIP
ip addr add 192.168.1.100/24 dev eth0
# 开启路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久开启
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
# 创建虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s rr
# 添加RealServer
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.101:80 -m
ipvsadm -a -t 192.168.1.100:80 -r 192.168.2.102:80 -m
# 查看规则
ipvsadm -Ln
# 保存规则
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl enable ipvsadm
3.2 RealServer配置
# RealServer配置(NAT模式)
# 配置IP地址
ip addr add 192.168.2.101/24 dev eth0
# 网关指向Director
ip route add default via 192.168.2.1
# 永久配置
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
IPADDR=192.168.2.101
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
# 启动Web服务
systemctl start nginx
systemctl enable nginx
四、LVS-DR模式配置
4.1 Director配置
# Director服务器配置(DR模式)
# 配置VIP
ip addr add 192.168.1.100/32 dev eth0:0
# 创建虚拟服务
ipvsadm -A -t 192.168.1.100:80 -s wrr
# 添加RealServer(DR模式使用-g参数)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 3
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g -w 2
# 查看规则
ipvsadm -Ln
# 输出示例
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 wrr
-> 192.168.1.101:80 Route 3 0 0
-> 192.168.1.102:80 Route 2 0 0
4.2 RealServer配置
# RealServer配置(DR模式)
# 配置VIP到lo接口
ip addr add 192.168.1.100/32 dev lo:0
# 配置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
# 永久配置
cat >> /etc/sysctl.conf << EOF
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
EOF
sysctl -p
# 添加路由
ip route add 192.168.1.100 dev lo:0
# 启动Web服务
systemctl start nginx
五、LVS调度算法
5.1 调度算法说明
| 算法 | 说明 | 适用场景 |
|---|---|---|
| rr | 轮询调度 | 服务器性能相近 |
| wrr | 加权轮询 | 服务器性能不同 |
| lc | 最少连接 | 长连接场景 |
| wlc | 加权最少连接 | 推荐使用 |
| sh | 源地址哈希 | 会话保持 |
| dh | 目标地址哈希 | 缓存服务器 |
5.2 算法配置
# 轮询调度
ipvsadm -A -t 192.168.1.100:80 -s rr
# 加权轮询
ipvsadm -A -t 192.168.1.100:80 -s wrr
# 加权最少连接
ipvsadm -A -t 192.168.1.100:80 -s wlc
# 源地址哈希
ipvsadm -A -t 192.168.1.100:80 -s sh
# 修改调度算法
ipvsadm -E -t 192.168.1.100:80 -s wlc
六、Keepalived高可用
6.1 Keepalived安装
# 安装Keepalived
yum install -y keepalived
# 配置文件
# /etc/keepalived/keepalived.conf
# Master配置
! Configuration File for keepalived
global_defs {
router_id LVS_MASTER
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 3
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
real_server 192.168.1.102 80 {
weight 2
TCP_CHECK {
connect_timeout 3
connect_port 80
}
}
}
6.2 Backup配置
# Backup配置
# /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_BACKUP
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
protocol TCP
real_server 192.168.1.101 80 {
weight 3
TCP_CHECK {
connect_timeout 3
}
}
real_server 192.168.1.102 80 {
weight 2
TCP_CHECK {
connect_timeout 3
}
}
}
# 启动服务
systemctl start keepalived
systemctl enable keepalived
七、运维命令
7.1 ipvsadm常用命令
# 查看虚拟服务
ipvsadm -Ln
# 查看连接信息
ipvsadm -Lnc
# 查看统计信息
ipvsadm -Ln --stats
# 查看速率信息
ipvsadm -Ln --rate
# 添加虚拟服务
ipvsadm -A -t VIP:PORT -s 调度算法
# 删除虚拟服务
ipvsadm -D -t VIP:PORT
# 添加RealServer
ipvsadm -a -t VIP:PORT -r RIP:PORT -g|-m|-i -w 权重
# 删除RealServer
ipvsadm -d -t VIP:PORT -r RIP:PORT
# 修改RealServer权重
ipvsadm -e -t VIP:PORT -r RIP:PORT -g -w 新权重
# 清空所有规则
ipvsadm -C
# 保存规则
ipvsadm-save > /etc/sysconfig/ipvsadm
# 恢复规则
ipvsadm-restore < /etc/sysconfig/ipvsadm
7.2 健康检查脚本
#!/bin/bash
# /usr/local/bin/lvs_health_check.sh
VIP=192.168.1.100
PORT=80
RS=("192.168.1.101" "192.168.1.102")
while true; do
for rs in ${RS[@]}; do
if curl -s --connect-timeout 3 http://${rs}:${PORT}/health > /dev/null 2>&1; then
# 检查是否已在LVS中
if ! ipvsadm -Ln | grep -q "${rs}:${PORT}"; then
ipvsadm -a -t ${VIP}:${PORT} -r ${rs}:${PORT} -g -w 1
echo "$(date) - Added ${rs} to LVS"
fi
else
# 从LVS中移除
if ipvsadm -Ln | grep -q "${rs}:${PORT}"; then
ipvsadm -d -t ${VIP}:${PORT} -r ${rs}:${PORT}
echo "$(date) - Removed ${rs} from LVS"
fi
fi
done
sleep 5
done
八、最佳实践
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 工作模式 | DR | 性能最高 |
| 调度算法 | wlc | 加权最少连接 |
| 高可用 | Keepalived | 双机热备 |
| 健康检查 | TCP_CHECK | 端口检测 |
注意事项:
- DR模式需配置ARP参数
- RealServer需配置VIP
- 定期检查连接状态
- 配置持久化保存
九、总结
LVS是高性能的负载均衡解决方案。通过本培训文档,您应该掌握了:
- LVS的三种工作模式
- NAT和DR模式配置
- 调度算法的选择
- Keepalived高可用配置
- 运维命令和健康检查
- 最佳实践和注意事项
IT运维培训文档系列 | 第257篇 | LVS负载均衡培训
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
