HAProxy slodzes balansētāja instalÄ“Å”ana sistēmā CentOS

Raksta tulkojums tika sagatavots kursu sākuma priekŔvakarā "Linux administrators. Virtualizācija un klasterizācija"

HAProxy slodzes balansētāja instalÄ“Å”ana sistēmā CentOS

Slodzes lÄ«dzsvaroÅ”ana ir izplatÄ«ts risinājums, lai horizontāli mērogotu tÄ«mekļa lietojumprogrammas vairākos saimniekdatoros, vienlaikus nodroÅ”inot lietotājiem vienu piekļuves punktu pakalpojumam. HAProxy ir viena no populārākajām atvērtā koda slodzes lÄ«dzsvaroÅ”anas programmatÅ«rām, kas nodroÅ”ina arÄ« augstu pieejamÄ«bu un starpniekservera funkcionalitāti.

HAProxy cenÅ”as optimizēt resursu izmantoÅ”anu, palielināt caurlaidspēju, samazināt reakcijas laiku un izvairÄ«ties no jebkura atseviŔķa resursa pārslodzes. To var instalēt dažādos Linux izplatÄ«jumos, piemēram, CentOS 8, kam mēs pievērsÄ«simies Å”ajā rokasgrāmatā, kā arÄ« sistēmās Debian 8 Šø ubuntu 16.

HAProxy slodzes balansētāja instalÄ“Å”ana sistēmā CentOS

HAProxy ir Ä«paÅ”i piemērots vietnēm ar ļoti lielu trafiku, un tāpēc to bieži izmanto, lai uzlabotu vairāku serveru tÄ«mekļa pakalpojumu konfigurāciju uzticamÄ«bu un veiktspēju. Å ajā rokasgrāmatā ir aprakstÄ«tas darbÄ«bas, kas jāveic, lai HAProxy iestatÄ«tu kā slodzes balansētāju CentOS 8 mākoņa resursdatorā, kas pēc tam marÅ”rutē trafiku uz jÅ«su tÄ«mekļa serveriem.

Lai iegÅ«tu labākos rezultātus, jums ir jābÅ«t vismaz diviem tÄ«mekļa serveriem un slodzes lÄ«dzsvaroÅ”anas serverim. Lai pārbaudÄ«tu slodzes lÄ«dzsvaroÅ”anu starp tÄ«mekļa serveriem, tiem ir jādarbojas vismaz pamata tÄ«mekļa pakalpojumam, piemēram, nginx vai httpd.

HAProxy instalÄ“Å”ana operētājsistēmā CentOS 8

Tā kā HAProxy ir atvērtā pirmkoda lietojumprogramma, kas strauji attÄ«stās, standarta CentOS krātuvēs pieejamais izplatÄ«Å”ana var nebÅ«t jaunākā versija. Lai uzzinātu paÅ”reizējo versiju, palaidiet Ŕādu komandu:

sudo yum info haproxy

HAProxy vienmēr piedāvā trÄ«s stabilas versijas, no kurām izvēlēties: divas jaunākās atbalstÄ«tās versijas un treÅ”o, vecāku versiju, kas joprojām saņem svarÄ«gus atjauninājumus. JÅ«s vienmēr varat pārbaudÄ«t jaunāko stabilo versiju, kas norādÄ«ta HAProxy vietnē, un pēc tam izlemt, ar kuru versiju vēlaties strādāt.

Å ajā rokasgrāmatā mēs instalēsim jaunāko stabilo versiju 2.0, kas rokasgrāmatas rakstÄ«Å”anas laikā vēl nebija pieejama standarta krātuvēs. Jums tas bÅ«s jāinstalē no sākotnējā avota. Bet vispirms pārbaudiet, vai esat izpildÄ«jis nepiecieÅ”amos nosacÄ«jumus, lai lejupielādētu un apkopotu programmu.

sudo yum install gcc pcre-devel tar make -y

Lejupielādējiet avota kodu, izmantojot tālāk norādīto komandu. Varat pārbaudīt, vai vietnē ir pieejama jaunāka versija HAProxy lejupielādes lapa.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Kad lejupielāde ir pabeigta, izvelciet failus, izmantojot tālāk norādīto komandu:

tar xzvf ~/haproxy.tar.gz -C ~/

Dodieties uz izsaiņoto avota direktoriju:

cd ~/haproxy-2.0.7

Pēc tam kompilējiet programmu savai sistēmai:

make TARGET=linux-glibc

Visbeidzot, instalējiet paÅ”u HAProxy:

sudo make install

HAProxy tagad ir instalēts, taču, lai tas darbotos, ir jāveic dažas papildu manipulācijas. Turpināsim tālāk norādÄ«tās programmatÅ«ras un pakalpojumu iestatÄ«Å”anu.

HAProxy iestatīŔana jūsu serverim

Tagad pievienojiet Ŕādus direktorijus un statistikas failu HAProxy ierakstiem:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Izveidojiet simbolisku saiti binārajiem failiem, lai jūs varētu palaist HAProxy komandas kā parasts lietotājs:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Ja vēlaties savai sistēmai pievienot starpniekserveri kā pakalpojumu, kopējiet failu haproxy.init no piemēriem savā /etc/init.d direktorijā. Rediģējiet faila atļaujas, lai skripts darbotos, un pēc tam restartējiet sistēmas dēmonu:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Jums arī jāļauj pakalpojumam automātiski restartēties, kad sistēma tiek startēta:

sudo chkconfig haproxy on

Ērtības labad ieteicams arī pievienot jaunu lietotāju, lai palaistu HAProxy:

sudo useradd -r haproxy

Pēc tam varat vēlreiz pārbaudÄ«t instalētās versijas numuru, izmantojot Å”o komandu:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

MÅ«su gadÄ«jumā versijai jābÅ«t 2.0.7, kā parādÄ«ts iepriekÅ” redzamajā izvades piemērā.

Visbeidzot, CentOS 8 noklusējuma ugunsmÅ«ris ir diezgan ierobežojoÅ”s Å”im projektam. Izmantojiet Ŕīs komandas, lai atļautu nepiecieÅ”amos pakalpojumus un atiestatÄ«tu ugunsmÅ«ri:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Slodzes līdzsvara iestatīŔana

HAProxy iestatÄ«Å”ana ir diezgan vienkārÅ”s process. BÅ«tÄ«bā viss, kas jums jādara, ir jāpaziņo HAProxy, kādi savienojumi tam jāklausās un kur tie jāpārsÅ«ta.

Tas tiek darīts, izveidojot konfigurācijas failu /etc/haproxy/haproxy.cfg ar definētiem iestatījumiem. Varat lasīt par HAProxy konfigurācijas opcijām dokumentācijas lapāja vēlaties uzzināt vairāk par to.

Slodzes līdzsvaroŔana transporta slānī (4. slānis)

Sāksim ar pamata iestatÄ«Å”anu. Izveidojiet jaunu konfigurācijas failu, piemēram, izmantojot vi ar komandu zemāk:

sudo vi /etc/haproxy/haproxy.cfg

Pievienojiet failam Ŕādas sadaļas. Aizvietot servera_vārds kā statistikas lapā jāsauc jÅ«su serveri, un private_ip ā€” to serveru privātās IP adreses, uz kuriem vēlaties novirzÄ«t tÄ«mekļa trafiku. Varat pārbaudÄ«t privātās IP adreses UpCloud vadÄ«bas panelÄ« un cilnē Privāts tÄ«kls izvēlnē tÄ«kls.

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

Tas definē transporta slāņa slodzes lÄ«dzsvarotāju (4. slānis), kas ārēji nosaukts http_front klausÄ«Å”anās portā 80, kas pēc tam pārsÅ«ta trafiku uz noklusējuma aizmugursistēmu ar nosaukumu http_back. Papildu statistika /haproxy?stats savieno statistikas lapu ar norādÄ«to adresi.

Dažādi slodzes balansÄ“Å”anas algoritmi.

Serveru norādÄ«Å”ana aizmugursistēmas sadaļā ļauj HAProxy izmantot Å”os serverus slodzes lÄ«dzsvaroÅ”anai saskaņā ar apļveida algoritmu, ja iespējams.

LÄ«dzsvaroÅ”anas algoritmi tiek izmantoti, lai noteiktu, kuram aizmugursistēmas serverim tiek nodots katrs savienojums. Å eit ir dažas noderÄ«gas iespējas:

  • Rounddrobin: Katrs serveris tiek izmantots pēc kārtas atbilstoÅ”i tā svaram. Å is ir vienmērÄ«gākais un godÄ«gākais algoritms, kad serveru apstrādes laiks paliek vienmērÄ«gi sadalÄ«ts. Å is algoritms ir dinamisks, ļaujot pielāgot servera svaru lidojuma laikā.
  • Leastconn: tiek atlasÄ«ts serveris ar vismazāko savienojumu. Round robin tiek veikts starp serveriem ar vienādu slodzi. Å Ä« algoritma izmantoÅ”ana ir ieteicama ilgām sesijām, piemēram, LDAP, SQL, TSE utt., taču tas nav Ä«paÅ”i piemērots Ä«sām sesijām, piemēram, HTTP.
  • Vispirms: Pirmais serveris ar pieejamām savienojuma slotiem saņem savienojumu. Serveri tiek atlasÄ«ti no zemākā ciparu ID lÄ«dz lielākajam, kas pēc noklusējuma ir servera pozÄ«cija fermā. Kad serveris sasniedz maxconn, tiek izmantots nākamais serveris.
  • Avots: Lai noteiktu, kurÅ” serveris saņems pieprasÄ«jumu, avota IP adrese tiek sajaukta un dalÄ«ta ar kopējo esoÅ”o serveru svaru. Tādā veidā viena un tā pati klienta IP adrese vienmēr tiks nosÅ«tÄ«ta uz vienu un to paÅ”u serveri, bet serveri paliek nemainÄ«gi.

Slodzes līdzsvaroŔanas iestatīŔana lietojumprogrammas līmenī (7. slānis)

Vēl viena pieejama iespēja ir konfigurēt slodzes lÄ«dzsvarotāju, lai tas darbotos lietojumprogrammas slānÄ« (7. slānis), kas ir noderÄ«gi, ja tÄ«mekļa lietojumprogrammas daļas atrodas dažādos saimniekdatoros. To var panākt, ierobežojot savienojuma pārraidi, piemēram, izmantojot URL.

Atveriet HAProxy konfigurācijas failu, izmantojot teksta redaktoru:

sudo vi /etc/haproxy/haproxy.cfg

Pēc tam konfigurējiet priekÅ”gala un aizmugursistēmas segmentus, kā norādÄ«ts tālāk sniegtajā piemērā:

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

PriekÅ”gals deklarē ACL kārtulu ar nosaukumu url_blog, kas attiecas uz visiem savienojumiem, kuru ceļi sākas ar /blog. Use_backend norāda, ka savienojumi, kas atbilst nosacÄ«jumam url_blog, ir jāapkalpo aizmugursistēmai ar nosaukumu blog_back, un visus citus pieprasÄ«jumus apstrādā noklusējuma aizmugursistēma.

Aizmugursistēmas pusē konfigurācija iestata divas serveru grupas: http_back, tāpat kā iepriekÅ”, un jaunu ar nosaukumu blog_back, kas apstrādā savienojumus ar example.com/blog.

Pēc iestatÄ«jumu maiņas saglabājiet failu un restartējiet HAProxy, izmantojot Å”o komandu:

sudo systemctl restart haproxy

Ja startÄ“Å”anas laikā saņemat brÄ«dinājumus vai kļūdu ziņojumus, pārbaudiet to konfigurāciju un pārliecinieties, vai esat izveidojis visus nepiecieÅ”amos failus un mapes, un pēc tam mēģiniet restartēt vēlreiz.

Iestatījuma pārbaude

Kad HAProxy ir konfigurēts un darbojas, pārlūkprogrammā atveriet slodzes līdzsvara servera publisko IP adresi un pārbaudiet, vai ir izveidots pareizi savienojums ar aizmugursistēmu. Konfigurācijas parametrs stats uri izveido statistikas lapu norādītajā adresē.

http://load_balancer_public_ip/haproxy?stats

Kad ielādējat statistikas lapu, ja visi serveri ir zaļā krāsā, iestatÄ«Å”ana bija veiksmÄ«ga!

HAProxy slodzes balansētāja instalÄ“Å”ana sistēmā CentOS

Statistikas lapā ir ietverta noderÄ«ga informācija, lai izsekotu jÅ«su tÄ«mekļa mitinātājiem, tostarp augÅ”upejas/dÄ«kstāves laiks un sesiju skaits. Ja serveris ir atzÄ«mēts sarkanā krāsā, pārliecinieties, vai serveris ir ieslēgts un vai varat to nosÅ«tÄ«t no slodzes lÄ«dzsvarotāja.

Ja slodzes līdzsvarotājs nereaģē, pārliecinieties, vai HTTP savienojumus nebloķē ugunsmūris. Pārliecinieties arī, vai HAProxy darbojas, izmantojot tālāk norādīto komandu:

sudo systemctl status haproxy

Statistikas lapas aizsardzība ar paroli

Tomēr, ja statistikas lapa ir vienkārÅ”i norādÄ«ta priekÅ”pusē, tā ir atvērta ikvienam, kas var nebÅ«t laba ideja. Tā vietā varat pieŔķirt tam pielāgotu porta numuru, pievienojot tālāk redzamo piemēru sava haproxy.cfg faila beigām. Aizvietot lietotājvārds Šø parole par kaut ko droÅ”u:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Pēc jaunas klausÄ«tāju grupas pievienoÅ”anas noņemiet veco statistikas uri saiti no priekÅ”gala grupas. Kad esat pabeidzis, saglabājiet failu un restartējiet HAProxy.

sudo systemctl restart haproxy

Pēc tam vēlreiz atveriet slodzes balansētāju ar jauno porta numuru un piesakieties ar lietotājvārdu un paroli, ko norādījāt konfigurācijas failā.

http://load_balancer_public_ip:8181

Pārliecinieties, vai visi jūsu serveri joprojām ir zaļā krāsā, un pēc tam atveriet tikai slodzes līdzsvarotāja IP bez portu numuriem savā pārlūkprogrammā.

http://load_balancer_public_ip/

Ja jÅ«su aizmugures serveros ir vismaz dažas galvenās lapas, pamanÄ«sit, ka katru reizi, atkārtoti ielādējot lapu, saņemat atbildi no cita resursdatora. Varat izmēģināt dažādus balansÄ“Å”anas algoritmus konfigurācijas sadaļā vai pārbaudÄ«t pilnÄ«ga dokumentācija.

Secinājums: HAProxy Load Balancer

Apsveicam ar veiksmÄ«gu HAProxy slodzes lÄ«dzsvara iestatÄ«Å”anu! Pat izmantojot pamata slodzes lÄ«dzsvaroÅ”anas iestatÄ«jumus, varat ievērojami uzlabot savas tÄ«mekļa lietojumprogrammas veiktspēju un pieejamÄ«bu. Å Ä« rokasgrāmata ir tikai ievads slodzes lÄ«dzsvaroÅ”anai ar HAProxy, kas spēj daudz vairāk nekā tas, ko var apskatÄ«t ātrās iestatÄ«Å”anas rokasgrāmatā. Mēs iesakām eksperimentēt ar dažādām konfigurācijām, izmantojot plaÅ”a dokumentācija, kas ir pieejams HAProxy, un pēc tam sāciet plānot slodzes lÄ«dzsvaroÅ”anu savai ražoÅ”anas videi.

Izmantojot vairākus saimniekdatorus, lai aizsargātu jÅ«su tÄ«mekļa pakalpojumu ar brÄ«vÄ«bu, pats slodzes lÄ«dzsvarotājs joprojām var radÄ«t kļūmes punktu. JÅ«s varat vēl vairāk uzlabot augstu pieejamÄ«bu, instalējot peldoÅ”u IP starp vairākiem slodzes balansētājiem. Vairāk par to varat uzzināt mÅ«su raksts par peldoŔām IP adresēm pakalpojumā UpCloud.

Vairāk par kursu "Linux administrators. Virtualizācija un klasterizācija"***

Avots: www.habr.com

Pievieno komentāru