Kā iestatīt HAProxy kā slodzes līdzsvarotāju Nginx sistēmā CentOS 8
Lai nodrošinātu maksimālu tīmekļa lietojumprogrammu pieejamību, mērogojamību un augstu veiktspēju, tagad parasti tiek ieviestas tehnoloģijas, kas ievieš atlaišanu, piemēram, serveru kopēšana un slodzes līdzsvarošana. Piemēram, izveidojot serveru kopu, kas visi darbojas vienā un tajā pašā lietojumprogrammā (-ās), un pēc tam izvietojot slodzes līdzsvarotājus (-us) trafika sadalei.
HAProxy ir atvērta pirmkoda, jaudīgs, augstas veiktspējas, uzticams, drošs un plaši izmantots augstas pieejamības TCP/HTTP slodzes līdzsvarotājs, starpniekserveris un SSL/TLS terminators, kas paredzēts ļoti lielas trafika vietnēm. Tas droši darbojas labi Linux, Solaris, FreeBSD, OpenBSD, kā arī AIX operētājsistēmās.
Šajā rokasgrāmatā parādīts, kā CentOS 8 iestatīt īpašu augstas pieejamības slodzes līdzsvarotāju ar HAProxy, lai kontrolētu trafiku NGINX tīmekļa serveru klasterī. Tas arī parāda, kā konfigurēt SSL/TLS izbeigšanu HAProxy.
Kopā 4 serveri ar minimālu CentOS 8 instalāciju.
----------- HAProxy Server Setup ----------- HA Proxy Server - hostname: haproxy-server.tecmint.lan; IP: 10.42.0.247 Test Site Domain: www.tecmint.lan ----------- Client Web Servers Setup ----------- Web Server #1 - hostname: websrv1.tecmint.lan; IP: 10.42.0.200 Web Server #2 - hostname: websrv2.tecmint.lan; IP: 10.42.0.21 Web Server #3 - hostname: websrv3.tecmint.lan; IP: 10.42.0.34
1. darbība: Nginx HTTP servera iestatīšana klienta mašīnās
1. Piesakieties visās savās CentOS 8 klienta mašīnās un instalējiet Nginx tīmekļa serveri, izmantojot dnf pakotņu pārvaldnieku, kā parādīts.
# dnf install Nginx
2. Pēc tam palaidiet pakalpojumu Nginx, pagaidām ļaujiet tam automātiski startēt sistēmas sāknēšanas laikā un apstipriniet, ka tas darbojas un darbojas, pārbaudot tā statusu, izmantojot komandas systemctl (dariet to visās klienta mašīnās).
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
3. Ja ugunsmūra pakalpojums darbojas visās klienta mašīnās (kuras varat pārbaudīt, palaižot systemctl start firewalld), ugunsmūra konfigurācijā jāpievieno HTTP un HTTPS pakalpojumi, lai ļautu slodzes līdzsvarotāja pieprasījumiem iziet cauri ugunsmūrim. uz Nginx tīmekļa serveriem. Pēc tam atkārtoti ielādējiet ugunsmūra pakalpojumu, lai ieviestu jaunās izmaiņas (dariet to visās klientu mašīnās).
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --zone=public --permanent --add-service=https # firewall-cmd --reload
4. Pēc tam vietējās mašīnās atveriet tīmekļa pārlūku un pārbaudiet, vai Nginx instalācija darbojas labi. Izmantojiet klienta IP, lai pārvietotos. Kad redzat Nginx testa lapu, tas nozīmē, ka klienta mašīnā instalētais tīmekļa serveris darbojas pareizi.
5. Pēc tam mums klienta mašīnās jāizveido testa lapas, kuras vēlāk izmantosim, lai pārbaudītu HAProxy iestatīšanu.
----------- Web Server #1 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig # echo "Showing site from websrv1.tecmint.lan"> /usr/share/nginx/html/index.html ----------- Web Server #2 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig # echo "Showing site from websrv2.tecmint.lan"> /usr/share/nginx/html/index.html ----------- Web Server #3 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig # echo "Showing site from websrv3.tecmint.lan"> /usr/share/nginx/html/index.html
2. darbība: HAProxy Server instalēšana un konfigurēšana CentOS 8
6. Tagad instalējiet HAProxy pakotni HAProxy serverī, izpildot šādu komandu.
# dnf install haproxy
7. Pēc tam palaidiet pakalpojumu HAProxy, ļaujiet tam automātiski startēt sistēmas sāknēšanas laikā un pārbaudiet tā statusu.
# systemctl start haproxy # systemctl enable haproxy # systemctl status haproxy
8. Tagad mēs konfigurēsim HAProxy, izmantojot šādu konfigurācijas failu.
# vi /etc/haproxy/haproxy.cfg
Konfigurācijas fails ir sadalīts četrās galvenajās sadaļās.
- globālie iestatījumi - iestata visa procesa parametrus.
- noklusējumi - šī sadaļa nosaka noklusējuma parametrus visām pārējām sekcijām pēc deklarēšanas.
- frontend - šajā sadaļā aprakstīts klausīšanās ligzdu kopums, kas pieņem klienta savienojumus
- Aizmugure - šajā sadaļā aprakstīts serveru kopums, ar kuru starpniekserveris izveidos savienojumu, lai pārsūtītu ienākošos savienojumus.
Lai izprastu globālo iestatījumu un noklusējuma opcijas, izlasiet HAProxy dokumentāciju (saite ir sniegta raksta beigās). Šajā rokasgrāmatā mēs izmantosim noklusējumus.
9. Pēc izvietošanas HAProxy būs nozīmīga loma jūsu IT infrastruktūrā, tādējādi pamatprasība ir tā konfigurēšana. tas ļauj iegūt ieskatu par katru savienojumu ar aizmugures tīmekļa serveriem.
Žurnāla parametrs (izcelts nākamajā ekrānuzņēmumā) paziņo par globālo Syslog serveri (piemēram, rsyslog par noklusējumu CentOS), kas saņems žurnāla ziņojumus. Šeit var deklarēt vairākus serverus.
Noklusējuma konfigurācija norāda uz localhost (127.0.0.1), un local2 ir noklusējuma objekta kods, ko izmanto, lai identificētu HAProxy žurnāla ziņojumus zem rsyslog.
10. Tālāk jums jāpasaka rsyslog serverim, kā saņemt un apstrādāt HAProxy žurnāla ziņojumus. Atveriet rsyslog konfigurācijas failu mapē /etc/rsyslog.conf vai direktorijā /etc/rsyslog.d izveidojiet jaunu failu, piemēram, /etc/rsyslog.d/haproxy.conf.
# vi /etc/rsyslog.d/haproxy.conf
Nokopējiet un ielīmējiet šādu konfigurāciju, lai noklusējuma 514 portā apkopotu žurnālu ar UDP.
$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514
Pievienojiet arī šīs rindas, lai norādītu rsyslog rakstīt divos atsevišķos žurnāla failos, pamatojoties uz smaguma pakāpi, kur local2 ir objekta kods, kas definēts iepriekš HAProxy konfigurācijā.
local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log
11. Saglabājiet failu un aizveriet to. Pēc tam restartējiet pakalpojumu rsyslog, lai lietotu pēdējās izmaiņas.
# systemctl restart rsyslog
12. Šajā sadaļā mēs parādīsim, kā konfigurēt priekšgala un aizmugures starpniekserverus. Atgriezieties pie HAProxy konfigurācijas faila un modificējiet noklusējuma priekšgala un aizmugures sadaļas šādi. Mēs neiedziļināsimies katra parametra detalizētā skaidrojumā, jūs vienmēr varat atsaukties uz oficiālo dokumentāciju.
Šajā konfigurācijā ir definēta klausīšanās sadaļa, ko izmanto, lai apkalpotu lapu HAProxy Stats. Saistīšanas parametrs piešķir klausītājam noteiktu IP adresi ( *
visiem šajā gadījumā) un portu (9000).
Stats iespējošanas iestatījums ļauj statistikas lapai, kurai piekļūs, izmantojot URI/stats (t.i., http:// server_ip: 9000/stats
).
Stats auth iestatījums tiek izmantots, lai pievienotu pamata autentifikāciju, piekļūstot lapai (aizvietojiet haproksi un [email ar izvēlēto lietotājvārdu un paroli).
listen stats bind *:9000 stats enable stats hide-version stats uri /stats stats admin if LOCALHOST stats auth haproxy:[email
13. Nākamajā konfigurācijā ir definēta frontend sadaļa ar nosaukumu TL (jūs varat norādīt sev tīkamu nosaukumu). Mode režīms nosaka režīmu, kurā darbojas HAProxy.
Acl (Piekļuves kontroles saraksts) parametrs tiek izmantots, lai pieņemtu lēmumu, pamatojoties uz saturu, kas iegūts no pieprasījuma. Šajā piemērā pieprasījums tiek uzskatīts par vienkāršu HTTP, ja tas nav izveidots, izmantojot SSL.
Tad HTTP-pieprasījuma kopas galvenes iestatījums tiek izmantots, lai pieprasījumam pievienotu HTTP galveni. Tas palīdz informēt Nginx, ka sākotnējais pieprasījums tika veikts, izmantojot HTTP (vai izmantojot 80. portu).
Direktīva default_backend vai use_backend definē aizmugures serverus, šajā gadījumā uz kuriem atsaucas TL_web_servers.
Ņemiet vērā, ka HAProxy atgriezīs kļūdu “503 Service Unavailable error”, ja pieprasījums netiek maršrutēts ar use_backend vai default_backend direktīvu.
frontend TL bind *:80 mode http acl http ssl_fc,not http-request set-header X-Forwarded-Protocol http if http default_backend TL_web_servers
14. Tad mums ir jādefinē aizmugures sadaļa, kur bilances iestatījums nosaka, kā HAProxy izvēlas aizmugures serverus, lai apstrādātu pieprasījumu, ja neviena noturības metode neņem vērā šo izvēli.
Sīkfailu direktīva nodrošina pastāvīgumu uz sīkfailiem, tā uzdod HAProxy nosūtīt klientam sīkfailu ar nosaukumu SERVERID un saistīt to ar tā servera ID, kurš sniedza sākotnējo atbildi.
Servera direktīva tiek izmantota augšupējo serveru definēšanai formātā sever_name (piem., Websrv1), server_IP: ports un opcijas.
Viena no galvenajām iespējām ir pārbaude, kas liek HAProxy turpināt pārbaudīt servera pieejamību un ziņot statistikas lapā.
backend TL_web_servers mode http balance roundrobin option httpchk HEAD / cookie SERVERUID insert indirect 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 check
Komentējiet visas citas priekšējās un aizmugures sadaļas, kā parādīts nākamajā ekrānuzņēmumā. Saglabājiet failu un aizveriet to.
15. Tagad restartējiet pakalpojumu HAProxy, lai lietotu jaunās izmaiņas.
# systemctl restart haproxy
16. Pēc tam pārliecinieties, ka ugunsmūrī ir atvērti HTTP (80. ports) un HTTPS (433. ports) pakalpojumi, lai klienta pieprasījumus pieņemtu šādi. Atveriet arī ugunsmūra 9000 portu, lai piekļūtu statistikas lapai, un atkārtoti ielādējiet ugunsmūra iestatījumus.
# 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
3. darbība: HAProxy iestatīšanas pārbaude un statistikas skatīšana
17. Tagad ir laiks pārbaudīt HAPrxoy iestatīšanu. Vietējā darbvirsmā, no kuras piekļūstat visiem serveriem, failā/etc/hosts pievienojiet šādu rindu, lai mēs varētu izmantot manekena vietnes domēnu.
10.42.0.247 www.tecmint.lan
18. Pēc tam atveriet pārlūkprogrammu un pārvietojieties, izmantojot servera adresi vai vietnes domēnu.
http://10.42.0.247/ OR http://www.tecmint.lan/
19. Lai piekļūtu HAProxy statistikas lapai, izmantojiet šādu adresi.
http://10.42.0.247:9000/stats
Pēc tam izmantojiet HAProxy konfigurācijas failā noteikto lietotājvārdu un paroli (skatiet stats auth parametru).
Pēc veiksmīgas pieteikšanās jūs nokļūsit HAProxy statistikas lapā, kurā parādīta metrika, kas aptver jūsu serveru stāvokli, pašreizējos pieprasījumu līmeņus, atbildes laikus un daudz ko citu.
Lai parādītu, kā statusa pārskats darbojas attiecībā uz krāsu kodiem, esam izveidojuši vienu no aizmugures serveriem.
4. darbība: HTTPS konfigurēšana HAProxy, izmantojot pašparakstītu SSL sertifikātu
20. Šajā pēdējā sadaļā mēs parādīsim, kā konfigurēt SSL/TLS, lai nodrošinātu visu saziņu starp HAProxy serveri un klientu. HAProxy atbalsta četrus galvenos HTTPS konfigurācijas režīmus, taču šajā rokasgrāmatā mēs izmantosim SSL/TLS izkraušanu.
SSL/TLS izkraušanas režīmā HAProxy atšifrē trafiku klienta pusē un skaidrā datplūsmā tiek savienots ar aizmugures serveriem.
Mēs sāksim ar sertifikāta un atslēgas izveidošanu, kā parādīts (atbilstoši atbildiet uz jautājumiem, pamatojoties uz uzņēmuma informāciju sertifikāta izveides laikā, kā norādīts ekrānuzņēmumā).
# 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. Pēc tam atveriet HAProxy konfigurācijas failu (/etc/haproxy/haproxy.cfg) un rediģējiet priekšgala sadaļu.
frontend TL bind *:80 bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem redirect scheme https if !{ ssl_fc } mode http acl http ssl_fc,not 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
Saglabājiet failu un aizveriet to.
22. Pēc tam restartējiet pakalpojumu HAProxy, lai lietotu jaunās izmaiņas.
# systemctl restart haproxy.service
23. Pēc tam atveriet tīmekļa pārlūku un mēģiniet vēlreiz piekļūt vietnei. Pārlūkprogrammā tiks parādīta kļūda pašparakstīta sertifikāta dēļ, noklikšķiniet uz Papildu, lai turpinātu.
Tas pagaidām ir viss! Katrai tīmekļa lietojumprogrammai ir savs prasību kopums, jums jāveido un jākonfigurē slodzes līdzsvarošana, lai tā atbilstu jūsu IT infrastruktūrai un lietojumprogrammas prasībām.
Lai iegūtu plašāku ieskatu par dažām šajā rokasgrāmatā izmantotajām konfigurācijas opcijām un par to, kā parasti izmantot HAProxy, skatiet oficiālo HAProxy uzņēmuma versijas dokumentāciju. Jebkurus jautājumus vai domas varat ievietot, izmantojot zemāk esošo atsauksmju veidlapu.