HAProxy apmācība iesācējiem

Haproxy Apmaciba Iesacejiem



Lietojumprogrammai palielinoties, rodas nepieciešamība pievienot vairāk serveru, lai apstrādātu lielāku trafiku. Jo vairāk trafika saņem jūsu lietojumprogramma, jo lielāka iespēja saskarties ar dīkstāvi, kad serveris pārslogos. Tomēr ir tādi rīki kā HAProxy, kas ļauj definēt, kā tiek apstrādāta trafika, lai līdzsvarotu servera slodzi. Ideja ir nodrošināt, lai neviens serveris netiktu pārslogots. Augstas pieejamības starpniekserveris ir atvērtā pirmkoda programmatūra, kas ir izstrādāta, lai piedāvātu uzticamu slodzes līdzsvarošanu, vienlaikus darbojoties kā reversais starpniekserveris TCP/HTTP lietojumprogrammām.

HAProxy darbojas, lai samazinātu jebkura servera pārslodzi, un tas tiek panākts, sadalot trafiku, lai nodrošinātu, ka serveris nepārslogo, bet ir pieejami citi serveri. Tādai platformai kā Instagram ir milzīga trafika, jo tiek nosūtīti pieprasījumi sekundē, tāpēc ir jāizmanto HAProxy, lai definētu serveru priekšgalu, aizmugursistēmu un klausītājus, lai izvairītos no pārslodzes.

Kāpēc izmantot HAProxy

Pirms uzzināt par HAProxy instalēšanu un konfigurēšanu, jums vajadzētu saprast, kāpēc mums tas ir vajadzīgs, pateicoties tā piedāvātajām funkcijām. Šīs ir galvenās HAProxy funkcijas:







  1. Slodzes līdzsvarošana - Izmantojot HAProxy, varat ērti sadalīt trafiku starp dažādiem serveriem, lai izvairītos no viena servera pārslodzes. Tādā veidā jūsu lietojumprogramma nesaskarsies ar dīkstāves problēmām, un jūs sasniegsiet ātrāku atsaucību, uzticamību un pieejamību.
  2. Mežizstrāde un uzraudzība - Jūs saņemsiet detalizētus uzraudzības žurnālus saviem serveriem, lai palīdzētu novērst problēmas. Turklāt HAProxy ir statistikas lapa, kurā varat iegūt reāllaika veiktspējas analīzi savam slodzes balansētājam.
  3. Veselības pārbaudes - Pat jūsu serveriem ir nepieciešama veselības pārbaude, lai noteiktu to statusu. HAProxy bieži veic veselības pārbaudes, lai uzzinātu jūsu servera statusu un uzlabotu tā uzticamību. Ja tiek atklāts neveselīgs serveris, tas novirza trafiku uz citu serveri.
  4. Reversais starpniekserveris — Viens veids, kā uzlabot drošību, ir slēpt iekšējo struktūru. Par laimi, HAProxy ļauj saņemt trafiku no klientiem un novirzīt tos uz atbilstošiem serveriem. Tādā veidā jūsu iekšējā struktūra ir paslēpta no hakera acīm.
  5. ACL (piekļuves kontroles saraksti) — Izmantojot HAProxy, varat definēt, kā trafika maršrutēšanai jānotiek, izmantojot dažādus kritērijus, piemēram, ceļus, galvenes un IP adreses. Tādējādi kļūst vieglāk definēt trafika pielāgotu maršrutēšanas loģiku.
  6. SSL pārtraukšana — Pēc noklusējuma SSL/TLS izkrauj aizmugursistēmas serveri, kas izraisa samazinātu veiktspēju. Tomēr, izmantojot HAProxy, SSL/TLS pārtraukšana notiek slodzes balansētājā, izkraujot uzdevumu aizmugursistēmas serveros.

HAProxy instalēšana

Līdz šim mēs definējām, kas ir HAProxy, un apspriedām tā piedāvātās funkcijas, lai palīdzētu jums saprast, kāpēc tas ir nepieciešams jūsu lietojumprogrammai. Nākamais solis ir saprast, kā sākt, instalējot to savā sistēmā.



Ja izmantojat Ubuntu vai Debian sistēmas, HAProxy var instalēt no APT pakotņu pārvaldnieka. Palaidiet šādu komandu:



$ sudo apt atjauninājums
$ sudo apt instalēt haproxy

Tāpat, ja izmantojat uz RHEL balstītas sistēmas vai CentOS, HAProxy ir pieejams pakotņu pārvaldniekā “yum”. Palaidiet šādas komandas:





$ sudo yum atjauninājums
$ sudo yum instalējiet haproxy

Mūsu gadījumā mēs izmantojam Ubuntu. Tādējādi mums ir šāda komanda:



Pēc tam mēs varam pārbaudīt tā versiju, lai pārliecinātos, ka mums izdevās veiksmīgi instalēt HAProxy.

$ haproxy -- versija

Kā konfigurēt HAProxy

Kad HAProxy ir instalēts, tagad varat atvērt tā konfigurācijas failu ( / etc/haproxy/haproxy.cfg) un definējiet iestatījumus, kurus vēlaties izmantot savam slodzes balansētājam.

Atveriet konfigurācijas failu, izmantojot redaktoru, piemēram, nano vai vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Jūs saņemat konfigurācijas failu, piemēram, tālāk norādīto:

No konfigurācijas faila jūs pamanīsit, ka tajā ir divas galvenās sadaļas:

  1. globāls - Tā ir faila pirmā sadaļa, un tās vērtības nevajadzētu mainīt. Tajā ir procesa iestatījumi, kas nosaka, kā darbojas HAProxy. Piemēram, tas definē reģistrēšanas informāciju un grupas vai lietotājus, kas var izpildīt HAProxy funkcijas. Ņemiet vērā, ka šajā konfigurācijas failā var būt tikai viena globālā sadaļa, un tās vērtībām ir jāpaliek nemainīgām.
  1. noklusējuma - Šajā sadaļā ir ietvertas mezglu noklusējuma vērtības. Piemēram, šajā sadaļā varat pievienot sava HAProxy taimautus vai darbības režīmu. Turklāt jūsu HAProxy konfigurācijas failā var būt vairākas noklusējuma sadaļas.

Šeit ir sadaļas “Noklusējumi” piemērs.

Dotajā attēlā režīms nosaka, kā jūsu HAProxy apstrādās ienākošos pieprasījumus. Varat iestatīt režīmu uz HTTP vai TCP. Kas attiecas uz taimautu, tas norāda, cik ilgi HAProxy jāgaida. Piemēram, taimauta savienojuma laiks ir laiks, kas jāgaida, pirms tiek izveidots aizmugursistēmas savienojums. Taimauta klients norāda, cik ilgi HAProxy jāgaida, līdz klients nosūtīs datus. Taimauta serveris ir laiks, kas jāgaida, līdz atbilstošais serveris nosūtīs datus, kas tiks pārsūtīti klientam. Tas, kā jūs definējat noklusējuma vērtības, ir ļoti svarīgi, lai palielinātu jūsu lietojumprogrammas reakcijas laiku.

Ir vēl trīs sadaļas, kas jums jādefinē, lai jūsu slodzes līdzsvarotājs darbotos, kā paredzēts.

  1. frontend - Šajā sadaļā ir norādītas IP adreses, kuras vēlaties, lai jūsu klienti izmantotu savienojuma izveidei.
  2. aizmugure - Tas parāda serveru pūlus, kas apstrādā pieprasījumus, kā noteikts priekšgala sadaļā.
  3. klausies - To izmanto secīgi, ja vēlaties maršrutēt noteiktu serveru grupu. Šajā sadaļā ir apvienoti priekšgala un aizmugursistēmas uzdevumi.

Ņemsim piemēru

Šajā piemērā mēs definējam frontend, lai izmantotu localhost ar noteiktu portu. Pēc tam mēs to saistām ar aizmugursistēmu, kas palaiž lokālo resursdatoru, un pēc tam palaižam Python serveri, lai pārbaudītu, vai viss darbojas, kā paredzēts slodzes līdzsvarošanai. Izpildiet norādītās darbības.

1. darbība. Noklusējumu sadaļas konfigurēšana

Sadaļā “Noklusējumi” mēs iestatām vērtības, kas tiks kopīgotas visos mezglos. Mūsu gadījumā mēs iestatījām režīmu uz HTTP un iestatījām klienta un servera taimautus. Jūs varat pielāgot laiku atbilstoši savām vajadzībām.

Atcerieties, ka visi šie labojumi ir HAProxy konfigurācijā, kas atrodas “/etc/haproxy/haproxy.cfg”. Kad noklusējuma sadaļa ir konfigurēta, definēsim priekšgalu.

2. darbība. Priekšgala sadaļas konfigurēšana

Priekšgala sadaļā mēs definējam, kā mēs vēlamies, lai klienti tiešsaistē varētu piekļūt lietojumprogrammai vai vietnei. Mēs sniedzam lietojumprogrammas IP adreses. Bet šajā gadījumā mēs strādājam ar vietējo saimniekdatoru. Tāpēc mūsu IP adrese ir rezerves adrese 127.0.0.1, un mēs vēlamies pieņemt savienojumus, izmantojot 80. portu.

Jums jāpievieno atslēgvārds “saistīt”, kas darbojas kā IP adreses noklausītājs norādītajā portā. Jūsu definētā IP adrese un ports ir tas, ko slodzes līdzsvarotājs izmanto, lai pieņemtu ienākošos pieprasījumus.

Pēc iepriekšējo rindu pievienošanas konfigurācijas failā mums ir jārestartē “haproxy.service” ar šādu komandu:

$ sudo systemctl restartējiet haproxy

Šajā brīdī mēs varam mēģināt nosūtīt pieprasījumus uz mūsu vietni, izmantojot komandu “curl”. Palaidiet komandu un pievienojiet mērķa IP adresi.

$ curl

Tā kā mums vēl ir jādefinē, kā būs mūsu HAProxy aizmugursistēma, mēs saņemam kļūdu 503, kā parādīts tālāk. Lai gan slodzes līdzsvarotājam izdevās saņemt pieprasījumus, pašlaik nav pieejams neviens serveris, kas to apstrādātu, tāpēc radās kļūda.

3. darbība. Aizmugursistēmas konfigurēšana

Aizmugursistēmas sadaļā mēs definējam serverus, kas apstrādās visus ienākošos pieprasījumus. Slodzes līdzsvarotājs atsaucas uz šo sadaļu, lai uzzinātu, kā tam vajadzētu izplatīt ienākošos pieprasījumus, lai nodrošinātu, ka neviens serveris netiek pārslogots.

Kļūda 503, ko saņēmām agrāk, bija tāpēc, ka mums nebija nevienas aizmugursistēmas, kas apstrādātu pieprasījumus. Sāksim, definējot “default_backend”, lai apstrādātu pieprasījumus. Jūs to definējat priekšgala sadaļā. Šajā gadījumā mēs to nosaucām par “linux_backend”.

Pēc tam izveidojiet aizmugursistēmas sadaļu ar tādu pašu nosaukumu kā tai, kas ir definēta priekšgala sadaļā. Pēc tam jums ir jāizmanto atslēgvārds “serveris”, kam seko sava servera nosaukums un tā IP adrese. Nākamajā attēlā redzams, ka mēs definējām “linuxhint1” serveri, izmantojot IP 127.0.0.1 un portu 8001:

Jums var būt aizmugursistēmas serveru kopums, taču šim gadījumam mēs definējām tikai vienu. Pārliecinieties, ka esat saglabājis failu. Mums atkal ir jārestartē HAProxy pakalpojums.

Lai pārbaudītu izveidoto HAProxy slodzes balansētāju, mēs izveidojam tīmekļa serveri, izmantojot Python3, lai saistītu aizmugursistēmas portus, izmantojot mūsu norādīto IP adresi. Mēs izpildām komandu šādi:

$ python3 -m http.serveris 8001 -- bind 127.0.0.1

Noteikti nomainiet vērtības, lai tās atbilstu jūsu IP adresei un portam, kuru vēlaties saistīt. Ievērojiet, kā tiek izveidots tīmekļa serveris, un tas uzklausa visus ienākošos pieprasījumus.

Citā terminālī izmantosim komandu “curl”, lai nosūtītu pieprasījumu serverim.

$ curl

Atšķirībā no tā, kā mēs iepriekš saņēmām kļūdu 503, kas parāda, ka pieprasījuma apstrādei nav pieejams serveris, šoreiz mēs saņemam izvadi, kas apstiprina, ka mūsu HAProxy slodzes balansētājs darbojas.

Ja atgriezīsities iepriekšējā terminālī, kurā izveidojām tīmekļa serveri, jūs redzēsiet, ka mēs saņemam veiksmīgu izvadi 200, kas apstiprina, ka HAProxy ir saņēmis pieprasījumu un apstrādājis to, nosūtot to uz mūsu aizmugursistēmas sadaļā noteikto serveri.

Tādā veidā savai vietnei vai lietojumprogrammai varat iestatīt vienkāršu HAProxy.

Darbs ar noteikumiem

Pirms šīs iesācēju HAProxy apmācības pabeigšanas parunāsim par to, kā varat definēt noteikumus, lai norādītu, kā slodzes līdzsvarotājs apstrādās pieprasījumus.

Veicot tās pašas darbības kā iepriekš, atstāsim mūsu noklusējuma sadaļu neskartu un definēsim dažādas IP adreses priekšgala sadaļā. Mēs saistām vienu un to pašu IP adresi, bet pieņemam savienojumus no dažādiem portiem.

Turklāt mums ir mūsu “default_backend” un vēl viens “use_backend”, kas ir atšķirīgs serveru kopums, ko mēs izmantosim atkarībā no porta, no kura tiek saņemti pieprasījumi. Tālāk norādītajā konfigurācijā visus pieprasījumus, izmantojot 81. portu, apstrādā “Linux2_backend” serveri. Visus citus pieprasījumus apstrādā “default_backend”.

Pēc tam mēs izveidojam aizmugursistēmas sadaļas, kā noteikts priekšgalā. Ņemiet vērā, ka katrai aizmugursistēmai mums ir atšķirīgs serveris, kuru mēs norādām izmantot pieprasījumu apstrādei.

Ātri restartējiet HAProxy pakalpojumu.

Izveidosim tīmekļa serveri, izmantojot Python3, un saistīsim pieprasījumus 8002. portā, kas ir alternatīvais aizmugursistēmas serveris.

Sūtot tai pieprasījumus, mēs norādām portu kā 81, lai aktivizētu slodzes balansētāju, lai nosūtītu pieprasījumus uz alternatīvo serveri, kas nav noklusējuma serveris.

Atkārtoti pārbaudot mūsu tīmekļa serveri, mēs redzam, ka tas spēj saņemt un apstrādāt pieprasījumus un sniedz 200 (veiksmīgu) atbildi.

Tādā veidā jūs varat definēt noteikumus, lai norādītu, kā jūsu slodzes līdzsvarotājs saņems un apstrādās pieprasījumus.

Secinājums

HAProxy ir ideāls risinājums slodzes līdzsvarošanai TCP/HTTP lietojumprogrammām. Pēc instalēšanas varat ērti rediģēt konfigurācijas failu, lai definētu noklusējuma iestatījumus, priekšgala un aizmugures sadaļas, lai norādītu, kā slodzes līdzsvarotājs darbosies. Šī ziņa ir HAProxy rokasgrāmata iesācējiem. Tas sākās, definējot HAProxy un tā funkcijas. Pēc tam tika izpētīts, kā konfigurēt HAProxy, un nobeigumā tika sniegts piemērs, kā HAProxy izmantot kā slodzes balansētāju.