HCRM博客

CentOS系统LVS NAT模式配置指南

CentOS LVS NAT 模式配置实战指南

在构建高可用、高性能的网络服务时,Linux Virtual Server (LVS) 凭借其强大的负载均衡能力成为核心基础设施的关键组件,其 NAT(Network Address Translation)模式因其配置相对直观且对后端服务器网络环境要求灵活,被广泛采用,本文将详细阐述在 CentOS 系统上配置 LVS NAT 模式的完整流程与关键要点。

理解 LVS NAT 模式原理

CentOS系统LVS NAT模式配置指南-图1

在 NAT 架构中:

  1. 调度器 (Director):拥有公网 IP(VIP)和私有 IP(DIP),是流量入口与出口的枢纽。
  2. 真实服务器 (Real Server, RS):通常位于私有网络,仅需配置私有 IP(RIP),默认网关必须指向调度器的 DIP。
  3. 流量路径
    • 入站 (Client -> VIP -> RIP):客户端请求发送至 VIP;调度器根据负载均衡算法选择一台 RS,将目标 IP 修改为该 RS 的 RIP,源 IP 保留为客户端 IP(或根据需要修改),然后转发。
    • 出站 (RIP -> DIP -> Client):RS 处理请求后,将响应发送给其默认网关(即调度器的 DIP);调度器将响应的源 IP 从 RIP 修改回 VIP,目标 IP 修改为客户端 IP,然后发回给客户端。

此模式实现了客户端与 RS 的解耦,RS 无需暴露公网地址,但调度器需处理双向流量,可能成为性能瓶颈。

系统环境准备

  • 操作系统:CentOS 7 或 CentOS 8 (本文以 CentOS 7 示例)。
  • 角色
    • LVS 调度器 (Director):1台 (假设 IP: eth0-VIP: 203.0.113.100, eth1-DIP: 192.168.10.1)
    • 真实服务器 (Real Server):至少2台 (假设 IP: RS1: 192.168.10.101, RS2: 192.168.10.102)
  • 网络
    • 调度器需双网卡(或单网卡绑定多个IP,但物理隔离更佳)。
    • RS 与调度器的 DIP 需在同一局域网。
    • 确保 RS 能访问外网 (通过调度器 NAT) 或所需资源。
    • 关键配置:所有 RS 的默认网关必须设置为调度器的 DIP (192.168.10.1)。

调度器 (Director) 配置步骤

  1. 安装必要软件

    yum install ipvsadm keepalived -y

    ipvsadm:LVS 核心管理工具。 keepalived:提供高可用性(主备切换)和动态配置管理(推荐)。

    CentOS系统LVS NAT模式配置指南-图2
  2. 配置网络与内核参数

    • 配置 VIP 和 DIP:
      # 在公网接口(如eth0)添加VIP (临时)
      ip addr add 203.0.113.100/24 dev eth0
      # 或修改网卡配置文件永久生效
    • 开启核心转发 (必须):
      echo 1 > /proc/sys/net/ipv4/ip_forward
      # 永久生效:编辑 /etc/sysctl.conf
      net.ipv4.ip_forward = 1
      sysctl -p
  3. 配置 Keepalived (推荐方式): 编辑 /etc/keepalived/keepalived.conf

    vrrp_instance VI_1 {
        state MASTER   # 主节点设为 MASTER,备节点设为 BACKUP
        interface eth0 # 承载 VRRP 通告的接口(通常是公网接口)
        virtual_router_id 51 # 集群唯一 ID
        priority 100   # 主节点优先级需高于备节点
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass your_secure_password
        }
        virtual_ipaddress {
            203.0.113.100/24 # VIP
        }
    }
    virtual_server 203.0.113.100 80 { # 定义虚拟服务 VIP 和端口
        delay_loop 6    # 健康检查间隔(秒)
        lb_algo wrr     # 负载均衡算法:加权轮询 (可选 rr, wlc, lc 等)
        lb_kind NAT     # LVS 模式:NAT
        protocol TCP    # 协议类型 (也可用 UDP)
        # 真实服务器配置 (Real Server)
        real_server 192.168.10.101 80 {
            weight 1    # 服务器权重
            TCP_CHECK { # TCP 健康检查配置
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
        real_server 192.168.10.102 80 {
            weight 1
            TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    }

    说明

    • vrrp_instance 实现 VIP 的高可用。
    • virtual_server 块定义 LVS 服务。
    • real_server 块定义后端 RS 及其健康检查。
  4. 启动并启用 Keepalived

    systemctl start keepalived
    systemctl enable keepalived
  5. 验证 LVS 状态

    ipvsadm -Ln

    输出应显示配置的 VIP、端口、协议、调度算法以及配置的 RS 列表及其状态(-> 表示活动)。

    CentOS系统LVS NAT模式配置指南-图3

真实服务器 (Real Server) 配置

  1. 配置网络

    • 确保 RIP (如 168.10.101) 配置正确。
    • 设置默认网关为调度器的 DIP (绝对关键):
      ip route add default via 192.168.10.1
      # 永久生效:编辑网卡配置文件(如 /etc/sysconfig/network-scripts/ifcfg-eth0)添加:
      GATEWAY=192.168.10.1
      • 重启网络服务 (systemctl restart network) 或重启服务器生效。
  2. 部署后端服务: 在每台 RS 上安装并配置好实际的应用服务(如 Web 服务器 Nginx/Apache),监听在配置的端口(如 80),并确保本地访问正常 (curl http://localhost)。

测试与验证

  1. 基础连通性

    • 从 RS ping 调度器的 DIP (168.10.1) 应通。
    • 从 RS ping 一个外网地址(如 8.8.8),应通(证明 RS 的网关 NAT 生效)。
  2. LVS 服务测试

    • 从外网客户端多次访问 VIP (http://203.0.113.100)。
    • 观察调度效果:
      • 在调度器上运行 ipvsadm -Ln --statsipvsadm -Ln --rate 查看连接分发统计。
      • 在 RS 上查看 Web 服务器访问日志 (tail -f /var/log/nginx/access.log),应能看到来自不同客户端 IP 的请求。
  3. 故障模拟测试

    • 停止一台 RS 上的 Web 服务:观察健康检查是否将其标记为不可用 (ipvsadm -Ln 中状态变化),新请求是否只分发到健康 RS。
    • 恢复服务:观察健康检查是否将其重新加入活动池。
    • (如果配置了 Keepalived 主备) 停止主调度器的 Keepalived:观察备机是否接管 VIP 并继续提供服务。

关键注意事项与优化点

  1. ARP 抑制问题:在共享网络环境中,需确保 VIP 对应的 MAC 地址在交换机上正确绑定为调度器 MAC,或配置调度器内核参数 (arp_ignore, arp_announce) 避免 RS 响应 VIP 的 ARP 请求,NAT 模式通常比 DR 模式受此影响小,但仍需关注。
  2. 调度器性能:NAT 模式下调度器处理所有进出流量,需确保其网络 I/O 和 CPU 能力足够,监控 ipvs 相关内核统计项。
  3. 会话保持:对需要状态保持的应用(如购物车),LVS 支持 sh (源地址哈希) 等算法,或需应用层会话保持方案。
  4. 防火墙:确保调度器和 RS 的防火墙 (firewalld, iptables) 允许相关流量(VIP 端口、健康检查端口、RS 服务端口)。
  5. 健康检查:根据服务特性选择合适的健康检查方式(TCP_CHECK、HTTP_GET、SSL_GET 等),并合理设置超时和重试参数。

LVS NAT 模式在 CentOS 上的配置,核心在于网络拓扑的正确构建(尤其是 RS 的网关指向)和内核转发的启用,利用 keepalived 不仅简化了 LVS 规则的管理,更提供了至关重要的高可用保障,通过细致的健康检查配置和持续的监控,能够构建出稳定、高效的负载均衡层,有效提升后端服务的处理能力和可用性,理解其流量转换原理,是排查复杂问题的基础,掌握这些实践要点,您将能更自信地运用 LVS 支撑关键业务。

网络工程师视角: LVS NAT 是构建负载均衡体系的基础功,其部署便捷性常是项目初期的优选,务必重视 RS 网关的配置和健康检查的可靠性,它们是服务连续性的生命线,性能瓶颈常在调度器网卡吞吐量,提前规划网络带宽和硬件选型至关重要,欢迎在实际部署中交流遇到的挑战。


祝您的服务器坚如磐石!

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/36153.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~