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

Ludovic

Consultant Technique

Partagez cet article