我有一个 Pacemaker 集群,它控制多个类型的资源ocf:heartbeat:IPaddr2
和一个类型的资源ocf:heartbeat:nginx
。自从升级到 Debian 12 以来,它无法再启动 Nginx。发生的情况是,Pacemaker 尝试在一侧启动 Nginx,40 秒后放弃,然后在另一侧尝试,40 秒后再次放弃。在两个 40 秒间隔内,Nginx 似乎工作正常。经过这些尝试后,Nginx 资源保持停止状态,错误消息显示“无法执行 nginx start on ... (超时:资源代理未在 40 秒内完成)”。
我查看了各种日志文件,但还是找不到原因。我该如何进一步诊断和解决此问题?(作为一种解决方法,我可以使用 启动 Pacemaker 控制范围之外的 Nginx systemctl start nginx.service
。与集群的正常运行相比,这不是最理想的,但确实表明配置是完整的。)
答案1
让我建议另一种解决方法。起搏器本身运行这个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
。