Ce tutoriel décrit la création d’un load balancer pour les Connection Server Horizon ou App Volumes Manager.
Nous utiliserons la distribution Linux de VMware : Photon OS 5.0, ainsi que le load balancer open source : HAProxy.
Prérequis :
Photon OS 5.0 OVA x86_64 lien
2 GB de RAM / 16 GB HDD
Une adresse IP
Déployer l’OVA sur l’infrastructure vSphere
Une fois l’appliance déployée, allumer celle-ci.
L’appliance est en DHCP, se connecter en SSH avec le compte root et le password changeme.
Changer le mot de passe (obligatoire).
Lancer la mise à jour des packages avec la commande tdnf upgrade -y
Désactiver le DHCP sur la carte Ethernet en éditant le fichier /etc/systemd/network/99-dhcp-en.network
Mettre DHCP=no
Pour définir une adresse IP fixe sur la machine virtuelle, créer un fichier /etc/systemd/network/10-static-en.network
Ajouter le contenu suivant :
[Match]
Name=eth0
[Network]
Address=<AdresseIP_de_HAProxy>/24
Gateway=<AdresseIP_Gateway>
DNS=<AdresseIP_DNS>
[DHCP]
UseDNS=false
Après avoir créé un fichier de configuration avec une extension .network, il faut exécuter la commande chmod pour définir les droits sur 644 :
chown systemd-network:systemd-network /etc/systemd/network/10-static-en.network
Créer un nouveau fichier nommé /etc/sysctl.d/55-keepalived.conf
Ajouter le contenu suivant :
#Enable IPv4 Forwarding
net.ipv4.ip_forward = 1
#Enable non-local IP bind
net.ipv4.ip_nonlocal_bind = 1
Editer le fichier /etc/systemd/scripts/ip4save
Ajouter les 4 lignes suivantes :
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 8404 -j ACCEPT
Installer HAProxy avec la commande tdnf install haproxy -y
Créer et chrooter un nouveau répertoire pour HAProxy :
mkdir /var/lib/haproxy
chmod 755 /var/lib/haproxy
Renommer le fichier exemple de configuration HAProxy :
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.old
Créer un nouveau fichier (avec vi ou touch) /etc/haproxy/haproxy.cfg
Copier le contenu suivant et modifier les champs surlignés :
# HAProxy configuration
#Global definitions
global
chroot /var/lib/haproxy
stats socket /var/lib/haproxy/stats
daemon
defaults
timeout connect 5s
timeout client 30s
timeout server 30s
### Configuration des statistiques ###
userlist stats-auth
group admin users admin
user admin insecure-password Horiz0n
group ro users stats
user stats insecure-password ReadOnly
frontend stats-http8404
mode http
bind <IP_HAProxy>:8404
default_backend statistics
backend statistics
mode http
stats enable
stats show-legends
stats show-node
stats refresh 30s
acl AUTH http_auth(stats-auth)
acl AUTH_ADMIN http_auth_group(stats-auth) admin
stats http-request auth unless AUTH
stats admin if AUTH_ADMIN
stats uri /stats
######
### Horizon Connection servers ###
frontend horizon-http
mode http
bind <IP_HAProxy>:80
# Redirect http to https
redirect scheme https if !{ ssl_fc }
frontend horizon-https
mode tcp
bind <IP_HAProxy>:443
default_backend horizon
backend horizon
mode tcp
option ssl-hello-chk
balance source
server CS1 <IPConnSrv1>:443 weight 1 check inter 30s fastinter 2s downinter 5s rise 3 fall 3
server CS2 <IPConnSrv2>:443 weight 1 check inter 30s fastinter 2s downinter 5s rise 3 fall 3
######
Taper la commande suivante pour que HAProxy soit persistent après chaque reboot :
systemctl enable haproxy.service
Redémarrer l’appliance Photon OS :
reboot
HAProxy est désormais opérationnel.
Si une erreur 421 Unknown apparaît lors de la connexion d’un client via le load balancer, il est nécessaire d’activer la redirection d’hôte et d’ajouter l’adresse IP ou le nom d’hôte du HAProxy sur chaque Connection Server dans la Console Horizon.
Pour vérifier l’état du service HAProxy, utiliser la commande suivante :
systemctl status haproxy.service
Pour obtenir les statistiques de HAProxy, se connecter à l’URL suivante avec le mot de passe défini dans le fichier /etc/haproxy/haproxy.cfg :
http://<AdresseIP_HAProxy>:8404/stats