什么是一个好的负载平衡器检查木偶大师

我们在Elastic Load Balancer后面的AWS EC2实例上运行了几个Puppet Master版本3.7(非PE)(主要用于高可用性)。

目前负载平衡器的检查只是在端口8140上进行TCP连接。但是这并没有检测到其中一个实例被挂起(它仍然接受初始的TCP连接,但是没有做任何事情)。

我正在寻找方法,实际上向木偶大师发送一个有意义的“禁止”请求,并将结果发送回去。

更具体的要求:

  1. 它不应该触发大量的处理(检查每隔几秒钟发生一次)
  2. 如果木偶大师能够真正处理“真正的要求”,否则就会成功。
  3. 应该可以从ELB执行(即基本上它应该在静态path上的成功https请求上返回“200 OK” 。

有没有一个很好的静态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文档。