HAProxy is krachtige open-source software die load balancing en proxy­con­fi­gu­ra­tie mogelijk maakt voor TCP- en HTTP-ge­ba­seer­de ap­pli­ca­ties. Het kan in slechts enkele stappen op Debian 12 worden ge­ïn­stal­leerd en wordt vaak gebruikt in systemen met hoge be­schik­baar­heid om verzoeken efficiënt te verdelen, waardoor de sta­bi­li­teit en pres­ta­ties van ap­pli­ca­ties worden verbeterd.

Wat is HAProxy?

HAProxy (High Avai­la­bi­li­ty Proxy) is een krachtige en be­trouw­ba­re load balancer en reverse proxy die wordt gebruikt voor het verdelen van netwerk- en ap­pli­ca­tie­ver­keer. De ap­pli­ca­tie on­der­steunt zowel laag 4 (trans­port­laag, bijv. TCP) als laag 7 (toe­pas­sings­laag, bijv. HTTP) van het OSI-model wat betreft load balancing. Dankzij de lage latentie, hoge ef­fi­ci­ën­tie en uit­ge­brei­de con­fi­gu­ra­tie­mo­ge­lijk­he­den is HAProxy geschikt voor bedrijven van elke omvang.

Bedrijven en ont­wik­ke­laars gebruiken HAProxy om de belasting over meerdere backend-servers te verdelen, ser­ver­sto­rin­gen op te vangen en de algehele pres­ta­ties van ap­pli­ca­ties te ver­be­te­ren. De software speelt een centrale rol in veel we­bin­fra­struc­tu­ren, met name in hoog­be­schik­ba­re en schaal­ba­re ap­pli­ca­ties. Tot de be­lang­rijk­ste functies behoren SSL/TLS-ter­mi­na­tie, sta­tus­con­tro­les van backend-servers, rate limiting en me­cha­nis­men voor DDoS-be­scher­ming.

HAProxy stap voor stap in­stal­le­ren op Debian

Stap 1: Werk het systeem bij

Voordat u HAProxy in­stal­leert, moet u uw Linux-dis­tri­bu­tie bijwerken. Zo zorgt u ervoor dat alle pakketten up-to-date zijn en dat de in­stal­la­tie vlek­ke­loos verloopt.

Met het volgende commando worden de pak­ket­lijs­ten bij­ge­werkt en worden alle be­schik­ba­re updates voor Debian 12 ge­ïn­stal­leerd:

sudo apt update && sudo apt upgrade -y
bash

Stap 2: HAProxy in­stal­le­ren

Debian 12 bevat HAProxy in zijn officiële pak­ket­bron­nen, dus de in­stal­la­tie is eenvoudig met behulp van de in­ge­bouw­de pak­ket­be­heer­der apt.

sudo apt install haproxy -y
bash

Met dit commando wordt HAProxy samen met alle benodigde af­han­ke­lijk­he­den ge­down­load en ge­ïn­stal­leerd.

Stap 3: Con­tro­leer de versie van HAProxy

Con­tro­leer na de in­stal­la­tie of HAProxy correct is ge­ïn­stal­leerd. Dit kun je doen door de ge­ïn­stal­leer­de versie van HAProxy op te vragen:

haproxy -v
bash

De uitvoer zou er ongeveer zo uit moeten zien:

Afbeelding: Screenshot of the current HAProxy version in the terminal
After you run the command, the currently installed version of HAProxy will be displayed in your terminal.

Zo weet je zeker dat HAProxy correct is ge­ïn­stal­leerd.

Stap 4: HAProxy als service in­scha­ke­len

Om HAProxy au­to­ma­tisch te laten starten bij het opstarten van het systeem en continu te laten draaien, moet de service worden in­ge­scha­keld en gestart.

sudo systemctl enable haproxy
sudo systemctl start haproxy
bash

Tot slot kun je het volgende commando gebruiken om te con­tro­le­ren of de dienst correct draait:

sudo systemctl status haproxy
bash

Als HAProxy correct werkt, zou je een actieve (lopende) uitvoer moeten zien die er ongeveer zo uitziet:

Afbeelding: Screenshot of the current HAProxy status in the terminal
You can see in the terminal output that HAProxy is now working without problems from the status ‘active (running)’.

Stap 5: Ba­sis­con­fi­gu­ra­tie van HAProxy

Het con­fi­gu­ra­tie­be­stand van HAProxy bevindt zich in /etc/haproxy/haproxy.cfg. Voordat u wij­zi­gin­gen aanbrengt, is het raadzaam een back-up te maken, zodat u hierop kunt te­rug­val­len mochten er fouten optreden:

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
bash

Nu kun je het bestand bewerken met een tekst­edi­tor naar keuze (zoals Vim of nano):

sudo nano /etc/haproxy/haproxy.cfg
bash

Een een­vou­di­ge HAProxy-con­fi­gu­ra­tie zou er als volgt uit kunnen zien:

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
defaults
	log global
	option httplog
	option dontlognull
	timeout connect 5000ms
	timeout client 50000ms
	timeout server 50000ms
frontend http_front
	bind *:80
	default_backend web_servers
backend web_servers
	balance roundrobin
	server server1 192.168.1.10:80 check
	server server2 192.168.1.11:80 check
txt

Deze con­fi­gu­ra­tie verdeelt HTTP-verzoeken volgens het round-robin-principe over twee web­ser­vers. De con­fi­gu­ra­tie is on­der­ver­deeld in ver­schil­len­de secties. Al­ler­eerst is er de globale sectie, waarin de ba­sis­in­stel­lin­gen voor HAProxy worden ge­de­fi­ni­eerd. In deze sectie wordt bij­voor­beeld aan­ge­ge­ven onder welk ge­brui­kers­ac­count HAProxy draait, hoeveel ge­lijk­tij­di­ge ver­bin­din­gen zijn toe­ge­staan en waar de log­be­stan­den worden op­ge­sla­gen. Er kan ook een chroot-map worden ge­de­fi­ni­eerd om HAProxy in een beperkte omgeving te laten draaien en zo de be­vei­li­ging te verhogen.

Na de algemene in­stel­lin­gen volgt de sectie defaults, waarin de stan­daard­waar­den voor alle volgende con­fi­gu­ra­ties worden ge­de­fi­ni­eerd. In deze sectie wordt bij­voor­beeld bepaald dat HAProxy in HTTP-modus werkt en dat HTTP-logging is in­ge­scha­keld. Ook worden ver­schil­len­de time-outs ge­de­fi­ni­eerd.

De overige secties van het con­fi­gu­ra­tie­be­stand, zoals sectie frontend en backend, regelen het daad­wer­ke­lij­ke da­ta­ver­keer. In de frontend-sectie wordt aan­ge­ge­ven op welke poorten HAProxy verzoeken ontvangt en hoe deze worden door­ge­stuurd. In de backend-sectie wordt ver­vol­gens bepaald naar welke servers het verkeer wordt door­ge­stuurd. Hier kunnen al­go­rit­men voor load balancing worden toegepast.

Na het bewerken moet je het bestand opslaan en HAProxy opnieuw opstarten:

sudo systemctl restart haproxy
bash

De in­stal­la­tie van HAProxy op Debian 12 is nu voltooid. De con­fi­gu­ra­tie kan op elk moment worden aangepast door het con­fi­gu­ra­tie­be­stand te wijzigen.

Ga naar hoofdmenu