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 ....