我很擅长负载均衡和使用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
所以回顾一下,我需要更新配置,以便我的后端服务器场发生变化,但原始服务器的任何请求仍然需要由他们提供。 这可能吗?
亚当
答案 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
延迟应允许在服务重新启动之前运行请求并应用新配置。
这可能对长时间运行的交易无效。