
如您所见,我的两个Windows Server故障转移群集(WSFC)节点每个都有三个networking接口,将它们连接到三个不同的networking:
我计划的networkingconfiguration是否合理? 我有“正确的”数量的网卡和networking吗? 我在想第二个NIC /networking可能是不必要的。
我的两个MongoDB副本集节点也有三个networking接口 – 非常类似于以前的情况:
这个networkingconfiguration是否有意义? 我有“正确的”数量的网卡和networking吗? 我在想第二个NIC /networking可能是不必要的。
这是我正在考虑的更简单的版本: 

这里有两个问题,一个是MS集群,另一个是Mongo。
在哪里放置公众,心跳,节点间通信和法定人数的决定是非常重要的。 集群架构也有所不同; 如果两个节点位于相邻的机架上,则select不同的quroum选项,而不是完全不同的数据中心。
把心跳放在与公共接口相同的接口/子网上
这个理论认为,如果你失去了你的公共接口,你希望心跳失败,因为这个节点实际上是由用户决定的。
把心跳放在它自己的专用接口/子网上
这个理论认为,集群以外的某个angular色是谁在做什么angular色,避免不必要的节点死亡。
把WFS放在心跳networking上
如果两个节点在同一个整体networking中(同一组交换机支持两个节点的非公共networking),那么把WFS放在心跳networking上不会引入任何新的漏洞。
如果两个节点在不同的networking故障域(如不同的数据中心),这是一个坏主意。 心跳networking提供“节点多数”仲裁选项,WFS提供“文件共享多数”仲裁选项。 您确实希望这两个选项位于不同的故障域中。
如果两个节点都在同一个数据中心,那么你的修改后的图是有意义的,尽pipe我自己可能只是在公众方面的心跳。
MongoDB更简单一些。 对于偶数个节点,您绝对需要第三个节点充当平局。 他们很清楚这一点 。 但是,您的图表指出:
多达12个副本成员(7个可以投票)。
7是一个奇数。 你不需要仲裁者。
与微软集群不同,Mongo的集群投票并不关心networking的多种途径来打破投票僵局。 正因为如此,单独的仲裁和集群内部networking不能提供有意义的鲁棒性增长。 你需要一个单独的仲裁networking的唯一原因是,如果复制stream量预计会非常大,以至于选举数据包(实际上的心跳)将被推到堆栈中太远以至于将会错过10秒的超时。