HaProxy 的问题 - 尝试使用它进行 TCP 故障转移?

HaProxy 的问题 - 尝试使用它进行 TCP 故障转移?

我已经为一个问题苦苦挣扎了一个星期,希望有经验的人能给我一些见解。

我有 2 个 QNAP NAS,它们在 Windows 机器上用作映射驱动器。我认为为它们提供故障转移功能会很酷。2 个 NAS 系统上的数据通过我的网络实时复制,并且数据完全相同。

例如:QNAP1 - 192.168.50.35 QNAP2 - 192.168.50.36

我有一台在 VMware 工作站上运行的 Linux 机器(Ubuntu),托管在 Windows 2016 服务器上。目前,Ubuntu 机器有一个静态 IP 192.168.50.200。QNAP 在端口 445 上使用 smb2。我的环境中的 Windows 客户端将网络驱动器(例如)映射到 \192.168.50.200\Files、\192.168.50.200\Stuff 等。

以下是 haproxy 配置

log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-listeners
stats timeout 30s
user haproxy
group haproxy
daemon



defaults
log global
mode tcp
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

listen QNAP
bind 192.168.50.200:445
mode tcp
option tcplog
default_backend QNAP_NAS

backend QNAP_NAS
mode tcp
option tcplog
log global
balance roundrobin
timeout connect 5s
timeout server 10s
server Asgard1 192.168.50.35:445 check inter 5s fall 1 rise 10
server Asgard3 192.168.50.36:445 check backup

因此,从技术上讲,上述配置是可行的。我可以在 Windows 客户端上映射驱动器,如 \192.168.50.200\Stuff 等。但是,当我尝试通过重新启动 Windows 客户端当前连接到的 NAS 来测试故障转移时,所有内容仍然不可用,文件共享无法连接。似乎当我在 Windows 客户端上映射驱动器时,它会连接到 NAS 之一,例如 192.168.50.35。如果我重新启动 NAS @ 192.168.50.35,所有网络共享都会断开连接。

我可以在 haproxy 日志中看到它将 NAS 注册为关闭、0 个活动和 1 个备份等等,但是故障转移不起作用。

完全有可能我遗漏了某个部分,或者没有理解某些内容,所以我希望有人能帮忙。重新映射驱动器似乎也不起作用。Windows 客户端似乎仍想转到已关闭的 NAS。可能是因为还有其他驱动器通过 .200 地址映射,而这些驱动器实际上指向负载平衡器中的 .35?

任何帮助都将不胜感激!有点让我抓狂哈哈

谢谢!

相关内容