HaProxy
HAProxy (High Availability Proxy) est un logiciel open source reconnu pour sa robustesse en matière de répartition de charge (load balancing) et de proxy inverse (reverse proxy). Il est capable de distribuer intelligemment le trafic réseau entre plusieurs serveurs backend afin d’optimiser les performances, d’assurer une haute disponibilité et de garantir la continuité des services.
Architecture
Nous avons choisi d’installer HaProxy sur notre VPS Saphire afin qu’il serve de load balancer pour accéder au cluster kubernetes et au cluster Garage (stockage S3).
Environnement
Le VPS Saphire est sous l'OS NixOS (voir section Netbox pour l'installation et configuration).
Configuration
Dans le NixOS options on cherche les options du package HaProxy afin de trouver comment ajouter la configuration. Voici la structure à adopté pour activer le service et ajouter une configuration :
config,
pkgs,
...
}: {
services.haproxy = {
enable = true;
config = ''
'';
};
}
Cluster Kubernetes
config = ''
# Load balancer pour l'API Kubernetes
frontend kube-api
bind IP_HOST:6443
mode tcp
default_backend kube-masters
backend kube-masters
mode tcp
balance roundrobin
option tcp-check
server k3s-uranium IP_K3S_URANIUM:6443 check
server k3s-plutonium IP_K3S_PLUTONIUM:6443 check
server k3s-titanium IP_K3S_TITANIUM:6443 check
# Load balancer pour les applications Kubernetes (HTTP/HTTPS)
frontend kube-loadbalancer
bind IP_HOST:80
bind IP_HOST:443
mode http
default_backend kube-loadbalancer-servers
backend kube-loadbalancer-servers
mode http
balance roundrobin
# option httpchk GET /healthz
http-check expect status 200
server k3s-uranium IP_K3S_URANIUM:80 check
server k3s-plutonium IP_K3S_PLUTONIUM:80 check
server k3s-titanium IP_K3S_TITANIUM:80 check
'';
Cluster S3
Comparé à Kubernetes, nous utilisons l'adresse ip Netbird pour ne pas l'exposer sur internet.
config = ''
# Load balancer pour s3
frontend s3
bind IP_NETBIRD_HOST:3900
mode tcp
default_backend garage-s3
backend garage-s3
mode tcp
balance roundrobin
option tcp-check
server garage-uranium IP_GARAGE_URANIUM:3900 check
server garage-plutonium IP_GARAGE_PLUTONIUM:3900 check
server garage-titanium IP_GARAGE_TITANIUM:3900 check
'';
Last modified: 30 April 2025