虚拟机上的 DRBD/Heartbeat

虚拟机上的 DRBD/Heartbeat

有谁有配置经验吗带有心跳的 drbd两台虚拟 Linux 机器(VMWare 基础架构)之间?

我遇到的问题是心跳喜欢多条数据路径查看其对等节点。例如,它喜欢与对等节点建立网络连接,可能是与网关建立连接,以及与对等节点建立串行电缆 - 提高当它检测到对等节点中断时,该节点实际上已停机,而不是由于网络拥塞或其他原因而停机的可能性。

然而,在虚拟机上,串行端口和以太网端口(以及所有其他端口)都是虚拟的 - 因此实际上只有一条数据路径(正确吗?)

(我知道 VMWare 支持设备之间的物理串行电缆,但我们的虚拟机是远程托管的,物理电缆会阻止主机迁移,这是不可接受的。)

在我们的案例中,我们看到心跳对等体之间出现超时,即使它们在同一台主机上运行。

如何配置 drbd/heartbeat 以使其在虚拟机上运行时更加稳健

答案1

您是否查看过虚拟机是否抱怨中断丢失或类似的事情 - 也许主机硬件超载或没有为您的虚拟机分配足够的资源?

如果网络不稳定或者超载,那么正确的做法当然是修复它;但如果您的托管服务提供商不热衷于此,您是否可以通过将多个桥接网络连接到不同的主机设备(希望在不同的交换机上)来使用多条物理路径?

在这种情况下,仅通过 802.3ad 使用冗余网络路径也不会有任何损害。

另一个问题的评论者提到了裂脑——这是你想要不惜一切代价避免的一件事:通常,STONITH 脚本会关闭另一台主机上的联网 PDU 条,这样另一台主机就会关闭一定;在 VM 中,您可以尝试通过 VMware API 关闭其他 VM 的脚本。

最后 - 也许 DRBD 并不适合你的场景。如果你有 SAN,你可能希望在两个虚拟机上打开结构上的同一设备作为原始磁盘,然后在其上运行 OCFS2 或类似的集群 FS。朋友们已经看到 OCFS2 在最多四个节点上同时稳定运行,这将使你能够使用 heartbeat2 进行多节点集群,而不是像 drbd 的 heartbeat 1 那样被锁定在双节点故障转移中。

警告:heartbeat 2 使用 XML 配置文件。不是每个人(例如我)都喜欢它。

答案2

DRBD 不仅不使用串行电缆,而且不能!我不知道你在说什么!

最重要的是,它不处理多条数据路径,它只是通过普通的 TCP 连接与其他节点通信。内核的路由、交换机、路由器和防火墙处理这个问题,DRBD 已经没有什么與此相关。

答案3

拥有多个数据路径的想法并不新鲜。这是避免脑裂情况的一个基本概念。

但是您在物理服务器上面临完全相同的问题 - 我不明白为什么您将这个问题链接到虚拟机?

可以使用物理上不同的网络硬件建立多个数据路径 - 这在大型环境中也很有意义,因为您可以将服务器的后端与前端分开。这样您就可以获得两个网络,您也可以在虚拟机上访问它们。

如果 DRBD 和心跳发挥作用,第三个物理上不同的网络可能对于高速专用数据复制有意义(也通常推荐用于 iSCSI) - 这也可能是第三个 hb 网络。

现在说说我自己的经验:我们有这三个独立的网络 - 它们存在于 VM 服务器上并且也桥接到 VM - 因此它们可以在三条独立的线路上运行心跳...

避免网络故障的另一种方法是将设备绑定到同一网络。如果您的网络系统中没有 SPOF - 这也是一个很好的解决方案(它至少为您提供一个 HA 网络)。

相关内容