我一直在努力使用 HAProxy 实现负载均衡器,并将负载均衡器用作后端(终端服务器 Windows 2008 R2)的桥梁,以便客户端与负载均衡器之间的远程会话将得到保护,并且无需 RDP 网关即可清除负载均衡器与后端之间的流量。任何想法都将不胜感激。谢谢。
PS:这是针对上面的配置进行的简单配置
[客户端] =安全=> [代理服务器] =清除=> [Windows 服务器池]
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon
stats socket /tmp/haproxy.sock
defaults
log global
mode tcp
option tcplog
option dontlognull
maxconn 2000
timeout connect 3h
timeout client 3h
timeout server 3h
frontend secure
bind *:3389
bind *:443 ssl crt /etc/haproxy/certs/x.pem
mode tcp
default_backend rdp
backend rdp
mode tcp
option tcpka
balance leastconn
tcp-request inspect-delay 5s
tcp-request content accept if RDP_COOKIE
persist rdp-cookie
stick-table type string len 32 size 10k expire 8h
stick on rdp_cookie(mstshash)
option tcp-check
tcp-check connect port 3389 ssl
server ts1 x.x.x.x:3389
答案1
由于您已将其mode
设置为 TCP,因此您实际上并没有对流量进行任何 SSL 解密,而只是在客户端和服务器之间来回传送(加密)位。
我甚至不认为您可以使用 RDP 实现您所提议的功能,因为 HAProxy 仅将 HTTP 理解为第 7 层协议。
答案2
目前还不清楚您尝试根据 HAProxy 中用于前端的端口对哪些服务进行负载平衡,我会说是 RD 网关和 RD Web 访问,但您永远无法确定。
乍一看,我认为你需要 2 个前端,也就是 VIP:一个监听 443 以卸载 SSL 连接,另一个将未加密的流量转发到后端,即
[客户端] =secure=> HAProxy VIP 443 =clear=> HAProxy VIP 3389 =clear=> 后端 - Windows 服务器池
答案3
这不是 HTTP,因此 haproxy 不了解内容流中的 cookie 或其他内容(如果了解,则需要解密该流)。如果您使用balance source
后端选择方法,只要该服务器在线,来自给定 IP 地址的连接就会路由到同一服务器。