假设有两个服务器负载均衡器以 TCP 代理模式工作(例如,用于 L7 负载均衡)。是否可以实时同步它们的状态,以便它们可以互相备份?
如果其中一个发生故障,另一个仍然具有所有必要的状态,可以不间断地支持所有现有的 TCP 连接。
我知道这很难,但我想知道是否有任何免费/商业 LB 已经支持此功能。
谢谢你!
答案1
您可以使用我们添加到 HAproxy 的 stick-table 复制来在 Loadbalacer.org 设备中使用。
这是一个示例配置:(重要的是 peers 部分)
# HAProxy configuration file generated by loadbalancer.org appliance
global
daemon
stats socket /var/run/haproxy.stat mode 600 level admin
pidfile /var/run/haproxy.pid
log /dev/log local4
maxconn 40000
ulimit-n 81000
tune.bufsize 16384
tune.maxrewrite 1024
defaults
mode http
balance roundrobin
timeout connect 4000
timeout client 42000
timeout server 43000
log global
peers loadbalancer_replication
peer lbmaster 192.168.67.28:7778
peer lbslave 192.168.67.29:7778
listen VIP_Name
bind 192.168.67.30:80
您还需要更改启动 HAProxy 的方式:查看有关 peers 的详细文档: http://haproxy.1wt.eu/download/1.5/doc/configuration.txt
请记住,故障转移仍然不会完全无缝,但是当发生故障转移时,您的坚持表将保存正确的目标服务器。
答案2
您可以使用 Linux 内核中的 Linux 虚拟服务器 (LVS) 框架。 http://www.linuxvirtualserver.org/index.html
它支持 TCP 连接同步,实现透明的负载均衡器故障转移。 http://www.linuxvirtualserver.org/docs/sync.html
您可以使用 KeepAliveD 来配置负载均衡器 (LVS) 行为和故障转移 (VRRP) 行为以及连接同步。 https://www.keepalived.org/