当前服务器场上的HAProxy Change Farm和Soft Stop Server

时间:2016-04-04 10:54:24

标签: haproxy

我很擅长负载均衡和使用HAProxy。 在做了很多阅读并设置我自己的开发环境后,我无法解决以下问题: 我有一组网络服务器,其流量正在平衡,如何在我故障转移到新银行时软停止这些服务器?

我的测试结果如下:

query-batch-size=1000
query-short-q-max-size=100000
query-long-q-max-size=100000
query-threads=28
query-worker-threads=400
query-req-max-inflight=1000

要更改银行,将更新配置并使用热重启:

frontend front-end-test
  maxconn 2000
  bind 192.168.0.10:8666
  use_backend back-end-test-a

backend back-end-test-a
    mode http
    balance roundrobin
    option forwardfor
    server machine1 10.1.1.92:44410 weight 1 maxconn 2000 check
    server machine2 10.1.1.92:44420 weight 1 maxconn 2000 check

backend back-end-test-b
    mode http
    balance roundrobin
    server machine3 10.1.1.92:44430 weight 1 maxconn 2000 check
    server machine4 10.1.1.92:44440 weight 1 maxconn 2000 check

frontend front-end-test
  maxconn 2000
  bind 192.168.0.10:8666
  use_backend back-end-test-a

所以回顾一下,我需要更新配置,以便我的后端服务器场发生变化,但原始服务器的任何请求仍然需要由他们提供。 这可能吗?

亚当

1 个答案:

答案 0 :(得分:0)

通常情况下,如果我想更改后端,我会立即将其切换(如更改为use_backend back-end-test-b)并通过在重新启动haproxy服务之前延迟SYN数据包(新的传入连接)来执行正常的重新加载。例如:

iptables -I INPUT -p tcp --dport 8666 --syn -j DROP
sleep 1
service haproxy restart
iptables -D INPUT -p tcp --dport 8666 --syn -j DROP

延迟应允许在服务重新启动之前运行请求并应用新配置。

这可能对长时间运行的交易无效。