我有两台真实服务器,位于不同的子网上,每台服务器都有一个永久 IP,以及一个可供任一服务器使用的故障转移 IP。托管商提供了一个 API,我可以使用它将故障转移 IP 分配给任何服务器。因此,我需要在每台服务器上运行一个守护进程,它将监视本地服务器的运行状况,同时与另一台服务器上的对应服务器进行通信,以便两台服务器一起(如果另一台发生故障,则只有一台)决定谁将获得故障转移 IP(并运行脚本以告诉托管商的 API 对其进行适当的路由)。
keepalived
做不到,除非(据称)使用 Willy Tarreau 的单播补丁,我尝试过,但没有成功。此外,守护进程最好不要尝试从网络接口获取或释放 IP;首选设置是两台机器的接口始终具有故障转移 IP 地址。
能heartbeat
做到吗?其他类似的程序能做到吗?我最终编写了自己的守护进程,它确实运行正常,但如果现有程序可以做到这一点,我认为没有理由保留它。
答案1
Heartbeat 可以做到这一点,因为它能够运行任意脚本来管理资源,因此您可以编写脚本来调用托管提供商的 API 来移动 IP 地址。