我们在Elastic Load Balancer后面的AWS EC2实例上运行了几个Puppet Master版本3.7(非PE)(主要用于高可用性)。
目前负载平衡器的检查只是在端口8140上进行TCP连接。但是这并没有检测到其中一个实例被挂起(它仍然接受初始的TCP连接,但是没有做任何事情)。
我正在寻找方法,实际上向木偶大师发送一个有意义的“禁止”请求,并将结果发送回去。
更具体的要求:
有没有一个很好的静态path,我可以给健康检查使用? 到目前为止,我还没有find任何。
如果puppet master正常工作,你可以使用什么来检查是否设置了某种API查询,例如:
curl -k -H "Accept: pson" https://puppetmaster:8140/production/status/no_key
Offcourse,默认情况下,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文档。