首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优雅地重新启动Haproxy

优雅地重新启动Haproxy
EN

Server Fault用户
提问于 2011-11-13 08:29:39
回答 1查看 3.9K关注 0票数 5

根据各种博客,可以使用以下命令优雅地重新启动HAproxy:

sudo haproxy -f /etc/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

为了验证这一点,我设置了一个apache脚本,该脚本连续地向had发送消息。理想情况下,每当我重新启动服务器时,脚本都不会对apache集群的运行产生影响。但是,似乎每当重新启动that时,apache脚本就会终止,而与负载均衡器的连接就会丢失。

下面是我的HaProxy配置文件的详细信息:

代码语言:javascript
复制
global
    nbproc 4
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096
    #chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    pidfile /var/run/haproxy.pid
    stats socket /home/ubuntu/haproxy.sock
    #debug
    #quiet

    defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 2000
    contimeout      5000
    clitimeout      50000
    srvtimeout      50000

    listen webstats
    bind 0.0.0.0:1000
    stats enable
    mode http
    stats uri /lb?stats
    stats auth anand:aaaaaaaa
    #stats refresh

    listen web-farm 0.0.0.0:80
         mode http
         balance roundrobin
         option httpchk HEAD /index.php HTTP/1.0
         server server2.com  1.1.1.1:80
         server serve1.com  1.1.1.2:80

~

请让我知道我在这里错过了什么。

EN

回答 1

Server Fault用户

发布于 2011-12-16 09:22:49

在排除此问题时,尝试使用"nbproc 1“而不是"nbproc 4",很少需要增加进程数量,并且在某些情况下可能会导致问题。

然而,这很可能不是主要问题。您所描述的场景实际上应该如您所期望的那样工作。

HAProxy的热重构实际上是这样工作的:

  1. 使用指定的配置启动新进程。
  2. 旧进程接收一个SIGTTOU信号,以便新进程可以接管端口(S)
  3. 旧进程完成它当前的工作,然后退出
  4. 新工艺处理港口运输(S)

如果在2之后出现任何问题,则旧进程将接收SIGTTIN信号,并继续进行。

您的问题中的一些其他细节可以使解决此问题更容易:

  • 你在ab中使用什么参数?
  • 热重新配置之后,您是否可以与其他客户端连接到新进程?
  • 您使用的是哪个(主要)版本的HAProxy
票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/330837

复制
相关文章

相似问题

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