【问题标题】:Issue with Haproxy ReloadHaproxy 重新加载问题
【发布时间】:2015-09-10 13:18:15
【问题描述】:

我们在 Mesos 集群上使用 Haproxy,我们正在根据马拉松事件(一天 50-100 次)为 Haproxy 进行动态重新加载。我们有近 300 个应用程序在 Mesos 上运行(Haproxy 中有 300 个虚拟主机)。当我们进行动态重新加载时,Haproxy 需要很长时间才能重新加载 Haproxy,我们观察到 50 个应用程序需要 30-40 秒才能重新加载 Haproxy。我们有一个 Haproxy 配置文件,当我们重新加载所有应用程序时,所有应用程序都会重新加载(前端),这会导致所有应用程序停机。有没有办法减少停机时间和对最终用户的影响。

我们尝试了这种情况,
"http://engineeringblog.yelp.com/2015/04/true-zero-downtime-haproxy-reloads.html"

如果用户在重新加载时请求,则请求将在重新加载后排队并提供服务。

但是如果我们一个接一个地进行多次重新加载,即使重新加载 HaProxy 服务,HaProxy 的旧进程仍然存在,这会导致严重的问题。

root      7816  0.1  0.0  20024  3028 ?        Ss   03:52   0:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf 6778
root      7817  0.0  0.0  20024  3148 ?        Ss   03:52   0:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf 6778

是否有任何解决方案在处理请求后停止前一个进程一次。

我们能否像 Nginx 那样根据前端的配置进行分离,这样后端有任何变化时,只有那些应用才会生效。

谢谢。

【问题讨论】:

  • 30-40 秒重新加载 Haproxy 听起来很意外。您能否提供有关您的设置的更多详细信息?您是使用 marathon-haproxy-bridge 还是其他系统来管理和重新加载 haproxy?你能提供一些你重新加载时的日志吗?

标签: haproxy mesos mesosphere marathon


【解决方案1】:

我们发现了问题,这是因为 DNS,Haproxy 需要花费大量时间来解析 URL,我们为本地缓存 DNS 添加了 /etc/hosts 文件..

现在重新加载需要 30 毫秒。

谢谢。

【讨论】:

  • 感谢您提供解决方案,请考虑将其标记为正确答案。
  • 您能分享一下您是如何诊断的吗?
猜你喜欢
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 2014-10-11
  • 2014-02-19
  • 2013-10-20
  • 2021-08-10
相关资源
最近更新 更多