Aller au contenu principal

HAProxy (haproxy)

Répartiteur de charge des services répliqués : frontaux et serveurs décrits en JSON, page de statistiques et métriques Prometheus.

Généré depuis catalog/services/haproxy.yaml : ne pas modifier à la main.

Résumé​

Version3.2.9
Usageinstaller et configurer
Coucheinfrastructure (présentée à part)
CatégoriePasserelles et répartition de charge
Méthodes d'installationpackage, podman
Connexion externenon
Réservé au bac à sablenon

Licence​

Identifiant SPDXGPL-2.0-or-later
Politique de licenceexception de licence
Exception de licenceLEX-004 (en attente de la décision du client)
Composant de la plateformehaproxy

Paquets et artefacts​

Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.

TypePaquetVersionLicenceDétails
image de conteneurdocker.io/library/haproxy3.2.9GPL-2.0-or-laterclé d'image haproxy, utilisée par haproxy, condensé sha256:7eb80a6c4555dd64fd5b01c078b33637b1af1871d636570624ef0b079857527e
paquet systèmehaproxyversion du dépôt configuréGPL-2.0-or-laterfamille RHEL (dnf)
paquet systèmehaproxyversion du dépôt configuréGPL-2.0-or-laterfamille Debian (apt)

Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.

Systèmes et architectures pris en charge​

MéthodeSystèmes d'exploitationArchitectures
packagefamille RHEL (dnf), famille Debian (apt)x86_64, aarch64 (non restreintes par le descripteur)
podmanfamille RHEL (dnf), famille Debian (apt), Arch Linux (pacman)x86_64, aarch64 (non restreintes par le descripteur)

Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.

Prérequis​

Hôte​

Le descripteur ne déclare aucun contrôle préalable de l'hôte.

Programmes que les commandes et les contrôles du service lancent sur l'hôte, hors des racines gérées : les ajouter à allowed_commands de l'agent (voir Sécurité de l'agent Navin), sinon l'agent les refuse avec command_not_allowed : /usr/sbin/haproxy.

Réseau et ports​

ComposantNom du portPortOuvert dans le pare-feu de l'hôte
haproxystats8404/tcpoui
haproxyfrontendfrontends[].bind_port/tcpoui

Paramètres du noyau​

ParamètreValeur
net.core.somaxconn4096
net.ipv4.ip_nonlocal_bind1

Services et connexions nécessaires​

Ce service n'a aucune dépendance.

Méthodes et modes d'installation​

MéthodeDéfautCe que la méthode utilise
packageouiles paquets système du descripteur, installés par le gestionnaire de paquets de l'hôte
podman-les images de conteneur du descripteur, exécutées par Podman sous systemd

Composants​

ComposantTypeMéthodes d'installationPorts
HAProxy (haproxy)maîtrepackage, podman8404/tcp, frontends[].bind_port/tcp

Unique (single) (par défaut)​

Un seul répartiteur de charge.

Ce que le mode déploie :

ComposantPlacement
haproxymin 1, max 1

Paire active et de secours (pair)​

Deux répartiteurs identiques qui partagent une IP virtuelle tenue par keepalived.

Ce que le mode déploie :

ComposantPlacement
haproxymin 2, max 2

Installer ce service​

L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.

  1. Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.

  2. Choisissez le service. À l'étape Service, sélectionnez HAProxy. La carte affiche la licence GPL-2.0-or-later. Choisissez la Méthode parmi package, podman (par défaut package).

  3. Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : single (par défaut), pair. Chaque mode déploie les composants listés dans Méthodes et modes d'installation.

  4. Liaisons. Ce service n'a aucune dépendance : l'étape Liaisons n'a rien à lier.

  5. Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.

  6. Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.

  7. Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services.

Haute disponibilité​

Clusterréplicas (replication)
Haute disponibilitéexterne (external)
BasculeIP virtuelle (vip)
Réplicationaucun (none)
QuorumVRRP (vrrp)
Découvertestatique (static)
Point d'entréeIP virtuelle (vip)
Documentation officiellehttps://docs.haproxy.org/3.2/configuration.html

Prérequis​

PrérequisDoit être hautement disponibleModesDescription
keepalivedouipairkeepalived sur les deux mêmes hôtes déplace l'IP virtuelle (VRRP).

Topologie par mode​

ModesNiveau le plus haut du catalogueRépartitionComposant du quorumDomaines de panneDescription
singleautonome (standalone)unique (single)-1Un répartiteur : un point de défaillance unique.
pairha (ha)actif-passif (active-passive)-2Deux répartiteurs identiques ; keepalived porte l'IP virtuelle sur l'un des deux.

Remarques​

  • HAProxy ne partage pas son état entre les deux instances : les connexions en cours sur l'instance perdue sont coupées, les clients se reconnectent par l'IP virtuelle.

Paramètres de configuration​

Routage​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Frontaux et serveurs (frontends)json[]-nonnonnonListe de {name, bind_port, mode http|tcp, backend {balance, check_path, servers [hôte:port]}} ; un frontal par entrée, dont le bind_port est publié sur l'hôte. Avec la méthode podman, 127.0.0.1 dans servers désigne le conteneur lui-même : indiquez l'adresse de l'hôte.
Port des statistiques (stats_port)port8404-nonnonnonPort de la page de statistiques, de /health et des métriques Prometheus /metrics.

Réglages​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Connexions maximales (maxconn)int20000min 256, max 1000000nonnonouiLimite globale de connexions.
Délai client (timeout_client)duration300s-nonnonnonDélai d'inactivité côté client (long pour les réponses en flux).
Délai serveur (timeout_server)duration300s-nonnonnonDélai d'inactivité côté serveur.

Sécurité​

ParamètreTypeDéfautValeurs permisesObligatoireSecretRedémarrageDescription
Utilisateur des statistiques (stats_user)stringnavin-stats-nonnonnonIdentifiant de la page de statistiques (stats auth) ; /health et /metrics restent ouverts aux sondes.
Mot de passe des statistiques (stats_password)passwordgénéré-nonouinonMot de passe de la page de statistiques, généré à chaque installation et conservé dans le coffre du Manager.
TLS (tls_enabled)boolfalse-nonnonouiServir la page de statistiques, /health et /metrics en TLS avec un certificat émis par l'autorité de la console (le certificat et sa clé sont réunis au démarrage dans un fichier 0600 du répertoire d'exécution, la forme que lit HAProxy).

Points d'accès​

Point d'accèsSchémaComposantPortCheminParamètre TLSParamètres de liaisonSecrets de liaisonCommande de provisionnement
statshttphaproxy8404 (stats_port)-tls_enabled---

Commandes​

CommandeComposantCibleDescription
Valider la configuration (validate)haproxytous les hôtesExécute haproxy -c sur la configuration générée.
Recharger (reload)haproxytous les hôtesRecharge la configuration sans couper les connexions.

Contrôles de santé​

Vivacité (par instance)​

ComposantContrôleDétails
haproxyHTTP {{ ('https://' ~ host.fqdn) if config.tls_enabled else ('http://' ~ (host.ip or '127.0.0.1')) }}:{{ config.stats_port }}/healthAttendu 200 ; 20 tentatives ; intervalle 1 s ; délai 3 s

Contrôles préalables​

ContrôleTypeSignificationSévéritéComposants
stats_port_freeport_free {"param": "stats_port"}port 8404 libre sur l'hôtebloquanttous les composants

Désinstallation​

Chemins supprimés quand les données sont purgées : {{ paths.log }}.

Liens rapides​

  • Statistiques : {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.stats_port }}/stats

Documentation amont​