我们在弹性负载均衡器 (主要是为了实现高可用性) 后面的 AWS EC2 实例上运行了几个 Puppet Master 版本 3.7 (不是 PE)。
目前,负载均衡器的检查只是端口 8140 上的 TCP 连接。但这并未检测到其中一个实例已挂起(它仍在接受初始 TCP 连接但没有对其执行任何操作)。
我正在寻找一种方式来向傀儡大师发送一个有意义的“无操作”请求并让它返回结果。
更具体的要求:
- 它不应该触发大量处理(检查每隔几秒进行一次)
- 如果傀儡大师能够真正处理“真实请求”,它就会成功,否则就会失败。
- 应该可以从 ELB 执行(即,基本上它应该在静态路径上的 https 请求成功后返回“200 OK”。
是否有适合用于健康检查的静态路径?到目前为止我还没有找到。
答案1
你可以通过设置某种 API 查询来检查 Puppet Master 是否正常工作,例如:
curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key
当然,默认情况下 API 访问不可用,这意味着您必须使用签名客户端的 SSL 证书才能访问 REST API。此外,并非所有证书都具有所有必要的权限。
这是一个如何进行完整清单编译的示例:
curl -k -H 'Accept: pson' \
--cert /var/lib/puppet/ssl/certs/node.example.com.pem \
--key /var/lib/puppet/ssl/private_keys/node.example.com.pem \
--cacert /var/lib/puppet/ssl/ca/ca_crt.pem \
https://puppetmaster:8140/production/status/no_key
不知道是否可以将证书集成到 ELB 检查中,但如果不行,也许您可以尝试 REST API 访问控制并在 auth.conf 中进行以下设置:
# Allow ELB to access REST endpoint
path ~ ^/status/no_key$
auth off
allow_ip <ip_of_loadbalancer>
重新启动 puppetmaster,并尝试简单检查:
curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key
这应该可行。但要小心使用 auth.conf,不要超出自己的能力范围!
要查看所有可用的 API 密钥,请查看 PuppetLabs 网站上的 REST API 文档。