D'Iwwersetzung vum Artikel gouf um Virowend vum Start vum Cours virbereet
Load Balancing ass eng gemeinsam Léisung fir d'horizontal Skaléierung vun Webapplikatiounen iwwer verschidde Hosten wärend de Benotzer en eenzege Punkt vum Zougang zum Service ubitt.
HAProxy beméit sech d'Ressourceverbrauch ze optimiséieren, den Duerchsatz ze maximéieren, d'Äntwertzäit ze minimiséieren an d'Iwwerlaaschtung vun enger individueller Ressource ze vermeiden. Et kann op enger Rei vu Linux Verdeelungen installéiert ginn, wéi CentOS 8, op déi mir an dësem Guide konzentréieren, souwéi Systemer
HAProxy ass besonnesch gëeegent fir Websäite mat ganz héije Traffic a gëtt dofir dacks benotzt fir d'Zouverlässegkeet an d'Leeschtung vu Multi-Server Webservice Konfiguratiounen ze verbesseren. Dëse Guide skizzéiert d'Schrëtt fir HAProxy als Lastbalancer op engem CentOS 8 Cloud Host opzestellen, deen dann de Traffic op Äre Webserver routert.
Als Viraussetzung fir bescht Resultater sollt Dir op d'mannst zwee Webserver an e Laaschtbalancéierungsserver hunn. Webserver mussen op d'mannst e Basis Webservice wéi nginx oder httpd lafen fir d'Laaschtbalancéierung tëscht hinnen ze testen.
Installéiert HAProxy op CentOS 8
Well HAProxy eng séier evoluéierend Open Source Applikatioun ass, ass d'Verdeelung verfügbar fir Iech an de Standard CentOS Repositories vläicht net déi lescht Versioun. Fir déi aktuell Versioun erauszefannen, fuert de folgende Kommando:
sudo yum info haproxy
HAProxy bitt ëmmer dräi stabil Versioune fir ze wielen: déi zwee rezentst ënnerstëtzte Versiounen an eng drëtt, méi al Versioun déi nach ëmmer kritesch Updates kritt. Dir kënnt ëmmer déi lescht stabil Versioun kucken, déi op der HAProxy Websäit opgezielt ass, an dann entscheeden mat wéi enger Versioun Dir wëllt schaffen.
An dësem Guide wäerte mir déi lescht stabil Versioun 2.0 installéieren, déi am Moment vum Schreiwen vum Guide nach net an de Standardrepositories verfügbar war. Dir musst et aus der ursprénglecher Quell installéieren. Awer als éischt, kontrolléiert ob Dir déi néideg Konditioune erfëllt hutt fir de Programm erofzelueden an ze kompiléieren.
sudo yum install gcc pcre-devel tar make -y
Luet de Quellcode erof mam Kommando hei ënnen. Dir kënnt kucken ob et eng méi nei Versioun verfügbar ass
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Wann den Download fäerdeg ass, extrahéiert d'Dateien mat dem Kommando hei ënnen:
tar xzvf ~/haproxy.tar.gz -C ~/
Gitt an den ausgepackten Quellverzeichnis:
cd ~/haproxy-2.0.7
Dann kompiléiere de Programm fir Äre System:
make TARGET=linux-glibc
A schlussendlech, installéiert HAProxy selwer:
sudo make install
HAProxy ass elo installéiert, awer et erfuerdert e puer zousätzlech Manipulatioune fir et ze funktionéieren. Loosst eis weider d'Software a Servicer hei ënnen opbauen.
HAProxy fir Äre Server opzestellen
Füügt elo déi folgend Verzeichnisser a Statistikdatei fir d'HAProxy Entréen derbäi:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Erstellt e symbolesche Link fir d'Binaeren, fir datt Dir HAProxy Kommandoen als normale Benotzer ausféiere kënnt:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Wann Dir e Proxy op Äre System als Service wëllt addéieren, kopéiert d'haproxy.init Datei aus Beispiller an Äre /etc/init.d Verzeichnis. Änneren d'Datei Permissiounen sou datt de Skript leeft, an dann de systemd Daemon nei starten:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Dir musst och de Service erlaben automatesch nei ze starten wann de System ufänkt:
sudo chkconfig haproxy on
Fir d'Bequemlechkeet ass et och recommandéiert en neie Benotzer derbäi ze ginn fir HAProxy ze lafen:
sudo useradd -r haproxy
Duerno kënnt Dir d'installéiert Versiounsnummer nach eng Kéier iwwerpréiwen mat dem folgenden Kommando:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
An eisem Fall sollt d'Versioun 2.0.7 sinn, wéi am Beispillerausgang uewen gewisen.
Schlussendlech ass d'Standard Firewall am CentOS 8 zimlech restriktiv fir dëse Projet. Benotzt déi folgend Kommandoen fir erfuerderlech Servicer z'erméiglechen an d'Firewall zréckzesetzen:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Load Balancer Setup
HAProxy opzemaachen ass e relativ einfache Prozess. Wesentlech, alles wat Dir maache musst ass HAProxy ze soen wéi eng Verbindungen et soll nolauschteren a wou se se weiderginn.
Dëst gëtt gemaach andeems Dir eng Konfiguratiounsdatei /etc/haproxy/haproxy.cfg erstellt mat definéierende Astellungen. Dir kënnt iwwer HAProxy Konfiguratiounsoptioune liesen
Belaaschtung an der Transportschicht (Schicht 4)
Loosst d'mat der Basis Setup ufänken. Erstellt eng nei Configuratiounsdatei, zum Beispill benotzt vi mam Kommando hei drënner:
sudo vi /etc/haproxy/haproxy.cfg
Füügt déi folgend Sektiounen un d'Datei. Ersetzen Servernumm wat soll Är Serveren op der Statistik Säit Opruff, an privat_ip - privat IP Adresse vun de Serveren op déi Dir de Webverkéier dirigéiere wëllt. Dir kënnt privat IP Adressen kontrolléieren
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
Dëst definéiert eng Transport Layer Laaschtbalancer (Layer 4) extern genannt http_front lauschteren op port 80, déi dann Verkéier un engem Standard Backend genannt http_back weider. Zousätzlech Statistiken /haproxy?stats verbënnt d'Statistik Säit mat der spezifizéierter Adress.
Verschidde Belaaschtungsalgorithmen.
Serveren an der Backend Sektioun spezifizéieren erlaabt HAProxy dës Serveren ze benotzen fir Belaaschtung no engem Round-Robin Algorithmus wa méiglech.
Balancéiere Algorithmen gi benotzt fir ze bestëmmen op wéi ee Server am Backend all Verbindung weidergeleet gëtt. Hei sinn e puer vun den nëtzlechen Optiounen:
- Roundrobin: All Server gëtt am Tour no sengem Gewiicht benotzt. Dëst ass de glatten a fairsten Algorithmus wann d'Veraarbechtungszäit vun de Serveren gleichméisseg verdeelt bleift. Dësen Algorithmus ass dynamesch, wat erlaabt datt d'Gewiicht vum Server op der Flucht ugepasst gëtt.
- Leastconn: de Server mat de mannste Verbindunge gëtt ausgewielt. Round Robin gëtt tëscht Servere mat der selwechter Laascht gemaach. Dësen Algorithmus ze benotzen ass recommandéiert fir laang Sessiounen wéi LDAP, SQL, TSE, etc., awer et ass net ganz gëeegent fir kuerz Sessiounen wéi HTTP.
- Éischten: Den éischte Server mat verfügbare Verbindungsplazen kritt d'Verbindung. Serveren sinn aus dem niddregsten numeresch ID op déi héchste ausgewielt, déi Standard op de Server Positioun am Bauerenhaff. Wann e Server maxconn erreecht, gëtt de nächste Server benotzt.
- Source: D'Quell IP Adress gëtt gehasht a gedeelt duerch d'Gesamtgewiicht vun de lafen Serveren fir ze bestëmmen wéi ee Server d'Ufro kritt. Op dës Manéier wäert déi selwecht Client IP Adress ëmmer op dee selwechte Server goen, während d'Server d'selwecht bleiwen.
Laaschtbalancéierung op Applikatiounsniveau opsetzen (Layer 7)
Eng aner verfügbar Optioun ass e Laaschtbalancer ze konfiguréieren fir op der Applikatiounsschicht (Schicht 7) ze lafen, wat nëtzlech ass wann Deeler vun Ärer Webapplikatioun op verschiddene Hosten lokaliséiert sinn. Dëst kann erreecht ginn andeems d'Transmissioun vun der Verbindung gedréckt gëtt, zum Beispill duerch URL.
Öffnen d'HAProxy Konfiguratiounsdatei mat engem Texteditor:
sudo vi /etc/haproxy/haproxy.cfg
Dann konfiguréieren d'Frontend a Backend Segmenter wéi am Beispill hei ënnen:
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
De Frontend deklaréiert eng ACL-Regel genannt url_blog déi op all Verbindunge mat Weeër ugeet, déi mat /blog ufänken. Use_backend spezifizéiert datt Verbindungen, déi dem url_blog Zoustand passen, solle vun engem Backend mam Numm blog_back zerwéiert ginn, an all aner Ufroe ginn vum Standard Backend gehandhabt.
Op der Backend Säit setzt d'Konfiguratioun zwou Gruppe vu Serveren op: http_back, wéi virdrun, an en neien genannt blog_back, deen d'Verbindungen op example.com/blog geréiert.
Nodeems Dir d'Astellunge geännert hutt, späichert d'Datei an nei start HAProxy mam folgenden Kommando:
sudo systemctl restart haproxy
Wann Dir Warnungen oder Fehlermeldungen während dem Startup kritt, kontrolléiert Är Konfiguratioun fir si a gitt sécher datt Dir all déi néideg Dateien an Ordner erstallt hutt, probéiert dann erëm nei ze starten.
Test de Setup
Wann HAProxy konfiguréiert ass a leeft, öffnen d'ëffentlech IP Adress vum Lastbalancer Server an engem Browser a kontrolléiert ob Dir richteg mam Backend verbonne sidd. De Statistik Uri Parameter an der Konfiguratioun erstellt eng Statistik Säit op der spezifizéierter Adress.
http://load_balancer_public_ip/haproxy?stats
Wann Dir d'Statistik Säit lued, wann all Är Server gréng weisen, da war de Setup erfollegräich!
D'Statistik Säit enthält e puer nëtzlech Informatioun fir Är Webhoster ze verfolgen, dorënner Up / Down Zäit an Zuel vun Sessiounen. Wann de Server rout markéiert ass, vergewëssert Iech datt de Server ageschalt ass an datt Dir et vun der Lastbalancermaschinn kënnt pingelen.
Wann Äre Lastbalancer net reagéiert, gitt sécher datt HTTP Verbindungen net vun enger Firewall blockéiert ginn. Gitt och sécher datt HAProxy funktionnéiert mam Kommando hei ënnen:
sudo systemctl status haproxy
D'Statistik Säit mat engem Passwuert schützen
Wéi och ëmmer, wann d'Statistik Säit einfach um Frontend opgezielt ass, dann ass se fir jiddereen op ze gesinn, wat vläicht net eng gutt Iddi ass. Amplaz kënnt Dir et eng personaliséiert Portnummer zouginn andeems Dir d'Beispill hei ënnen um Enn vun Ärer haproxy.cfg Datei bäidréit. Ersetzen Benotzernumm и Passwuert fir eppes sécher:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Nodeems Dir eng nei Nolauschterergrupp bäigefüügt hutt, läscht déi al Statistik Uri Link aus der Frontend Grupp. Wann Dir fäerdeg sidd, späichert d'Datei a restart HAProxy.
sudo systemctl restart haproxy
Da öffnen de Lastbalancer erëm mat der neier Portnummer a loggt Iech mat dem Benotzernumm a Passwuert un, deen Dir an der Konfiguratiounsdatei uginn hutt.
http://load_balancer_public_ip:8181
Vergewëssert Iech datt all Är Server nach ëmmer gréng sinn an dann just de Lastbalancer IP opmaachen ouni Portnummeren an Ärem Browser.
http://load_balancer_public_ip/
Wann Dir op d'mannst eng Varietéit vu Landungssäiten op Äre Back-End Server hutt, mierkt Dir datt all Kéier wann Dir d'Säit nei lued, kritt Dir eng Äntwert vun engem anere Host. Dir kënnt verschidde Balancealgorithmen an der Konfiguratiounssektioun probéieren oder auschecken
Fazit: HAProxy Load Balancer
Gratulatioun fir Ären HAProxy Loadbalancer erfollegräich opzestellen! Och mat engem Basis Laaschtbalancéierungsopstellung kënnt Dir d'Performance an d'Disponibilitéit vun Ärer Webapplikatioun wesentlech verbesseren. Dëse Guide ass just eng Aféierung fir d'Laaschtbalancéierung mat HAProxy, wat fäeg ass vill méi wéi dat wat am Quick Setup Guide ofgedeckt ka ginn. Mir recommandéieren experimentéieren mat verschiddene Konfiguratiounen benotzt
Andeems Dir verschidde Hosten benotzt fir Äre Webservice mat Kappraum ze schützen, kann de Lastbalancer selwer nach ëmmer e Punkt vum Ausfall presentéieren. Dir kënnt eng héich Disponibilitéit weider verbesseren andeems Dir eng schwiewend IP tëscht multiple Lastbalancer installéiert. Dir kënnt méi doriwwer gewuer ginn an eisem
Méi iwwer de Cours
Source: will.com