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

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

我有一台运行 CentOS 6.4 的 Linux 服务器,用作 iSCSI 目标。该服务器是多宿主的,有两个 NIC,都位于同一子网上。iSCSI 多路径负责负载平衡/故障转移,因此我只需要让每个 NIC 独立运行。如何配置此系统以避免多宿主设置中总是出现的所有奇怪的路由和 ARP 问题,例如流量从源返回到不同的接口,或者一个接口接受发送到另一个接口的 IP 的流量。绑定解决方案不是一种选择,因为它存在 iSCSI 连接问题。

重要的事情:

  • eth0:IP 10.1.1.242 / 序列号 255.255.252.0 / 网关 10.1.1.254
  • eth1:IP 10.1.1.243 / 序列号 255.255.252.0 / 网关 10.1.1.254

答案1

我意识到我从来没有跟进过这个问题。使用一些优秀的互联网资源这里这里,我得出了以下配置。希望这能帮助到别人。

假设您有两个接口eth0eth1,其 IP 地址分别为 10.1.1.242 和 10.1.1.243。它们都位于 /22 网络上,默认网关为 10.1.1.254。

  • 首先创建两个路由表,每个 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
    

这应该可以防止流量在内部穿过 NIC,从而允许您保留冗余或将每个 NIC 用于不同的功能。

答案2

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

是一个非常棒的网站,从头到尾解释了相关概念,但你也可以直接进入策略路由如果你愿意的话..

答案3

您需要查看 arp_announce 和 arp_ignore 变量以确保适配器按照您预期的方式响应。

我建议你看一下文档这里。该文档中针对 VIP 的价值观可能比较合适。

在 /etc/sysctl.conf 中:

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

相关内容