LVS -DR模式

DR直接路由模式:不修改客户请求的源地址和目标地址,LVS直接通过MAC将请求转发给RS(真实服务器),RS需要设置ARP抑制

实验环境说明

角色 数量 IP 配置(示例) 核心作用
客户端(Client) 1 台 192.168.1.10(与 LVS 的 ens37 同网段) 发起请求,测试负载均衡效果
LVS 负载均衡器 1 台 ens33=192.168.146.100(内网,连后端 RS)ens37=192.168.1.200(VIP,对外服务) 分发请求到后端 RS
后端服务器(RS1) 1 台 ens33=192.168.146.101(内网 IP)lo:0=192.168.1.200(绑定 VIP) 提供实际服务(如 Web)
后端服务器(RS2) 1 台 ens33=192.168.146.102(内网 IP)lo:0=192.168.1.200(绑定 VIP) 提供实际服务(如 Web)

网络要求 :LVS 与所有 RS 必须在同一内网网段(192.168.146.0/24),客户端与 LVS 的 VIP(192.168.1.200)可互通。

实验步骤

第一步:配置 LVS 负载均衡器

登录 LVS 服务器(IP:192.168.146.100/192.168.1.200),执行以下操作:

  1. 确认双网卡 IP 配置(若未配置则手动设置):

    复制代码
    # 配置内网网卡(连 RS)
    ifconfig ens33 192.168.146.100 netmask 255.255.255.0 up
    # 配置 VIP 网卡(对外服务,ens37 绑定 VIP)
    ifconfig ens37 192.168.1.200 netmask 255.255.255.0 up
  2. 开启 IP 转发(DR 模式依赖转发功能):

    复制代码
    echo 1 > /proc/sys/net/ipv4/ip_forward
    # 永久生效(重启不失效)
    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    sysctl -p  # 生效配置
  3. 安装 ipvsadm 工具(Debian/Ubuntu 系统):

    复制代码
    apt update && apt install -y ipvsadm
  4. 加载 LVS 核心模块

    复制代码
    modprobe ip_vs          # 核心模块
    modprobe ip_vs_rr       # 轮询调度算法(按需选择,如 wrr、lc 等)
    lsmod | grep ip_vs      # 验证模块是否加载成功
    出现以下内容则表示模块加载成功:
    ip_vs_rr               12288  0
    ip_vs                 221184  2 ip_vs_rr
    nf_conntrack          196608  1 ip_vs
    nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
    libcrc32c              12288  2 nf_conntrack,ip_vs
  5. 配置 LVS DR 模式规则

    复制代码
    # 清空旧规则(首次配置可跳过)
    ipvsadm -C
    
    # 添加虚拟服务(VIP:端口,调度算法 rr 轮询)
    # -t:TCP 协议;-s rr:轮询调度
    ipvsadm -A -t 192.168.1.200:80 -s rr
    
    # 添加后端 RS(DR 模式用 -g 标记)
    # -r:RS 的内网 IP:端口;-g:DR 模式
    ipvsadm -a -t 192.168.1.200:80 -r 192.168.146.101:80 -g  # 添加 RS1
    ipvsadm -a -t 192.168.1.200:80 -r 192.168.146.102:80 -g  # 添加 RS2
    
    # 保存规则(重启后需重新加载,或配置自动加载)
    ipvsadm -S > /etc/sysconfig/ipvsadm  # 保存到文件
  6. 查看 LVS 规则(确认配置生效):

    复制代码
    ipvsadm -Ln
    # 预期输出:能看到 VIP:80 和两台 RS 的 IP,调度算法为 rr
第二步:配置后端服务器(RS1 和 RS2)

分别登录 RS1(192.168.146.101)和 RS2(192.168.146.102),执行以下操作(两台配置相同,仅 IP 不同):

  1. 配置内网 IP

    复制代码
    # RS1 执行
    ifconfig ens33 192.168.146.101 netmask 255.255.255.0 up
    # RS2 执行
    ifconfig ens33 192.168.146.102 netmask 255.255.255.0 up
  2. 在回环接口(lo)绑定 VIP(关键步骤,避免 IP 冲突):

    复制代码
    # 绑定 VIP 到 lo:0 子接口(子网掩码必须是 255.255.255.255)
    ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 up
    
    # 添加路由,确保 VIP 流量由 lo 接口处理
    route add -host 192.168.1.200 dev lo:0
  3. 关闭 ARP 响应(核心配置,防止 VIP 冲突)

    复制代码
    # 禁止 RS 响应 VIP 的 ARP 请求(避免客户端直接访问 RS)
    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
  4. 安装并启动 Web 服务(用于区分不同 RS 的响应):

    复制代码
    # 安装 Nginx
    apt update && apt install -y nginx
    
    # RS1 配置:返回标识(如 "This is RS1 (192.168.146.101)")
    echo "This is RS1 (IP: 192.168.146.101)" > /var/www/html/index.html
    
    # RS2 配置:返回标识(如 "This is RS2 (192.168.146.102)")
    echo "This is RS2 (IP: 192.168.146.102)" > /var/www/html/index.html
    
    # 启动 Nginx
    systemctl start nginx
    systemctl enable nginx  # 开机自启
  5. 验证 RS 本地服务

    复制代码
    curl 127.0.0.1  # 应返回当前 RS 的标识文本
第三步:配置客户端(Client)

登录客户端机器(192.168.1.10),确保与 LVS 的 VIP(192.168.1.200)互通:

  1. 配置客户端 IP(与 LVS 的 ens37 同网段):

    复制代码
    ifconfig ens33 192.168.1.10 netmask 255.255.255.0 up
  2. 测试与 LVS VIP 的连通性

    复制代码
    ping 192.168.1.200  # 应能 ping 通
第四步:验证 LVS DR 模式负载均衡效果

在客户端执行多次访问 LVS VIP 的命令,观察响应是否在 RS1 和 RS2 之间切换:

复制代码
# 连续执行 curl 命令,查看返回结果
curl 192.168.1.200
curl 192.168.1.200
curl 192.168.1.200

预期结果 :多次执行后,响应应交替显示 This is RS1 (IP: 192.168.146.101)This is RS2 (IP: 192.168.146.102),说明 LVS DR 模式的负载均衡已生效。

常见问题排查

  1. 客户端访问超时

    • 检查 LVS 与 RS 的内网连通性(ping 192.168.146.101);
    • 检查 RS 的 Nginx 是否启动(systemctl status nginx);
    • 检查 LVS 规则是否正确(ipvsadm -Ln)。
  2. 响应不切换(只访问一台 RS)

    • 确认 LVS 调度算法为 rr(轮询),而非 sh(源地址哈希);
    • 检查 RS 的 ARP 配置是否正确(cat /proc/sys/net/ipv4/conf/all/arp_ignore 应返回 1)。
  3. VIP 冲突(客户端直接访问到 RS)

    • 重新执行 RS 的 ARP 配置命令,确保 arp_ignore=1arp_announce=2

通过以上步骤,即可完成 LVS DR 模式的部署和验证,核心是利用 "MAC 地址转发" 和 "后端直接响应客户端" 的特性,提升负载均衡效率。

相关推荐
IT成长日记4 小时前
【LVS入门宝典】LVS-TUN模式配置实战以及配置关键点:Real Server的路由表调整、ipip模块加载
linux·运维·服务器·lvs·tun
有谁看见我的剑了?4 小时前
LVS虚拟调度器学习
学习·lvs
IT成长日记7 小时前
【LVS入门宝典】探秘LVS透明性:客户端如何“看不见”后端服务器的魔法
运维·服务器·负载均衡·lvs·透明性
IT成长日记7 小时前
【LVS入门宝典】LVS DR模式深度解析:直接路由(DR)的高性能秘诀,MAC地址欺骗与ARP隔离
linux·运维·负载均衡·lvs·arp
斯普信专业组19 小时前
LVS详解:构建高性能Linux负载均衡集群
linux·负载均衡·lvs
Yyyy4821 天前
LVS简介
lvs
失因1 天前
LVS 负载均衡技术
运维·负载均衡·lvs
IT成长日记1 天前
【LVS入门宝典】LVS核心原理与实战:Director(负载均衡器)配置指南
linux·运维·负载均衡·lvs·nat·dr·tun
维尔切1 天前
lVS 负载均衡技术
运维·负载均衡·lvs