HAProxy 健康检查和更改服务器状态

HAProxy 健康检查和更改服务器状态

我查阅了大量文档,并在 Google 上搜索,但似乎找不到答案。我在几台服务器上使用 HAProxy,这些服务器需要一段时间才能启动——本地 VM 上的初始加载大约需要一两分钟。从查看调试日志来看,HAProxy 似乎会检查这些服务器,导致 4 级连接失败,然后将服务器标记为永久死亡。谷歌搜索没有显示重新触发健康检查的方法。

我的假设是它们会在延迟后再次发生,但我没有在日志中看到任何有关服务器正在重新检查的通知。如果我重新启动 HAProxy,它会检测到服务器已启动,但理想情况下它会将它们标记为死机几分钟,检测到它们已恢复,然后将它们重新纳入轮换。我也尝试发送 SIGHUP,但这只会打印上次检查结果的报告。配置手册有点让人不知所措。我遗漏了什么?

这是我的haproxy.cfg:

global
  log 127.0.0.1 local0
  log 127.0.0.1 local1 notice
  maxconn 1024
  user proxy
  group proxy
  tune.ssl.default-dh-param 2048
  ssl-default-bind-ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:!NULL:!aNULL:!RC4:!RC2:!MEDIUM:!LOW:!EXPORT:!DES:!MD5:!PSK:!3DES
  debug

defaults
  log global
  mode http
  option httplog
  option dontlognull
  option forwardfor
  option http-server-close
  option redispatch
  retries 3

  timeout connect 5s
  timeout client 50s
  timeout server 50s

frontend http-in
  bind *:80
  bind *:443 ssl crt /etc/ssl/private/perceptronapp.com.pem no-sslv3
  redirect prefix https://www.perceptronapp.com code 301 if { hdr(host) -i perceptronapp.com }
  redirect scheme https if !{ ssl_fc }
  use_backend blog if { path_beg /blog }
  use_backend app

backend app
  balance leastconn
  cookie JSESSIONID insert nocache
  server s1 s1.perceptron.skydns.local:3000 check inter 3m cookie s1
  server s2 s2.perceptron.skydns.local:3000 check inter 3m cookie s2

backend blog
  server s1 s1.ghost.skydns.local:2368 check inter 3m

答案1

搞清楚了。HAProxy 在启动时进行 DNS 解析,我曾怀疑过这一点,但很难确认,因为我的所有查询都让我回到配置手册。由于我拥有被查询的 DNS 基础设施和命名空间(Docker 容器中的 SkyDNS),我希望将其用于服务发现和 HAProxy 后端。根据,但检查并快速扫描最新来源并未表明该应用已上线。

从那时起就切换到基于 confd 的配置文件生成和优雅重启。配置起来有点烦人,但似乎能完成工作。

相关内容