We have been using Citrix Netscaler (ADC) to load balance Horizon ever since we migrated away from XenApp over 10 years ago. Our strategy changed a little bit when Horizon went away from Security Servers in favor of UAG Appliances. We have a LB VIP for our UAG's, and another LB VIP that the UAG's use to connect to the Connection Servers. That way you can connect with any combination of connection servers and UAG appliances. Back in the day, you needed to create health checks that treated each Security Server/Connection Server as a single entity and if either failed, you needed to take that security server out of the load balancer.
A key concept is the load balancers do not maintain the connection to the UAG appliances. Once the Netscalers point connections to a specific UAG appliance, that connection is made around the load balancers. Therefore, your UAG appliances need either a publicly accessible IP address or an inbound NAT, similar to the LB VIP.
If you would like more information on how to load balancer Horizon with Netscaler, check out Carl Stalhood's blog.
VMware Horizon Load Balancing – NetScaler / Citrix ADC – Carl Stalhood
Within Carl's blog, he has a link to Aresh Sarkari's blog containing some concepts related to load balancing with F5.
Persistence Profile – F5 LTM Load Balancing for VMware Unified Access Gateway Appliance | AskAresh
Sean Massey also has a great resource that is vendor agnostic.
Omnissa Horizon Load Balancing Overview | The Virtual Horizon
I hope this helps!