心跳可以检测到已停止的服务并重新启动它

心跳可以检测到已停止的服务并重新启动它

我有两个节点,完整的 IP 故障转移对它们来说非常有效 - 当节点 1 发生故障时,节点 2 会获取 IP 并启动服务。

我想知道的是:

如果服务器 1 没有完全崩溃,但只有其中一个服务意外停止,是否可以配置心跳来监视它并启动它?

编辑:使用心脏起搏器可以吗?

引自http://clusterlabs.org/wiki/FAQ#组织

Pacemaker 在以下情况下保持您的应用程序运行他们或者运行它们的机器发生故障

答案1

如果服务器 1 没有完全崩溃,但只有其中一个服务意外停止,是否可以配置心跳来监视它并启动它?

当然,心跳版本 2可以做到。

使用版本 1,你/etc/ha.d/haresources看起来如下所示:

master              129.79.136.4 apache

然后您可以通过运行以下命令生成 heartbeat 2 配置文件:

python /usr/lib64/heartbeat/haresources2cib.py > /var/lib/heartbeat/crm/cib.xml

/var/lib/heartbeat/crm/cib.xml

...
    <resources>
        <group id="group_1">
            <primitive class="ocf" id="IPaddr_129_79_136_4" provider="heartbeat" type="IPaddr">
                <operations>
                    <op id="IPaddr_129_79_136_4_mon" interval="5s" name="monitor" timeout="5s"/>
                </operations>
                <instance_attributes id="IPaddr_129_79_136_4_inst_attr">
                    <attributes>
                        <nvpair id="IPaddr_129_79_136_4_attr_0" name="ip" value="129.79.136.4"/>
                    </attributes>
                </instance_attributes>
            </primitive>
            <primitive class="ocf" id="apache_2" provider="heartbeat" type="apache">
                <operations>
                    <op id="apache_2_mon" interval="120s" name="monitor" timeout="60s"/>
                </operations>
            </primitive>
        </group>
    </resources>
...

但我建议你应该选择corosyncPacemaker

答案2

不要使用 Heartbeat (v2)。完全不要。立即迁移,使用 Pacemaker 作为集群资源管理器,使用 Corosync 作为消息层。您甚至不会在任何各种 Linux HA 社区渠道中找到对 Heartbeat v2 的支持,事实上,您可能会因使用过时的技术而被斥责。Pacemaker 和 Corosync 中存在 Heartbeat 的完美后继者。

起搏器是Linux HA 堆栈的集群资源管理器,旨在确切地满足您的要求。它监控资源(IP 地址、服务、文件系统、挂载点、路由等),如果资源发生故障,它可以尝试重新启动它们。当然,它还能做更多的事情。

我将在这里链接我之前的一个答案,因为没有必要再重复自己: 当存在故障节点时,Heartbeat 无法从冷启动成功启动资源

相关内容