Linux 中似乎有很多选项可以为多台主机之间的故障转移提供虚拟 IP。我发现的一些选项包括 heartbeat、vrrpd、carp 和 keepalived。
在 Linux 中,我只使用过心跳(在 Cisco 中使用过 HSRP)。在提供虚拟 IP 作为 LAN 上主机的网关时,这些不同的选项是否有任何特殊优势。我希望拥有的一个功能是能够跟踪另一个接口。例如,如果虚拟 IP 在服务器 A 上的 eth0 和服务器 B 上的 eth0 之间共享,我希望它能够在检测到 eth1 已关闭时故障转移到另一台服务器。我还希望能够设置首选主机。
答案1
我发现 heartbeat 的主要优势之一是能够自定义它以拥有多个监控点。根据默认推荐配置,它在串行上行链路和网络监控之间有多个监控点。
例如,可以创建一个心跳资源脚本来监视守护进程,并在守护进程出现故障时启动故障转移。
CARP 基于 HSRP,正如您所指出的,它可以监控接口。这当然有其用武之地,我喜欢这项技术,但根据服务器角色的不同,您可能会发现心跳更有优势。
我想可以说,即使那些不支持这种协议也可以编写脚本来模仿某些行为,这基本上就是我用心跳描述的。
虽然我从未使用过 keepalived,但它似乎与 ldirectord 类似,因为它会监控 LVS 主机并在发生故障时将其从 VIP 中移除。我不认为这与 heartbeat 或 CARP 属于同一类别。
答案2
我们使用基于交换机/负载均衡器的 VIP,根据 httpget 或类似服务可用性测试进行轮询。这样就减轻了服务器的负载和责任 - 每个人都认为自己是唯一响应的服务器。然后对于我们的实际集群(Oracle、WebLogic、ZXTM 等),同样的模型是正确的,但集群应用程序本身确保服务器彼此保持联系,但面向客户端的 IP 仍然是“常规”IP。从本质上讲,我们从未发现过除“常规”IP 之外的任何其他原因,但我很想知道您计划的用例。哦,然后我们可以使用交换机/LB 来定义哪些服务器处于/停止服务状态。
答案3
故障转移很糟糕——你永远不知道它是否会工作,直到出现故障。和 Chopper3 一样,如果可能的话,我总是会使用负载平衡。
C。