如何标记Haproxy服务器最初下来

我有添加新服务器时dynamic更新的haproxy.cfg ,但是在添加新服务器的时候,服务器可能仍然会出现。 (服务器最初不健康)。 由于这个原因,当新服务器引入时,我收到了50x错误。

我几乎没有控制这个时间,但我有一些控制在服务器和后端设置的参数。

有没有办法,我可以在服务器或后端设置参数,使一个新的服务器将不会采取stream量,直到它是健康的?

这是我目前的后端的一个例子:

 backend my_backend balance roundrobin mode http option httpchk GET /actuator/health timeout check 5s server 10_48_111_20_31623 10.48.111.20:31623 check inter 10s fall 4 server 10_48_111_55_31430 10.48.111.55:31430 check inter 10s fall 4 server 10_48_111_55_31479 10.48.111.55:31479 check inter 10s fall 4 

如何实现这个最好的方法是通过haproxy的pipe理套接字。 重新加载新configuration时,可以发送haproxy命令将服务器标记为脱机。 有关使用pipe理套接字的更多信息,请参阅http://cbonte.github.io/haproxy-dconv/1.7/management.html#9.3

我认为一个可能的解决scheme是检查一个特定的页面/string,这是只有当服务器完成configuration和完全正常工作。 例如;

 backend webservers option httpchk GET /keepalive.html HTTP/1.1\r\nHost:\ www.checkvhost.com http-check expect string Checkstring server web1 web1:80 check cookie web1 

至less有两个select:

  1. 延迟添加服务器,直到它完全正常工作。 如果这不可用,您可以尝试选项2。
  2. 添加服务器作为备份服务器。 所以不会联系(除非所有其他服务器都closures)。 如果您确定服务器已启动并正在运行,则可以删除备份标志并重新加载configuration。