我们在mesos集群上使用haproxy,我们基于马拉松事件(一天50-100次)对haproxy进行动态重新加载。我们有近300个应用程序在mesos上运行(haproxy中有300个虚拟主机)。当我们进行动态重新加载时,haproxy需要很长时间来重新加载haproxy,我们观察到,对于50个应用程序,重新加载haproxy需要30-40秒。我们有一个单独的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那样基于前端来分离配置,这样只有那些应用程序才会在后端发生任何变化时生效。
谢谢您。
1条答案
按热度按时间yquaqz181#
我们发现了这个问题,这是因为dns,haproxy花了很多时间来解析URL,我们为本地缓存dns添加了/etc/hosts文件。。
现在重新装填需要30分钟。
谢谢您。