高可用性/故障转移硬件连接

高可用性/故障转移硬件连接

我正在学习集群和高可用性技术,偶然发现了一篇关于使用一对服务器配置网络的文章,使用 DRBD 进行复制,使用心跳进行监控和故障转移。文章指出我应该在每台服务器上安装 2 个 NIC:两个 eth0 都连接到 LAN,两个 eth1 都应通过交叉电缆相互连接,如下图所示:

https://i.stack.imgur.com/8BAm6.jpg

文章图片说明:

为了确保自动故障转移,心跳会按如下方式监控主服务器:1. 辅助服务器通过连接两个服务器的交叉电缆持续监控与主服务器的连接。如果主服务器无法访问,则辅助服务器将承担主服务器状态。2. 主服务器持续监控与高可用性网络设备(如路由器)的连接。如果网络设备无法访问,则它将控制权移交给辅助服务器。因此,在以下情况下,故障转移是自动的:1. 主服务器的网络故障转移 2. 硬件故障,如电源、CPU、RAM 等。

这就引发了以下问题:

如果辅助/被动服务器上的心跳通过 eth1 监控主服务器,那么如果任何服务器上的 eth1 出现故障,会发生什么情况?

在我看来,心跳会认为主服务器已死,并激活辅助服务器。这不会造成“裂脑”情况吗?由于主服务器仍通过 eth0 连接到 LAN 并正常工作,因此只是心跳/复制链接 (eth1) 断开了。那么现在我们会同时拥有两台活动服务器吗?

我仍在理解这个概念,如果我说了废话,请原谅我。

答案1

您正在阅读的文章很可能早已过时。使用 Heartbeat 进行资源管理(故障转移时停止和启动资源)自 2008 年左右以来已被弃用。 起搏器是 Linux-HA 资源管理的新标准解决方案。但是,Pacemaker 仍然需要一些东西来处理集群通信。对于通信层,您仍然可以使用心跳但目前最流行的解决方案是Corosync

至于你最初的问题,简短的回答是,是的。如果你中断承载集群通信的网络,则可能导致裂脑,除非你使用 STONITH,你应该这么做!。可以找到关于为什么需要 STONITH 的好文章这里这里

除了 STONITH 之外,Heartbeat 和 Corosync 都支持冗余链路/网络。这意味着您可以使用多个接口来确保单个接口的故障不会干扰集群通信。

希望这可以帮助!

相关内容