Balancing multiple Horizon Workspace gateway-va with HAProxy
August 24, 2013 2 Comments
When working with Horizon Workspace the first component you will scale to multiple instances is probably the gateway-va since this is the access point of all users, just to make sure it’s always available for connections.
In this case you need a load balancer to direct all users to all the gateway-va you have in your environment; i wrote about commercial and open source load balancers and also how to build one with HAProxy in this post.
I’m going to show you how i configure it with Horizon Workspace but remember that since I’ve learned about HAProxy only relatively recently by Luca Dell’Oca my configuration is just the way i do it and not necessarily the best so use the comments if you want to contribute.
#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global log 127.0.0.1 local2 info chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch option accept-invalid-http-request retries 3 timeout http-request 60s timeout queue 30m timeout connect 1800s timeout client 30m timeout server 30m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen stats :9000 stats realm Haproxy\ Statistics stats uri /stats #--------------------------------------------------------------------- # Redirect to secured #--------------------------------------------------------------------- frontend unsecured bind :80 redirect scheme https if !{ ssl_fc } #--------------------------------------------------------------------- # frontend secured #--------------------------------------------------------------------- frontend front bind :443 ssl crt /etc/haproxy/reverseproxy.pem mode http acl workspace hdr_beg(host) -i workspace.myvirtualife.net use_backend workspace if workspace #--------------------------------------------------------------------- # balancing between the various backends #--------------------------------------------------------------------- backend workspace mode http server workspace1 192.168.110.10:443 weight 1 check port 443 inter 2000 rise 2 fall 5 ssl server workspace2 192.168.110.11:443 weight 1 check port 443 inter 2000 rise 2 fall 5 ssl
Try to add a gateway-va and experiment with HAProxy to test HAProxy as load balancer. You can use this article if you want to know how to do it.
There are few more things worth of noting:
- timeouts are really long here otherwise users will experience disconnects because this is the kind of web app you keep open quite a lot;
- on port 9000 on the HAProxy host you will find statistics, for example “lb.yourcompany.yourdomain:9000/stats”, that will give numbers about state of connections and state of backends, problems, etc…
- “log 127.0.0.1 local2 info” is necessary if you want logging enabled which is so important when troubleshooting problems; a lot on how to read logs in the HAProxy documentation
if you intend to put a SSL cert like in my configuration, know that it has to be a chain of cert and private key like this:
-----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----
To make logging work and write to a separate file instead of putting everything in “/var/log/messages”, edit your “/etc/rsyslog.conf” file and make sure these lines are present:
# Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # HAProxy local2.* /var/log/haproxy.log
Pingback: Building a higly available load balancing solution with HAProxy | MyVirtuaLife.Net
Pingback: Horizon Workspace: BIG-IP F5 and multiple gateway-va. | Piszki Lab | EN