HAProxy installeren en configureren op Rocky Linux 8

Als je een toepassing op het Internet inzet, zijn de beschikbaarheid, schaalbaarheid en prestaties van de toepassing erg belangrijk voor een betere gebruikerservaring. Er zijn veel technologieën die redundantie introduceren, zoals load balancing, clustering en proxy.

HAProxy is een gratis, open bron en betrouwbare load balancer, ontworpen voor websites met veel verkeer. Het balanceert inkomend verkeer door het te verdelen over meerdere achterliggende servers.

In dit artikel laten we je zien hoe je HAProxy installeert op Rocky Linux 8.

Voor het doel van deze handleiding gebruiken we de volgende opstelling:

Server IP adres

HAProxy 172.16.10.10

Backend1 172.16.10.11

Backend2 172.16.10.12

Vereisten

  • Een server met RockyLinux 8.
  • Een root wachtwoord is op de server ingesteld.

Installeer HAProxy

Standaard is het HAProxy pakket beschikbaar in de Rocky Linux 8 standaard repo. Je kunt het installeren met het volgende commando:

dnf install haproxy -y

Zodra de HAProxy geïnstalleerd is, start je de HAProxy dienst en zet je hem aan om te starten bij het herstarten van het systeem:

systemctl start haproxy
systemctl enable haproxy

Configureer HAProxy

Vervolgens moet je het bestand /etc/haproxy/haproxy.cfg bewerken en twee secties frontend en backend wijzigen. In de sectie Frontend moet je HAProxy IP zijn poort, stats URI en backend naam bepalen. In de sectie backend moet je het load balance algoritme bepalen, de naam van de backend server, IP’s, en poort.

nano /etc/haproxy/haproxy.cfg

Wijzig de volgende secties:

frontend http_balancer
    bind 172.16.10.10:80
    option http-server-close
    option forwardfor
    stats uri /haproxy?stats

default_backend     Apache_webservers

backend apache_webservers
    mode        http
    balance     roundrobin
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    
    server  apache1  172.16.10.11:80  check
    server  apache2  172.16.10.12:80  check

Sla het bestand op en sluit het als je klaar bent, dan moet je het bestand /etc/rsyslog.conf bewerken.

nano /etc/rsyslog.conf

Haal het commentaar van de volgende regels weg:

module(load="imudp")
input(type="imudp" port="514")

Bewaar en sluit het bestand en maak dan het bestand haproxy.conf voor rsyslog met het volgende commando:

nano /etc/rsyslog.d/haproxy.conf

Voeg de volgende regels toe:

local2.=info     /var/log/haproxy-access.log
local2.notice    /var/log/haproxy-info.log

Start vervolgens de rsyslog service en zet hem aan om te starten bij het herstarten van het systeem:

systemctl start rsyslog
systemctl enable rsyslog

Herstart tenslotte de HAProxy dienst om de veranderingen toe te passen:

systemctl restart haproxy

Je kunt ook de status van de HAProxy dienst controleren met het volgende commando:

systemctl status haproxy

Je zou de volgende uitvoer moeten zien:

? haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-08-03 03:10:37 EDT; 1min 16s ago
  Process: 44032 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 44036 (haproxy)
    Tasks: 2 (limit: 12524)
   Memory: 3.1M
   CGroup: /system.slice/haproxy.service
           ??44036 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
           ??44111 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid

Aug 03 03:10:36 RockyLinux8 systemd[1]: Starting HAProxy Load Balancer...
Aug 03 03:10:37 RockyLinux8 systemd[1]: Started HAProxy Load Balancer.

Configureer Firewall

Vervolgens moet je op alle servers firewalld instellen en poort 80 door de firewall toelaten.

Je kunt het volgende commando uitvoeren om poort 80 toe te staan:

firewall-cmd --permanent --add-port=80/tcp

Herlaad vervolgens de dienst firewalld om de veranderingen toe te passen.

firewall-cmd --reload

Configureer de achterliggende servers

Vervolgens moet je op beide backend servers de Apache server installeren. Voer het volgende commando uit om de Apache server te installeren.

dnf install httpd -y

Zodra Apache server geïnstalleerd is, start je de Apache dienst en schakel je hem in om te starten bij het herstarten van het systeem:

systemctl start httpd
systemctl enable httpd

Vervolgens moet je op beide backend servers het standaard index.html bestand wijzigen.

Bewerk op de eerste backend het index.html bestand met het volgende commando:

nano /usr/share/httpd/noindex/index.html

Verwijder alle regels en voeg de volgende regel toe:

Welcome to First Apache Web Server!

Sla het bestand op en sluit het als je klaar bent.

Op de tweede backend bewerk je het index.html bestand met het volgende commando:

nano /usr/share/httpd/noindex/index.html

Verwijder alle regels en voeg de volgende regel toe:

Welcome to Second Apache Web Server!

Sla het bestand op en sluit het als je klaar bent.

Verifieer HAProxy

Op dit punt is HAProxy ingesteld om alle inkomende verzoeken door te sturen naar de backend servers op basis van het load-balancing algoritme. Nu is het tijd om te controleren of HAProxy goed werkt of niet.

Open je web browser en typ het HAProxy IP in de URL http://172.16.10.10. Je zou je eerste apache webserver pagina moeten zien:

Eerste server

Ververs vervolgens dezelfde pagina nog eens, je zou je tweede apache webserver pagina moeten zien:

Tweede server

Dit bevestigt dat HAProxy werkt zoals verwacht en het verkeer verdeelt tussen twee backend servers.

Conclusie

Gefeliciteerd! Je hebt met succes de HAProxy load balancer geïnstalleerd en ingesteld op Rocky Linux 8. Je kunt nu HAProxy in de productie-omgeving implementeren om hoge prestaties en schaalbaarheid te bereiken.