如您所见,我的两个 Windows Server 故障转移群集 (WSFC) 节点各有三个网络接口,将它们连接到三个不同的网络:
- 公共网络
- 由 WSFC 节点组成的私有网络
- 由 WSFC 节点和具有 WSFC Quorum Witness 文件共享的计算机组成的私有网络
我规划的这个网络配置合理吗?我的 NIC 和网络数量是否“正确”?我认为第二个 NIC/网络可能没有必要。
我的两个 MongoDB 副本集节点也各有三个网络接口 - 与之前的情况非常相似:
- 公共网络
- 由 MongoDB 副本集主节点和辅助节点组成的私有网络
- 由 MongoDB 副本集主节点、辅助节点和仲裁节点组成的私有网络
这种网络配置合理吗?我的 NIC 和网络数量是否“正确”?我认为第二个 NIC/网络可能没有必要。
这是我正在考虑的更简单的版本:
更新:
答案1
这里有两个问题,一个是关于MS集群的,另一个是关于Mongo的。
MS 聚类
决定将公共、心跳、节点间通信和仲裁驱动器放在哪里非常重要。集群架构也有所不同;如果两个节点位于相邻机架,而不是位于完全不同的数据中心,则需要选择不同的仲裁选项。
将心跳放在与公共接口相同的接口/子网上
这个理论认为,如果你失去了你的公共接口,你想心跳失败,因为该节点实际上对用户而言已经失效。
将心跳放在它自己的私有接口/子网上
该理论认为,集群之外的某些东西正在仲裁谁扮演什么角色,并且应该避免不必要的节点死亡。
将 WFS 置于心跳网络上
如果两个节点位于同一个整体网络中(同一组交换机支持两个节点的非公共网络),那么将 WFS 放在心跳网络上不会引入任何新的漏洞。
如果两个节点位于不同的网络故障域(例如不同的数据中心),那么这是一个坏主意。心跳网络提供“节点多数”仲裁选项,而 WFS 提供“文件共享多数”仲裁选项。您确实希望这两个选项位于不同的故障域中。
如果两个节点都在同一个数据中心,那么修改后的图表是有意义的,尽管我自己会将心跳放在公共端。
MongoDB
MongoDB 稍微简单一些。如果节点数为偶数,您肯定希望有第三个节点来充当决胜局。他们很清楚这一点。但是,您的图表显示:
最多 12 名副本成员(其中 7 名可以投票)。
7 是奇数。您不需要仲裁者。
与 Microsoft 集群不同,Mongo 的集群投票并不关心通过多种网络途径打破投票僵局。因此,单独的仲裁和集群内部网络不会提供任何有意义的稳健性提升。您需要单独的仲裁网络的唯一原因是,如果预计复制流量非常大,以至于选举数据包(实际上是心跳)会被推到堆栈的很深处,以至于它会错过 10 秒的超时。