dr模式性能最优,因调度器仅改写请求包mac地址、不转发响应包,但要求所有节点同二层网络,并严格配置arp_ignore=1和arp_announce=2以避免vip冲突与回包失败。

直接路由(DR)模式是LVS中唯一能稳定支撑千万级连接请求的部署方式——它不转发响应包,调度器只处理入向SYN和首包MAC改写,CPU和网卡带宽压力极低。但前提是:所有节点必须同二层网络,且ARP行为必须精确控制,否则VIP冲突、回包失败、连接超时会立刻暴露。
为什么arp_ignore和arp_announce必须设为1和2
真实服务器(RS)的lo接口绑了VIP(如192.168.10.100/32),但物理网卡(如eth0)也处于同一子网。若不干预ARP,默认会响应任何对VIP的ARP请求,导致客户端学到的是RS的MAC而非调度器的MAC,后续包全发错目标。
-
net.ipv4.conf.lo.arp_ignore = 1:仅当目标IP匹配lo接口上的地址时才响应ARP请求(避免eth0代答VIP) -
net.ipv4.conf.lo.arp_announce = 2:选择最佳本地地址作为ARP通告源(强制用lo上的VIP,而非eth0的RIP) - 必须同时设置
all和lo两个命名空间,缺一不可;default不生效 - 配置后执行
sysctl -p,再用arping -I lo -c 2 192.168.10.100验证是否只在lo上应答
ipvsadm -g参数不能省,且必须配合-s wrr或-s lc
-g即gatewaying,是DR模式的开关。它让ipvs在转发时仅改写二层帧头(目的MAC→RS MAC),保留原始IP不变。若误用-m(NAT)或-i(TUN),整个数据路径就错了。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 权重调度必须匹配业务特征:
wrr适合RS性能差异明显场景;lc(least-conn)更适合长连接类服务(如WebSocket) - 哈希表大小默认
size=4096,千万连接下必然溢出丢包;启动前需加载模块:modprobe ip_vs sip_hash size=4194304(即2^22) - 规则示例:
ipvsadm -A -t 192.168.10.100:443 -s lc+ipvsadm -a -t 192.168.10.100:443 -r 192.168.10.102:443 -g -w 10
真实服务器上VIP必须绑定到lo且掩码为/32
RS不靠VIP对外提供服务,只靠它“假装自己是VIP”,以便响应包能以VIP为源IP发出。这个地址不能走物理网卡广播,否则触发ARP冲突。
- 正确命令:
ip addr add 192.168.10.100/32 dev lo label lo:0(/32是硬性要求,/24会导致ARP泛洪) - 不能用
ifconfig lo:0 192.168.10.100 netmask 255.255.255.255 up——旧命令在systemd系统上可能失效 - RS的默认网关绝不能指向调度器IP;它只需保证能访问客户端(通常走物理网卡默认网关)
- 检查命令:
ip route get 1.1.1.1 from 192.168.10.100 iif lo应返回dev eth0,证明回包路径正确
最易被忽略的是调度器自身的ARP抑制和ICMP重定向关闭——哪怕RS全配对,只要调度器还在广播VIP的ARP或转发ICMP重定向,客户端就可能缓存错误MAC或绕过LVS。务必确认net.ipv4.conf.all.send_redirects = 0和net.ipv4.conf.eth0.send_redirects = 0已生效。










