当后端 RDP 会话断开时前端仍保持连接

当后端 RDP 会话断开时前端仍保持连接

我使用 HAProxy 在客户端和 RD 网关服务器之间对 RDP 连接进行负载平衡。HAProxy
后面有两个 RD 网关服务器(192.168.0.10/192.168.0.5),负载平衡方法是ROUND_ROBIN,并通过 保持会话SOURCE_IP

这是我的配置:

global
    daemon
    user nobody
    group haproxy
    log /dev/log local0 debug alert
    log /dev/log local1 notice alert
    maxconn 2500
    stats socket /var/lib/neutron/lbaas/v2/7ee12684-c45d-4af4-8ae7-381743beb78e/haproxy_stats.sock mode 0666 level user

defaults
    log global
    retries 3
    option redispatch
    timeout connect 5000
    timeout client 50000
    timeout server 50000

frontend 377c24a1-1735-4947-a854-0d1fb8d0cd97
    option tcplog
    maxconn 2500
    bind 192.168.0.7:443
    mode tcp
    default_backend 51d6cead-368e-45a3-bcda-b1fb8cd5f2dd

backend 51d6cead-368e-45a3-bcda-b1fb8cd5f2dd
    mode tcp
    balance roundrobin
    stick-table type ip size 10k
    stick on src
    timeout check 5s
    server 3ccbdfa9-fa69-4388-ad1b-046731825659 192.168.0.10:443 weight 1 check inter 5s fall 3
    server 7dde5bd2-ad90-4668-9642-466446646948 192.168.0.5:443 weight 1 check inter 5s fall 3

它可以工作,但我发现当后端 RDP 会话与 RD 网关断开连接时(我可以从事件查看器中看到断开连接的日志),客户端连接不会停止,我仍然可以VM 的屏幕(但无法执行任何操作),这意味着会话仍然保持连接,为什么?

我希望前端应该从后端获取断开连接的信息并尝试重新建立连接(因为会话已经与 RD 网关服务器断开连接)。

是否有任何配置错误?我对这个问题一无所知,任何帮助我都感激不尽。

答案1

奇怪,客户端应该会弹出一个窗口,要求从连接代理重新连接。您的超时时间非常短,本博客推荐tcp keepalive 也是如此:

clitimeout 1h
srvtimeout 1h
option tcpka 

我确实依稀记得有人说过 RDS 有一个启用/禁用重新连接选项的选项?

如需了解更多背景信息并查看您拥有的其他部署选项,请查看此RDS 部署指南

相关内容