Haproxy 解析器部分 + Amazon ELB

Mad*_*May 6 domain-name-system haproxy

我目前在亚马逊 ELB 前使用 Haproxy-1.6-dev2,我遇到了 DNS 解析问题。由于新resolvers功能,我正在使用 haproxy 的开发版本,但无法让 Haproxy 在不重新启动 haproxy 进程的情况下触发服务器内部 IP 地址列表的更改。Amazon 更新其 ELB 的 IP,而 Haproxy 继续使用旧 IP 地址而不更新。下面是一个简化的配置文件。

global
    log 127.0.0.1   local0
    stats socket /var/run/haproxy.sock

defaults
    log global
    mode http
    option httpchk GET /
    option log-health-checks
    option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000

resolvers dns
    nameserver public-0  xx.xx.xx.xx:53
    hold valid 1s

frontend http
    bind *:8000
    default_backend site-backend

backend site-backend
    balance leastconn
    server site sub.example.com:80 resolvers dns check inter 1000
Run Code Online (Sandbox Code Playgroud)

我在 AWS Route53 中创建了临时 A 记录,由于 A 记录指向无效位置,因此运行状况检查失败。
然后我更新 A 记录以指向一个有效的位置,但健康检查继续失败。haproxy 的简单重启意味着健康检查开始通过。

我还 ping stats 套接字以获取更多信息:

 nameserver public-0:
  sent: 153
  valid: 0
  update: 0
  cname: 0
  cname_error: 0
  any_err: 0
  nx: 0
  timeout: 0
  refused: 0
  other: 0
  invalid: 0
  too_big: 0
  outdated: 51
Run Code Online (Sandbox Code Playgroud)

haproxy 文档对“过时”的含义没有提供太多帮助。

Bap*_*ste 2

请在调试模式下运行 HAProxy(全局部分中的“debug”语句或运行 haproxy deamon 时的“-d”)并在此处报告 stdout 和 stderr 的输出。

同时,请获取盒子的 DNS 流量的 tcpdump 并将其发送给在 HAProxy 中进行 DNS 工作的开发人员:bedis9@gmail.com。

巴蒂斯特

  • 就像我在给您的电子邮件中提到的那样,似乎是 1 毫秒默认超时而不是 1 毫秒默认超时的问题。设置“超时重试 1 秒”应该可以解决 Haproxy-1.6-dev2 上遇到此问题的其他人的问题。 (2认同)
  • 感谢您报告此事!错误现已修复并修补并发送到上游。等待威利将其整合。巴蒂斯特 (2认同)