首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haproxy优美重装

Haproxy优美重装
EN

Server Fault用户
提问于 2012-02-18 03:57:24
回答 2查看 8.2K关注 0票数 5

我在寻找一个解决方案,优雅的重新装载的哈代理。我有一个nginx服务器正在运行,它将请求传递给have,有时我会重新加载have配置。但是我注意到,在重新加载时,所有现有的连接都被切断了,并且haproxy后端队列显示了0个请求(从haproxy的套接字状态获取)。

我正在使用在几篇博客文章和haproxy文档中提到的关于这个问题的方法:

重装:

代码语言:javascript
复制
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf (</var/run/haproxy.pid)

开始:

代码语言:javascript
复制
haproxy -D  -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid 

如果有人能提出解决办法,我会很感激的。下面是我的haproxy配置文件

代码语言:javascript
复制
global
  maxconn 64000
  ulimit-n 200000
  log             127.0.0.1       local0
  log             127.0.0.1       local1 notice
  spread-checks 5
  stats socket /etc/haproxy/stats

defaults
  log global
  mode http
  balance roundrobin
  maxconn 64000
  option abortonclose
  option httpclose
  retries 3
  option redispatch
  timeout client 30000
  timeout connect 30000
  timeout server 30000
  stats enable
  stats uri     /haproxy?stats
  stats realm   Haproxy Statistics
  stats auth    haproxy:stats
  timeout check 5000
EN

回答 2

Server Fault用户

发布于 2012-02-18 08:00:25

你发布的命令在我看来并不是百分之百正确。在我的系统里,它写着:

代码语言:javascript
复制
haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf $(cat /var/run/haproxy.pid)

您输入了最后一个选项-sf的值。

票数 4
EN

Server Fault用户

发布于 2012-02-18 08:48:42

根据您的测试方法,这可能是预期的。尽管如上所述,在重新加载命令结束时,您似乎也缺少了一个$

当HAProxy执行“重新加载”时,它启动一个新的HAProxy进程,从第一个进程到第二个进程通过unix域套接字发送会话数据,第一个进程从侦听的HAProxy端口解除绑定,第二个进程绑定。然后,第一个进程终止。因此,它们在任何阶段都不共享内存,并且似乎不同步文件描述符(反正是从我自己的测试中)。因此,重新加载的要点是维护持久化表(例如基于cookie的哈希),以便客户端重新连接到所需的后端服务器。然而,它应该是优雅的,从意义上说,连接是从第一个过程,而不是立即下降。

如果您在执行重新加载时查看您的流程表,那么您应该观察上面的内容,除非我测试后(几个月前)发生了变化。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/361412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档