我们在 Elastic Load Balancer 后面的 AWS EC2 实例上运行了几个 Puppet Master 版本 3.7(非 PE)(主要用于高可用性)。
目前,负载均衡器的检查只是端口 8140 上的 TCP 连接。但这并没有检测到其中一个实例已挂起(它仍在接受初始 TCP 连接,但没有对其进行任何操作)。
我正在寻找向 puppet master 发送有意义的“no-op”请求并让它发回结果的方法。
更具体的要求:
- 它不应该触发繁重的处理(检查每隔几秒钟发生一次)
- 如果 puppet master 能够实际处理“真正的请求”,它应该成功,否则失败。
- 应该可以从 ELB 执行(即基本上它应该在静态路径上成功的 https 请求上返回“200 OK”。
是否有一个好的静态路径可以让运行状况检查使用?到目前为止,我还没有找到任何东西。
您可以用来检查 puppet master 是否正常工作的是设置某种 API 查询,例如:
当然,API 访问默认不可用,这意味着您必须使用签名客户端的 SSL 证书才能访问 REST API。此外,并非所有证书都具有所有需要的权限。
这是一个如何进行完整清单编译的示例:
不知道是否可以将证书集成到 ELB 检查中,但如果不是,也许您可以玩转 REST API 访问控制并在 auth.conf 中按照以下内容进行设置:
重新启动 puppetmaster,并尝试简单检查:
这应该有效。小心 auth.conf 不要过度扩张自己!
要查看所有可用的 API 密钥,请查看 PuppetLabs 站点上的 REST API 文档。