Skip to main content

Guide de Configuration HAProxy

Ce guide explique comment configurer HAProxy pour différents types de services : RDP, Minecraft et sites Internet. Chaque section contient une explication étape par étape pour permettre à quiconque de configurer HAProxy avec ses propres liens et adresses.

 

Configuration Générale

Fichier de Configuration

Commencez par créer ou éditer le fichier de configuration HAProxy situé généralement à /etc/haproxy/haproxy.cfg.

commande linux pour éditer la config :

sudo nano /etc/haproxy/haproxy.cfg

Voici la configuration générale :

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # SSL configurations
    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
    ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
    log     global
    mode    tcp
    option  tcplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

listen stats
    bind :9000
    mode http
    stats enable
    stats hide-version
    stats uri /
    stats auth admin:admin

 

Configuration des Services

Frontend et Backend

Pourquoi un Frontend ?

Le frontend dans HAProxy est responsable de l'écoute des connexions entrantes des clients. Il définit quels ports et quelles adresses IP sont surveillés par HAProxy pour recevoir les demandes de connexion. Le frontend peut également effectuer certaines actions de filtrage ou de routage initial avant de transférer la demande à l'un des backends appropriés.

Pourquoi un Backend ?

Le backend dans HAProxy est responsable de la gestion des connexions sortantes vers les serveurs réels. Chaque backend contient une ou plusieurs directives server qui définissent les serveurs vers lesquels les connexions doivent être dirigées. Le backend inclut également des paramètres pour surveiller la santé des serveurs et d'autres configurations spécifiques à la gestion des connexions.

Comment Modifier les Liens et Adresses ?

Pour changer les liens ou les adresses IP, vous devrez modifier les entrées correspondantes dans les sections frontend et backend. Par exemple, si vous avez un nouveau site ou serveur, vous ajouterez ou modifierez les directives de use_backend et server en conséquence.

 

1. Configuration RDP

Pour configurer HAProxy pour les services RDP (Remote Desktop Protocol), suivez ces étapes :

Frontend

Définissez un frontend qui écoute sur les ports RDP :

frontend rdp_frontend
    bind *:3389
    bind *:3390
    bind *:3391
    mode tcp
    tcp-request inspect-delay 5s
    tcp-request content accept if RDP_COOKIE

    use_backend rdp_backend_qoyri if { dst_port 3389 }
    use_backend rdp_backend_refu if { dst_port 3390 }
    use_backend rdp_backend_bawikx if { dst_port 3391 }

Pour changer les ports RDP ou ajouter un nouveau, modifiez ou ajoutez une nouvelle ligne bind et une nouvelle directive use_backend.

Backend

Définissez les backends pour chaque port RDP :

backend rdp_backend_qoyri
    mode tcp
    server qoyri_server 192.168.0.5:3389 check

backend rdp_backend_refu
    mode tcp
    server refu_server 192.168.0.52:3389 check

backend rdp_backend_bawikx
    mode tcp
    server bawikx_server 192.168.0.169:3389 check

Pour changer les adresses des serveurs RDP, modifiez les lignes server en conséquence.

 

2. Configuration Minecraft

Pour configurer HAProxy pour les serveurs Minecraft, suivez ces étapes :

Frontend

Définissez un frontend qui écoute sur le port Minecraft par défaut (25565) :

frontend minecraft
    mode tcp
    bind 0.0.0.0:25565
    tcp-request inspect-delay 5s

    acl mc_feiti_flg payload(5,15) -m sub feiti.qoyri.fr
    tcp-request content accept if mc_feiti_flg
    use_backend mc_feiti_app if mc_feiti_flg

    acl mc_bawikx_flg payload(5,13) -m sub mc.bawikx.fr
    tcp-request content accept if mc_bawikx_flg
    use_backend mc_bawikx_app if mc_bawikx_flg

    acl mc_refugier_flg payload(5,17) -m sub refugier.qoyri.fr
    tcp-request content accept if mc_refugier_flg
    use_backend mc_refugier_app if mc_refugier_flg

    acl mc_garabou_flg payload(5,17) -m sub garabou.qoyri.fr
    tcp-request content accept if mc_garabou_flg
    use_backend mc_garabou_app if mc_garabou_flg

Pour ajouter ou modifier des serveurs Minecraft, ajustez les lignes acl, tcp-request content accept, et use_backend.

Backend

Définissez les backends pour chaque serveur Minecraft :

backend mc_feiti_app
    server mc_feiti_srv 192.168.0.52:25566 check

backend mc_bawikx_app
    server mc_bawikx_srv 192.168.0.110:25565 check

backend mc_refugier_app
    server mc_refugier_srv 192.168.0.52:25565 check

backend mc_garabou_app
    server mc_garabou_srv 192.168.0.52:25610 check

Pour changer les adresses des serveurs Minecraft, modifiez les lignes server.

 

3. Configuration des Sites Internet

Pour configurer HAProxy pour les sites web via SSL, suivez ces étapes :

Frontend

Définissez un frontend qui écoute sur le port HTTPS (443) :

frontend https_frontend
   bind *:443
   mode tcp
   option tcplog
   tcp-request inspect-delay 5s
   tcp-request content accept if { req_ssl_hello_type 1 }
   use_backend ssl_archive_backend if { req_ssl_sni -i archive.qoyri.fr }
   use_backend ssl_cloud_backend if { req_ssl_sni -i cloud.qoyri.fr }
   use_backend ssl_ftp_backend if { req_ssl_sni -i ftp.qoyri.fr }
   use_backend ssl_gprojet_backend if { req_ssl_sni -i gprojet.qoyri.fr }

Pour ajouter ou modifier des sites web, ajustez les lignes use_backend et req_ssl_sni.

Backend

Définissez les backends pour chaque site :

backend ssl_archive_backend
   mode tcp
   server server1 192.168.0.52:443 check

backend ssl_cloud_backend
   mode tcp
   server server2 192.168.0.52:443 check

backend ssl_ftp_backend
   mode tcp
   server server3 192.168.0.52:443 check

backend ssl_gprojet_backend
   mode tcp
   server server3 192.168.0.52:443 check

Pour changer les adresses des serveurs web, modifiez les lignes server.

 

Notes Importantes

  • Redémarrage HAProxy : Après avoir modifié la configuration, redémarrez HAProxy pour appliquer les changements.
sudo systemctl restart haproxy
  • Vérification de la Configuration : Vous pouvez vérifier la syntaxe de la configuration avant de redémarrer HAProxy avec la commande suivante :
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
  • Sécurité : Assurez-vous de sécuriser l'interface de statistiques en utilisant des mots de passe forts et en limitant l'accès par adresse IP si nécessaire.

 

En suivant ces étapes, vous devriez être capable de configurer HAProxy pour différents types de services et gérer efficacement la répartition de la charge et la disponibilité de vos applications.