我们正在为 iSCSI SAN 系统使用 Windows 2008 故障转移群集。有两个节点,每个节点有 3 个网卡。通常,这些网卡用作心跳、LAN 和 iSCSI 到 SAN 的连接。节点具有以下设置:
NIC 1 => Heartbeat
NIC 2 => LAN
NIC_3 => iSCSI
节点上的主板没有额外的 PCI 插槽用于额外的网卡。我们想增加这个 SAN 系统的带宽。带有更多(4 个或更多) pci 插槽的主板很贵而且很难找到。我意识到我们节点上的网卡有 VLAN 选项。我认为我们可以使用 VLAN NLB(或 LAGG)进行 LAN 连接,使用 VLAN MPIO 进行 iSCSI 连接。我们还可以腾出一个 VLAN 用于心跳连接。因为心跳连接不占用太多带宽,我们可以稍微增加带宽。当然可以吗?我想问一下这是否可能。如果可能,你建议这样做吗?如果可能,我想像这样设置 VLAN:
NIC 1 => VLAN_1_NLB(Heartbeat), VLAN_2_NLB(LAN)
NIC 2 => VLAN_2_NLB(LAN), VLAN_3_MPIO(iSCSI)
NIC_3 => VLAN_3_MPIO(iSCSI)
或者可能:
NIC 1 => VLAN_1_NLB(Heartbeat), VLAN_2_NLB(LAN), VLAN_3_MPIO(iSCSI)
NIC 2 => VLAN_2_NLB(LAN), VLAN_3_MPIO(iSCSI)
NIC_3 => VLAN_2_NLB(LAN), VLAN_3_MPIO(iSCSI)
这可能吗?或者您还有什么建议?但我不确定 VLAN 配置。
网卡具有 802.1Q,并且网络中的交换机是托管交换机。
答案1
您没有指定系统主板上是否内置了 3 个网卡,或者它们是否是占用所有可用插槽的附加卡。如果是后一种情况,我强烈建议您购买具有多个端口的替换网卡,而不是进行这种 VLAN 黑客攻击。英特尔提供 2 端口和 4 端口服务器网卡,2 端口千兆网卡也不太贵。
尽管 VLAN 选项可以工作,但保持心跳分离很重要。虽然它是低带宽连接,但它对延迟敏感。将心跳和 iSCSI 结合在同一个物理介质上是一个特别糟糕的主意,因为 iSCSI 往往会产生突发流量,从而可能在短时间内使链路饱和。iSCSI 流量对延迟也敏感。但是,如果延迟增加,您只会遭受 I/O 性能下降,而不会遭受不必要的和意外的集群故障转移事件的可能性。
如果您打算使用 VLAN 路径,还请查看您的网卡是否支持 QOS。这样,您可以为不同 VLAN 上的流量分配优先级队列。有了 QOS,我能想到的 3 个网卡的最佳方案是:
- NIC1 -> LAN(VLAN1 - 低优先级 QOS),心跳(VLAN2 - 高优先级 QOS)
- NIC2->iSCSI
- NIC3->iSCSI
通过这种方式,您可以使 SAN 带宽翻倍,并确保不会出现灾难性的集群行为。如果您不能使用 QOS,我会选择这种方法:
- NIC1 -> 心跳
- NIC2 -> LAN(VLAN1),iSCSI(VLAN2)
- NIC3 -> iSCSI (VLAN2)
在这里您可能会看到性能异常,但它应该是一个稳定的配置。我不确定您是从独立服务器、Hyper-V 还是 VMWare ESX 访问您的 SAN。我们发现 ESXi 5 不会正确地对 iSCSI 进行负载平衡,除非 2 个连接位于不同的 VLAN 中,所以在上面的后一种情况下,您可能会有 NIC3 -> iSCSI(VLAN3)
无论如何,如果可以的话,请认真研究获取多端口网卡,因为使用 VLAN 和特定 QoS 功能,网卡驱动程序和 IP 软件堆栈的复杂性会大大增加。可能会有错误...
答案2
所有这些都可以通过使用 .1q 来实现,这正是它的设计目的,而且效果很好。由于您已经搞定了,所以不能再添加更多了。
答案3
为什么不考虑将链路迁移到 10G NIC 以增加带宽呢?关键在于您的服务器不只是为了好玩(或者确实如此?),因此您使用 VLAN 造成的混乱越多,您(或您的同事)以后面临的问题就越多,从而增加了破坏整个连接方案的风险。
如今,10G 网卡越来越便宜了,而且如果需要的话,您以后还可以使用一个 10G 来承载多个 VLAN 的流量。