最近看《构建高性能web站点》(老版)第12章讲LVS-DR的配置,有一段针对Real Server的配置不明所以:
ifconfig lo:0 125.12.12.77 broadcast125.12.12.77 netmask 255.255.255.255 up
route add -host 125.12.12.77 dev lo:0
查了些资料,netmask设为4个255虽然不常见,但却是很自然的一件事。netmask原意是用于分割子网网络号和子网主机号,所以大部分私有网络(如家庭网络或企业网络)会按需配置或默认的255.255.255.0(表示该子网能容纳255个主机)。在上例中,这个虚拟ip显然不需要配置子网,所以设为4个255表示无子网是自然、合理的。(末尾的up表示update)
这段代码的意图是避免多台RealServer设定了相同的虚拟ip之后导致ip冲突,我猜测:
- 广播地址设为自己的ip,用于收到同ip发来的消息时,让系统误认为是广播消息(因此系统不觉得ip冲突)
- 向路由表加规则,用于向同ip发出消息时,被发送的消息将进入环回接口,即只有该主机自己能收到,不会向网络扩散。