Willy Tarreau <w <at> 1wt.eu> writes:

> 
> Hi Mathew,
> 
> On Thu, Aug 15, 2013 at 10:21:51AM +0100, Mathew Levett wrote:
> > Hello Willy,
> > 
> > I believe the client (mstsc.exe) connects to the Gateway server via RPC
> > over HTTPS (443), the gateway then terminates this, and makes a new 
normal
> > RDP connection to haproxy, and then onwards to the Real servers, so in 
this
> > case the Gateway is the client to haproxy.
> > 
> > However what seams to be happening is that the loadbalancer then 
balances
> > the connections as normal but does not seam to honor the MSTS cookie at
> > all. its there in the packet capture and its encoded IP match the 
correct
> > server but it seams haproxy ignores it.
> 
> I suspect there is a very minor difference in the packets that make 
haproxy
> not recognize it as the one supposed to contain the MSTS cookie. It could 
be
> both a horrible or a subtle bug. Could you please send me privately a copy
> of the packet capture for the faulty connection ? I'd like to run the 
protocol
> parser by hand on it to understand what's wrong there.
> 
> Thanks!
> Willy
> 
> 


Hi, 
I just stumpled upon this post while googling. We had exactly the same 
issue a couple of months a go in a very familiar setting. From Wan to LAn , 
if the customer hires multiple terminalservers, the usersessions pass these 
components: 

0: Hardware firewall
1: Keepalived/LVS Loadbalancer (Layer 4, In Direct Return modus running on 
CentOS 6.5)
2: RemoteDesktop Gateway, redundant on 2x Windows 2012 (Not R2) virtual 
machines
3: HaProxy version 1.5-dev19, single instance running on CentOS 6.5
4: 1 out of 3 terminal servers, running Windows 2012 (Not R2)

Just like Mathew stated; Persistance works great when connecting to the VIP 
op HaProxy, but fails when taking the remotedesktopgateway into the mix. 
HaProxy just wont reconnect users to their existing session. The Keepalived 
loadbalancer mentioned in bullet 1 does not seem to contribute to the 
problem.

To work around this issue, we decided to work around the lack of 
persistance by installing the RemoteDesktop ConnectionBroker-role onto the 
RD Gateway servers. This works great, but it kind of defeats the use of 
HaProxy. It also adds to the complexity of the build solution, because we 
now need SQL to enable high-availability on the Connectionbroker-role.
In turn SQL also would have to be build redundant. 

I guess the question of the day would be: Where you guess able to figure 
out why userpersitance didn't work for mathew? Is there any way i can 
contribute to a solution? (By providing certain logging, doing TCP dumps, 
or anything else?) 






Reply via email to