1. 首页 > IT综合教程 > 正文

257. LVS负载均衡培训

一、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

三、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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息