Om maximale beschikbaarheid, schaalbaarheid en hoge prestaties van webapplicaties te garanderen, is het nu gebruikelijk om technologieën te implementeren die redundantie introduceren, zoals serverclustering en taakverdeling. Bijvoorbeeld het opzetten van een cluster van servers die allemaal dezelfde applicatie(s) draaien en vervolgens load balancer(s) ervoor inzetten om het verkeer te verdelen.
HAProxy is een open-source, krachtige, krachtige, betrouwbare, veilige en veelgebruikte hoge beschikbaarheid TCP/HTTP load balancer, proxyserver en SSL/TLS-terminator gebouwd voor websites met veel verkeer. Het draait betrouwbaar goed op Linux, Solaris, GratisBSD, OpenBSD evenals AIX-besturingssystemen.
Deze handleiding laat zien hoe u een speciale load balancer voor hoge beschikbaarheid instelt met: HAProxy Aan CentOS 8 om het verkeer te regelen in een cluster van NGINX webservers. Het laat ook zien hoe te configureren SSL/TLS beëindiging in HAProxy.
In totaal 4 servers met minimaal CentOS 8 installatie.
HAProxy-server instellen HA-proxyserver - hostnaam: haproxy-server.tecmint.lan; IP-adres: 10.42.0.247. Testsitedomein: www.tecmint.lan Client-webservers instellen Webserver #1 - hostnaam: websrv1.tecmint.lan; IP-adres: 10.42.0.200. Webserver #2 - hostnaam: websrv2.tecmint.lan; IP-adres: 10.42.0.21. Webserver #3 - hostnaam: websrv3.tecmint.lan; IP-adres: 10.42.0.34.
1. Log in op al uw CentOS 8 clientcomputers en installeer de Nginx webserver met behulp van de dnf pakketbeheerder zoals getoond.
# dnf installeer Nginx.
2. Start vervolgens de Nginx service, schakel het voorlopig in om automatisch te starten bij het opstarten van het systeem en bevestig dat het actief is door de status te controleren met behulp van de systemctl-opdrachten (doe dit op alle clientcomputers).
# systemctl start nginx. # systemctl schakel nginx in. # systemctl-status nginx.
3. Ook als de firewalld service draait op alle clientmachines (wat u kunt controleren door systemctl start firewalld uit te voeren), moet u de HTTP en HTTPS services in de firewallconfiguratie om verzoeken van de load balancer door de firewall naar de Nginx webservers. Laad vervolgens de firewalld service om de nieuwe wijzigingen door te voeren (doe dit op alle clientcomputers).
# firewall-cmd --zone=public --permanent --add-service=http. # firewall-cmd --zone=public --permanent --add-service=https. # firewall-cmd --reload.
4. Open vervolgens een webbrowser op uw lokale machines en test of de Nginx installatie werkt prima. Gebruik de client-IP's om te navigeren, zodra u de ziet Nginx testpagina, betekent dit dat de webserver die op de clientcomputer is geïnstalleerd correct werkt.
5. Vervolgens moeten we testpagina's maken op de clientcomputers die we later zullen gebruiken om de HAProxy opstelling.
Webserver #1 # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig. # echo "Toon site van websrv1.tecmint.lan"> /usr/share/nginx/html/index.html Webserver #2 # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig. # echo "Toon site van websrv2.tecmint.lan"> /usr/share/nginx/html/index.html Webserver #3 # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig. # echo "Toon site van websrv3.tecmint.lan"> /usr/share/nginx/html/index.html.
6. Installeer nu de HAProxy pakket op de HAProxy server door de volgende opdracht uit te voeren.
# dnf installeer haproxy.
7. Start vervolgens de HAProxy service, schakel het in om automatisch te starten bij het opstarten van het systeem en controleer de status ervan.
# systemctl start haproxy. # systemctl schakel haproxy in. # systemctl status haproxy.
8. Nu zullen we de HAProxy configureren met behulp van het volgende configuratiebestand.
#vi /etc/haproxy/haproxy.cfg.
Het configuratiebestand is verdeeld in vier grote secties.
Om de opties onder te begrijpen: algemene instellingen en standaardinstellingen, lees de HAProxy-documentatie (link aan het einde van het artikel). Voor deze handleiding gebruiken we de standaardinstellingen.
9.HAProxy wanneer eenmaal geïmplementeerd een belangrijke rol zal spelen in uw IT-infrastructuur, is het configureren van logboekregistratie hiervoor een basisvereiste; hierdoor krijgt u inzicht in elke verbinding met uw backend-webservers.
De logparameter (gemarkeerd in de volgende schermafbeelding) verklaart een global Syslog server (zoals rsyslog de standaard in CentOS) die logberichten zal ontvangen. Hier kunnen meerdere servers worden gedeclareerd.
De standaardconfiguratie verwijst naar de localhost (127.0.0.1) en lokaal2 is de standaard faciliteitscode die wordt gebruikt om HAProxy-logberichten te identificeren onder rsyslog.
10. Vervolgens moet u de. vertellen rsyslog server hoe te ontvangen en te verwerken HAProxy berichten loggen. Open het rsyslog-configuratiebestand om: /etc/rsyslog.conf of maak een nieuw bestand aan binnen de /etc/rsyslog.d directory, bijvoorbeeld /etc/rsyslog.d/haproxy.conf.
# vi /etc/rsyslog.d/haproxy.conf.
Kopieer en plak de volgende configuratie om log te verzamelen met: UDP op de standaardpoort 514.
$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514
Voeg ook deze regels toe om instructies te geven rsyslog om naar twee afzonderlijke logbestanden te schrijven op basis van de ernst, waarbij: lokaal2 is de faciliteitscode die is gedefinieerd in de HAProxy-configuratie hierboven.
local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log.
11. Sla het bestand op en sluit het. Start vervolgens de opnieuw rsyslog service om de recente wijzigingen toe te passen.
# systemctl herstart rsyslog.
12. In deze sectie laten we zien hoe u de front-end en back-end proxy's configureert. Ga terug naar de HAProxy configuratiebestand en wijzig de standaard front-end- en backend-secties als volgt. We zullen niet ingaan op een gedetailleerde uitleg van elke parameter, u kunt altijd de officiële documentatie raadplegen.
De volgende configuratie definieert a luister gedeelte gebruikt om de. te serveren HAProxy-statistieken bladzijde. De binden parameter wijst een luisteraar toe aan een bepaald IP-adres (*
voor iedereen in dit geval) en haven (9000).
de statistieken inschakelen instelling activeert de statistiekenpagina die zal worden geopend met behulp van de URI /statistieken (d.w.z http://server_ip: 9000/statistieken
).
de statistieken autorisatie instelling wordt gebruikt om een basisverificatie toe te voegen bij het openen van de pagina (replace haproxy en [e-mail beveiligd] met een gebruikersnaam en wachtwoord naar keuze).
luister stats bind *:9000 stats activeer stats verberg-versie stats uri /stats stats admin if LOCALHOST stats auth haproxy:[e-mail beveiligd]
13. De volgende configuratie definieert een frontend-sectie genaamd TL (u kunt een naam naar keuze opgeven). De modus parameter definieert de modus waarin HAProxy werkt.
De acl (Toegangscontrole lijst) parameter wordt gebruikt om een beslissing te nemen op basis van inhoud die uit het verzoek is gehaald. In dit voorbeeld wordt het verzoek als gewoon beschouwd HTTP als het niet is gemaakt SSL.
Dan de http-verzoek set-header instelling wordt gebruikt om een HTTP-header aan de aanvraag toe te voegen. Dit helpt bij het informeren Nginx dat het oorspronkelijke verzoek is gedaan HTTP (of via poort 80).
De default_backend of use_backend richtlijn definieert de backend-servers, in dit geval waarnaar wordt verwezen door TL_web_servers.
Let daar op HAProxy zal een "503 Service niet beschikbaar fout” als een verzoek niet wordt gerouteerd door een use_backend of default_backend richtlijn.
frontend TL bind *:80 modus http acl http ssl_fc, niet http-request set-header X-Forwarded-Protocol http if http default_backend TL_web_servers.
14. Vervolgens moeten we een backend-sectie definiëren waar de evenwicht instelling bepaalt hoe HAProxy selecteert de back-endservers om een aanvraag te verwerken als er geen persistentiemethode is die die selectie overschrijft.
De koekje richtlijn maakt: op basis van cookies volharding, het instrueert HAProxy om een cookie met de naam te verzenden SERVERID aan de klant en om deze te associëren met de ID kaart van de server die de eerste reactie heeft gegeven.
De server richtlijn wordt gebruikt om de upstream-servers te definiëren in het formaat sever_name (bijv websrv1), server_IP: poort en opties.
Een belangrijke optie is: rekening wat vertelt HAProxy om de beschikbaarheid van een server te blijven controleren en te rapporteren op de statistiekenpagina.
backend TL_web_servers modus http balans roundrobin optie httpchk HEAD / cookie SERVERUID insert indirecte nocache server websrv1 10.42.0.200:80 cookie websrv1 check server websrv2 10.42.0.21:80 cookie websrv2 check server websrv3 10.42.0.34:80 cookie websrv3 rekening.
Geef commentaar op andere frontend- en backend-secties zoals weergegeven in de onderstaande schermafbeelding. Sla het bestand op en sluit het.
15. Start nu de opnieuw HAProxy service om de nieuwe wijzigingen toe te passen.
# systemctl herstart haproxy.
16. Zorg er vervolgens voor dat de HTTP (haven 80) en HTTPS (haven 433) services worden als volgt in de firewall geopend om clientverzoeken te accepteren. Open ook poort 9000 in de firewall voor toegang tot de statistiekenpagina en laad de firewall-instellingen opnieuw.
# firewall-cmd --zone=public --permanent --add-service=http. # firewall-cmd --zone=public --permanent –add-service=https. # firewall-cmd --zone=public --permanent --add-port=9000/tcp. # firewall-cmd --reload.
17. Nu is het tijd om de. te testen HAPrxoy opstelling. Voeg op de lokale desktopcomputer van waaruit u toegang hebt tot alle servers, de volgende regel toe in de /etc/hosts bestand om ons in staat te stellen het dummy-sitedomein te gebruiken.
10.42.0.247 www.tecmint.lan.
18. Open vervolgens een browser en navigeer met behulp van het serveradres of het sitedomein.
http://10.42.0.247/ OF. http://www.tecmint.lan/
19. Om toegang te krijgen tot de HAProxy statistiekenpagina, gebruik dan het volgende adres.
http://10.42.0.247:9000/stats.
Gebruik vervolgens de gebruikersnaam en het wachtwoord die u hebt gedefinieerd in het HAProxy-configuratiebestand (raadpleeg de parameter stats auth).
Na een succesvolle login, komt u terecht op de HAProxy statistiekenpagina die u statistieken toont die betrekking hebben op de gezondheid van uw servers, huidige aanvraagpercentages, responstijden en nog veel meer.
Om te laten zien hoe het statusrapport werkt met betrekking tot de kleurcodes, hebben we een van de back-end servers geplaatst.
20. In deze laatste sectie zullen we demonstreren hoe te configureren SSL/TLS om alle communicatie tussen de HAProxy-server en de client te beveiligen. HAProxy ondersteunt vier belangrijke HTTPS configuratiemodi, maar voor deze handleiding gebruiken we SSL/TLS lossen.
In SSL/TLS ontlaadmodus, HAProxy ontcijfert het verkeer aan de clientzijde en wordt in duidelijk verkeer verbonden met de backend-servers.
We beginnen met het maken van de certificaat en sleutel zoals weergegeven (beantwoord de vragen dienovereenkomstig op basis van uw bedrijfsgegevens tijdens het maken van het certificaat, zoals gemarkeerd op de schermafbeelding).
# mkdir /etc/ssl/tecmint.lan. # cd /etc/ssl/tecmint.lan/ # openssl req -x509 -nodes -days 365 -newkey rsa: 2048 -keyout /etc/ssl/tecmint.lan.key -out /etc/ssl/tecmint.lan.crt. # cd /etc/ssl/tecmint.lan/ # cat tecmint.crt tecmint.key >tecmint.pem. # ls-l.
21. Open vervolgens de HAProxy configuratiebestand (/etc/haproxy/haproxy.cfg) en bewerk het front-end gedeelte.
frontend TL bind *:80 bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem omleidingsschema https if !{ ssl_fc } mode http acl http ssl_fc, niet acl https ssl_fc http-request set-header X-Forwarded-Protocol http if http http-request set-header X-Forwarded-Protocol https if https default_backend TL_web_servers.
Sla het bestand op en sluit het.
22. Start vervolgens de HAProxy-service opnieuw om de nieuwe wijzigingen toe te passen.
# systemctl herstart haproxy.service.
23. Open vervolgens een webbrowser en probeer de site opnieuw te openen. De browser zal een foutmelding geven vanwege het zelfondertekende certificaat, klik op Geavanceerd verder gaan.
Dat is het voor nu! Elke webapplicatie heeft zijn eigen set van vereisten, u moet load balancing ontwerpen en configureren om aan de vereisten van uw IT-infrastructuur en applicatie te voldoen.
Om meer inzicht te krijgen in enkele van de configuratie-opties die in deze handleiding worden gebruikt, en in het algemeen hoe te gebruiken HAProxy, zie de officiële HAProxy community editie documentatie of HAProxy enterprise versie documentatie. U kunt uw vragen of opmerkingen plaatsen via het onderstaande feedbackformulier.