我有一个 Pacemaker 集群,它控制多个 type 资源ocf:heartbeat:IPaddr2
和一个 type资源ocf:heartbeat:nginx
。升级到 Debian 12 后,它无法再启动 Nginx。发生的情况是,Pacemaker 尝试在一侧启动 Nginx,40 秒后放弃,然后在另一侧尝试,40 秒后再次放弃。在这两个 40 秒的时间间隔内,Nginx 看起来都正常工作。在这些尝试之后,Nginx 资源保持停止状态,并且错误消息显示“nginx start on ...无法执行(超时:资源代理未在 40 秒内完成)”。
我已经查看了各种日志文件,但尚未找到原因。如何进一步诊断并解决这个问题?(作为一种解决方法,我可以在 Pacemaker 的控制之外启动 Nginx systemctl start nginx.service
。与集群的正常操作相比,这不是最理想的,但确实表明配置完好无损。)
让我建议另一种解决方法。让Pacemaker 本身运行这个
systemctl start nginx.service
或... stop ...
. 我在生产中成功地使用了它(这对我来说不是一个“解决方法”)。Pacemaker 可以自然地通过systemd 控制服务,使用其单位,如文档中所述。
要使用它而不是
ocf:heartbeat:nginx
资源,请创建systemd:nginx
. 在 CIB 中它看起来像<primitive id="nginx" class="systemd" type="nginx" />
请注意,Pacemaker 将请求启动或停止 systemd 单元;您需要在 systemd 中使用禁用此服务自动启动
systemctl disable nginx.service
。