我有一个haproxy.cfg
在添加新服务器时动态更新的服务器,但在添加新服务器时,服务器可能仍在启动。(服务器最初并不健康)。因此,50x
在引入新服务器时,我会收到一些错误。
我几乎无法控制这个时间,但我可以控制在服务器和后端设置的参数。
有没有办法可以在服务器或后端设置参数,使得新服务器在正常运行之前不会承受流量?
这是我当前后端的一个示例:
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
答案1
实现此目的的最佳方法是通过 haproxy 的管理套接字。重新加载新配置后,您可以发送 haproxy 命令将服务器标记为离线。请参阅http://cbonte.github.io/haproxy-dconv/1.7/management.html#9.3有关使用管理套接字的更多信息。
答案2
我认为一个可能的解决方案是检查特定的页面/字符串,该页面/字符串仅在服务器完成配置并完全运行时放置。例如;
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
答案3
至少有两种选择:
- 延迟添加服务器,直到它完全正常工作。如果这不可行,您可以尝试选项 2。
- 将服务器添加为备份服务器。因此,将不会联系该服务器(除非所有其他服务器都已关闭)。当您确定服务器已启动并正在运行时,您可以删除备份标志并重新加载配置。