使用haproxy实现http/ssh/mstsc复用

,网上较多HTTP/SSH复用,但实际环境中,使用HAPROXY做IIS负载均衡时,还需要使80端用口来使用远程桌面管理服务器。

近日通过Wireshark抓包,找到了TPKT的报头字段,终于成功实现RDP协议复用:

注:通常RDP使用TPKT作为其传输协议,TPKT运行在TCP之上。当用于传输RDP时,使用的TCP端口是3389年,而不是正常的TPKT端口102。

参考文献:http://blog.csdn.net/kevin_bobolkevin/article/details/50790967

TPKT通讯说明

https://wenku.baidu.com/view/9f509844e2bd960591c67723.html


使用HAPROXY实现HTTP/SSH/mstsc复用“> <br/> </p> <p> <br/> </p> <p>最终配置文件如下,供参考:</p> <p> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - </p> <p> <br/> </p> <p> </p> <p>全球,,,,守护进程</p> <p>,,,,用户haproxy </p> <p>,,,,haproxy </p> <p>,,,,maxconn 49985 </p> <p>,,,,日志127.0.0.1 local0 </p> <p>,,,,日志127.0.0.1 local1注意</p> <p>,,,2048年,# tune.ssl.default-dh-param </p> <p> <br/> </p> <p> </p> <p>违约,,,,模式tcp </p> <p>,,,,日志全球</p> <p>,,,,日志127.0.0.1 local0犯错</p> <p> <br/> </p> <p>,,,,选择tcplog </p> <p>,,,,选择dontlog-normal </p> <p> <br/> </p> <p>,,,,连接超时,,10 s </p> <p>,,,,超时队列,,30年代,</p> <p>,,,,客户端超时,,</p> <p> 15米,,,,超时client-fin 15 m </p> <p>,,,,超时服务器,,</p> <p> 15米,,,,超时隧道,,12 h </p> <p> <br/> </p> <p>听monitor  </p> <p>,,,,结合*:8888 </p> <p> #监听端口</p> <p>,,,,模式http </p> <p> # http的7层模式</p> <p>,,,,日志全球</p> <p>,,,,日志127.0.0.1 local0犯错</p> <p> <br/> </p> <p>,,,,maxconn 5 </p> <p> <br/> </p> <p>,,,,选择httplog </p> <p> <br/> </p> <p>,,,,统计数据支持</p> <p>,,,,统计数据uri/</p> <p>,,,,统计刷新15 s </p> <p> <br/> </p> <p>,,,,连接超时,,10 s </p> <p>,,,,超时队列,,30年代,</p> <p>,,,,客户端超时,,30年代</p> <p>,,,,超时服务器,,30年代</p> <p> <br/> </p> <p> http听</p> <p>,,,,绑定*:80 </p> <p> maxconn 800 </p> <p>,,客户机超时1 h </p> <p>,,tcp-request inspect-delay 2 s </p> <p>,,acl is_http req.payload (0, 3) - m本474554 504 f53 505554 44454 c </p> <p>,,acl is_ssh req.payload (0, 3) - m 535348本,,</p> <p>,,acl is_rdp req.payload (0, 3) - m 030000本,,</p> <p>,,tcp-request内容接受如果is_http </p> <p>,,# use_backend http如果is_http </p> <p>,,use_backend ssh如果is_ssh </p> <p>,,use_backend rdp如果is_rdp </p> <p> #监听端口</p> <p>,,,,选择tcpka </p> <p>,,,,#是否允许客户端发送tcp keepalive包,这个和http的keepalive没有关系</p> <p>,,,,#选择redispatch, </p> <p>,,,,#是否允许失败后重新分配会话,这个设置会存在返回的K/3云系统的会话id变化导致闪退。可能的原因服务端有异常或者传输出现了异常</p> <p>,,,,选择abortonclose </p> <p>,,,,#当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接</p> <p>,,,,# tcp-request inspect-delay 30年代</p> <p> <br/> </p> <p>,,,,hash-type一致,,,,</p> <p>,,,,此平衡循环</p> <p>,,,,stick-table类型ip大小10240 k到期24 h </p> <p>,,,,贴在src </p> <p>,,,,服务器server01, 192.168.90.121:80,体重100,检查代理来检查agent-port 3333 minconn 0 maxconn 250 on-marked-down shutdown-sessions </p> <p>,,,,服务器server02, 192.168.90.122:80,体重100,检查代理来检查agent-port 3333 minconn 0 maxconn 250 on-marked-down shutdown-sessions </p> <p> <br/> </p> <p>后台ssh </p> <p>,,模式tcp </p> <p>,,超时服务器1 h </p> <p>,,服务器server-ssh 192.168.90.126:22 </p> <p> <br/> </p> <p>后台rdp </p> <p>,,模式tcp </p> <p>,,超时服务器1 h </p> <p>,,服务器server-mstsc 192.168.90.121:3389 </p> <p> <br/> </p><h2 class=使用haproxy实现http/ssh/mstsc复用