简单的多宿主Linux服务器问题

我有一台运行CentOS 6.4的Linux服务器,用作iSCSI目标。 该服务器具有两个NIC的多宿主,都在同一个子网上。 iSCSI多path负责负载平衡/故障转移,所以我需要的是每个NIC独立运行。 如何configuration此系统以避免与多宿主设置一起出现的所有奇怪的路由和ARP问题,例如在与源不同的接口上返回的stream量,或者接受发送到IP的stream量的一个接口其他。 绑定解决scheme不是一个选项,因为它与iSCSI连接有问题。

重要的东西:

  • eth0:IP 10.1.1.242 / SN 255.255.252.0 / GW 10.1.1.254
  • eth1:IP 10.1.1.243 / SN 255.255.252.0 / GW 10.1.1.254

我意识到我从来没有跟上这个问题。 在这里和这里使用一些优秀的互联网资源,我想出了以下configuration。 希望这可以帮助别人。

假设您有两个接口, eth0eth1 ,IP地址分别为10.1.1.242和10.1.1.243。 这全部位于具有10.1.1.254的默认网关的22/22networking上。

  • 首先创build两个路由表,每个NIC一个:

     echo "1 lan1" >> /etc/iproute2/rt_tables` echo "2 lan2" >> /etc/iproute2/rt_tables` 
  • 接下来,将每个接口的路由添加到适当的表中:

     ip route add 10.1.0.0/22 dev eth0 src 10.1.1.242 table lan1 ip route add default via 10.1.1.254 dev eth0 table lan1 ip route add 10.1.0.0/22 dev eth1 src 10.1.1.243 table lan2 ip route add default via 10.1.1.254 dev eth1 table lan2 
  • 最后,添加规则以确定使用哪个表:

     ip rule add from 10.1.1.242/32 table lan1 ip rule add to 10.1.1.242/32 table lan1 ip rule add from 10.1.1.243/32 table lan2 ip rule add to 10.1.1.243/32 table lan2 

这样可以防止stream量在内部穿越网卡,使您可以保留冗余或使用每个网卡来提供不同的function。

您正在寻找ip route并执行策略路由,每个接口都将拥有自己的路由表,并根据这些表做出路由决策(包括哪个接口发送stream量,从哪个地址)。

这是一个很好的网站,从一开始就解释了这些概念,但是如果你愿意的话,你可以直接跳入政策路线 。

您将需要查看arp_announce和arp_ignorevariables,以确保适配器按照您的预期进行响应。

我build议在这里查看文档。 该文档中的VIP值可能是合适的。

在/etc/sysctl.conf中:

 net.ipv4.conf.eth0.arp_ignore = 1 net.ipv4.conf.eth0.arp_announce = 2