This is well-documented by Citrix too; I just thought I’d write a few lines on a gotcha I happened upon:
Load balancing the Citrix StoreFront has two prerequisites:
- The StoreFront servers must see the load balancer VIP when looking up the service FQDN.
- The load balancers must be configured with session affinity, since it doesn’t seem as though StoreFront keeps track of user sessions between StoreFront servers.
In addition, Citrix recommends running a load balancing scheme based on least connections.
In HAProxy, a valid backend config looks something like this:
backend bk_citrixsf
balance leastconn
stick-table type ip size 200k expire 30m
stick on src
acl h_xff_exists req.hdr(X-Forwarded-For) -m found
http-request add-header X-Forwarded-For %[src] unless h_xff_exists
server ctxsf01 ....