是否可以实时同步 TCP 代理的状态(以实现 SLB 的真正高可用性)?

是否可以实时同步 TCP 代理的状态(以实现 SLB 的真正高可用性)?

假设有两个服务器负载均衡器以 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/

相关内容