检查 Keepalived + LVS 配置的模式可以通过以下几种方法:
1. 查看 Keepalived 配置文件
# 查看主配置文件
cat /etc/keepalived/keepalived.conf
# 查找 virtual_server 块中的 lvs_method 或 lb_algo
grep -E "lvs_method|lb_kind|lb_algo" /etc/keepalived/keepalived.conf
配置示例:
virtual_server 192.168.1.100 80 {
lb_algo rr # 调度算法:rr=轮询
lb_kind DR # LVS模式:DR|TUN|NAT
protocol TCP
# ... 其他配置
}
2. 查看当前运行的 LVS 状态
# 查看 LVS 当前规则和模式
ipvsadm -Ln
# 或者更详细的信息
ipvsadm -Lnc
输出示例:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.100:80 rr # Flags字段显示模式,空表示NAT,有选项表示其他模式
3. 通过 ipvsadm 的 Flags 字段判断
ipvsadm -Ln --stats | head -10
Flags字段含义:
- 空值或无标志:NAT模式(Masq)
- Route:DR模式
- Tunnel:TUN模式
4. 检查系统内核模块
# DR/TUN模式需要加载相应模块
lsmod | grep ip_vs
# DR模式通常需要以下模块:
# ip_vs、ip_vs_rr、ip_vs_wrr等调度算法模块
5. 检查 RS(Real Server)配置
在 Real Server上检查网络接口配置:
DR模式特征:
# RS上有VIP绑定在lo接口上
ip addr show lo
# RS上有ARP抑制设置
cat /proc/sys/net/ipv4/conf/all/arp_ignore
cat /proc/sys/net/ipv4/conf/all/arp_announce
### TUN模式特征:
# RS上有tunl0接口且绑定了VIP
ip addr show tunl0
### NAT模式特征:
# RS网关指向Director,没有特殊接口绑定VIP
route -n | grep UG
##6.完整的诊断脚本
”`bash#!/bin/bash echo “=== LVS Mode Diagnosis ===” echo “1.Keepalived Config:” grep -E “lb_kind|lvs_method” /etc/keepalived/keepalived.conf || echo “Not found in config”
echo -e “\n2.ipvsadm Current Rules:” ipvsadm -Ln | head -10
echo -e “\n3.Network Interfaces:” echo “lo interface:” ip addr show lo | grep inet echo “tunl0 interface:” ip addr show tunl0 > /dev/null && ip addr show tunl0 || echo “tunl0 not exists”
echo-e”\n4.Kernel Modules:” lsmod | grep ip_vs
echo-e”\n5.RS ARP Settings:” echo”arp_ignore:cat/proc/sys/net/ipv4/conf/all/arp_ignore” echo”arp_announce:cat/proc/sys/net/ipv4/conf/all/arp_announce”
“”
##7.常见模式的快速判断
-DR模式:lb_kind DR,RS有VIP在lo,启用ARP抑制
-TUN模式:lb_kind TUN,RS有tunl0接口
-NAT模式:lb_kind NAT,RS网关指向Director
通过这些方法可以准确判断当前使用的LVS工作模式和配置状态。
内容由零声教学AI助手提供,问题来源于学员提问




