本文主要对照 LVS-NAT、DPVS-FullNAT(FNAT)与 ENAT 在报文源/目的地址上的差异,并记录 Keepalived 将详细日志输出到独立文件的配置方式。可与 rp-filter-in-lvsdpvs-install-toa 等文对照。

背景说明

负载均衡模式不同,RS 是否与 LB 同二层、是否需要 TOA/CTK、回程是否经过 LB 都不同。下面用 CIP/VIP/RIP/LIP 记法描述(客户端 / 虚服务 / 真实服务器 / LB 本地地址)。

LVS-NAT

阶段源 → 目的(概要)
客户端 → LBCIP → VIP
LB → RSCIP → RIP
RS → LBRIP → CIP
LB → 客户端VIP → CIP

要点:RS 默认网关通常必须是 LB,回程才能被改写;因此 LB 与 RS 往往同网段/同 VLAN。吞吐受 LB 回程改写能力限制。

DPVS-FullNAT(FNAT)

LB 维护两条连接与 session:

  • 外侧:CIP ↔ VIP
  • 内侧:LIP ↔ RIP

RS 看到的源地址常为 LIP;若要业务拿到真实 CIP,需在 RS 加载 TOA 等模块。

优点:内侧只需三层可达,便于跨网段。 代价:session 表开销;依赖 TOA 还原客户端地址。

ENAT(简述)

与 FNAT 类似存在 LIP 与 session,但 RS 侧通过 CTK 一类模块在回程直接改写为 VIP→CIP,应答可不回 LB。若 CTK 异常,行为可能退化成仍回 LIP(更接近 FNAT)。细节以实现与厂商文档为准。

模式选择直觉

诉求更常考虑
简单、同网段NAT
跨网段、高性能(DPVS)FNAT + TOA
直回客户端减 LB 压力ENAT(实现与运维更复杂)

Keepalived 日志落盘

/etc/sysconfig/keepalived(路径因发行版而异)中常见:

KEEPALIVED_OPTIONS="-D -d -S 0"
  • -D:详细日志
  • -d:转储配置相关信息
  • -S 0:使用 local0 facility(示例)

rsyslog 示例:

local0.*    /var/log/keepalived.log

然后:

systemctl restart rsyslog
systemctl restart keepalived

验证:tail -f /var/log/keepalived.log 在切换 VIP 时应有 VRRP 相关记录。注意日志磁盘与轮转。

注意事项

  • NAT/FNAT/ENAT 名词在不同项目中细节不一,以当前软件版本文档为准。
  • 生产修改 Keepalived 选项前先在测试环境确认 facility 不与其它服务冲突。
  • 内网主机名与 IP 已脱敏。