HAProxy õpetus algajatele

Haproxy Opetus Algajatele



Rakenduse laienedes ilmneb vajadus lisada rohkem servereid suurema liikluse haldamiseks. Mida rohkem liiklust teie rakendus vastu võtab, seda suurem on tõenäosus, et server ülekoormab seisakuid. Siiski on selliseid tööriistu nagu HAProxy, mis võimaldavad teil määrata, kuidas liiklust käsitletakse, et teie serveri koormust tasakaalustada. Idee on tagada, et ükski server ei oleks ülekoormatud. High Availability Proxy on avatud lähtekoodiga tarkvara, mis on loodud pakkuma usaldusväärset koormuse tasakaalustamist, toimides samal ajal TCP/HTTP-rakenduste pöördpuhverserverina.

HAProxy töötab iga serveri ülekoormamise vähendamiseks ja saavutab selle, jaotades liiklust tagamaks, et server ei koormaks üle ega muud serverid oleks saadaval. Platvormil, nagu Instagram, on sekundis saadetavate päringute tõttu tohutu liiklus, mistõttu on ülekoormuse vältimiseks vaja kasutada HAProxyt, et määratleda serverite esiserv, taustaprogramm ja kuulajad.

Miks kasutada HAProxyt?

Enne HAProxy installimise ja konfigureerimise tundmaõppimist peaksite selle pakutavate funktsioonide tõttu mõistma, miks me seda vajame. Järgmised on HAProxy peamised omadused:







  1. Koormuse tasakaalustamine - HAProxy abil saate mugavalt jaotada liiklust erinevate serverite vahel, et vältida ühe serveri ülekoormamist. Nii ei teki teie rakendusel seisakuid ning olete saavutanud kiirema reageerimisvõime, töökindluse ja kättesaadavuse.
  2. Logimine ja jälgimine – Saate oma serverite jaoks üksikasjalikud jälgimislogid, mis aitavad probleemide tõrkeotsingul. Lisaks on HAProxyl statistikaleht, kust saate oma koormuse tasakaalustaja jaoks reaalajas jõudlusanalüüsi.
  3. Tervisekontroll – Isegi teie serverid nõuavad nende oleku kindlakstegemiseks tervisekontrolli. HAProxy käivitab sageli tervisekontrolli, et teada saada teie serveri olekut, et suurendada selle töökindlust. Kui avastatakse ebatervislik server, suunab see liikluse ümber teise serverisse.
  4. Pöördpuhverserver – Üks viis turvalisuse suurendamiseks on sisemise struktuuri peitmine. Õnneks võimaldab HAProxy teil klientidelt liiklust vastu võtta ja need sobivatesse serveritesse suunata. Nii on teie sisemine struktuur häkkeri pilgu eest varjatud.
  5. ACL-id (juurdepääsu kontrolli loendid) – HAProxy abil saate määratleda, kuidas liikluse marsruutimine peaks toimuma, kasutades erinevaid kriteeriume, nagu teed, päised ja IP-aadressid. Seega muutub liikluse jaoks kohandatud marsruutimise loogika määratlemine lihtsamaks.
  6. SSL-i lõpetamine – Vaikimisi laadivad taustaserverid maha SSL/TLS, mis põhjustab jõudluse vähenemist. HAProxy puhul toimub SSL/TLS-i lõpetamine aga koormuse tasakaalustaja juures, laadides ülesande maha taustaserverites.

HAProxy installimine

Siiani oleme määratlenud, mis on HAProxy, ja arutasime selle pakutavaid funktsioone, mis aitavad teil mõista, miks seda oma rakenduse jaoks vajate. Järgmine samm on mõista, kuidas alustada selle oma süsteemi installimisega.



Kui kasutate Ubuntu või Debiani süsteeme, saab HAProxy installida APT paketihaldurist. Käivitage järgmine käsk:



$ sudo apt värskendus
$ sudo apt install haproxy

Samamoodi, kui kasutate RHEL-põhiseid süsteeme või CentOS-i, on HAProxy saadaval paketihalduris 'yum'. Käivitage järgmised käsud:





$ sudo yumi värskendus
$ sudo yum installige haproxy

Meie puhul kasutame Ubuntut. Seega on meil järgmine käsk:



Seejärel saame kontrollida selle versiooni, et teha kindlaks, kas meil õnnestus HAProxy edukalt installida.

$ haproxy -- versioon

Kuidas HAProxyt konfigureerida

Kui HAProxy on installitud, saate nüüd avada selle konfiguratsioonifaili ( / etc/haproxy/haproxy.cfg) ja määrake seaded, mida soovite oma koormuse tasakaalustaja jaoks kasutada.

Avage konfiguratsioonifail redaktori (nt nano või vim) abil.

$ sudo nano /etc/haproxy/haproxy.cfg

Saate sellise konfiguratsioonifaili nagu järgmine:

Konfiguratsioonifailist märkate, et sellel on kaks peamist jaotist:

  1. globaalne – See on faili esimene jaotis ja selle väärtusi ei tohiks muuta. See sisaldab protsessi sätteid, mis määravad HAProxy toimimise. Näiteks määratleb see logimise üksikasjad ja rühmad või kasutajad, kes saavad HAProxy funktsioone täita. Pange tähele, et selles konfiguratsioonifailis võib teil olla ainult üks globaalne jaotis ja selle väärtused peaksid jääma muutmata.
  1. vaikimisi - See jaotis sisaldab sõlmede vaikeväärtusi. Näiteks saate selles jaotises lisada oma HAProxy ajalõpud või töörežiimi. Lisaks võib teie HAProxy konfiguratsioonifailis olla palju vaikeseadeid.

Siin on näide jaotisest „Vaikeseaded”.

Antud pildil määrab režiim, kuidas teie HAProxy saabuvaid taotlusi käsitleb. Saate määrata režiimiks HTTP või TCP. Mis puutub ajalõpu, siis see määrab, kui kaua HAProxy peaks ootama. Näiteks ühendamise ajalõpp on aeg, mis kulub enne taustaühenduse loomist. Ajalõpu klient näitab, kui kaua peaks HAProxy ootama, kuni klient andmed saadab. Ajalõpuserver on aeg oodata, kuni asjakohane server saadab kliendile edastatavad andmed. Vaikeväärtuste määratlemisel on teie rakenduse reageerimisaja pikendamisel palju tähtsust.

Selleks, et koormuse tasakaalustaja töötaks ootuspäraselt, peaksite määrama veel kolm jaotist.

  1. esiots - See jaotis sisaldab IP-aadresse, mida soovite oma klientidel ühenduse loomiseks kasutada.
  2. taustaprogramm – See näitab serverikogumeid, mis töötlevad taotlusi, nagu on määratletud esiosa jaotises.
  3. kuula - Seda kasutatakse järjestikku, kui soovite konkreetse serverirühma marsruutida. See jaotis ühendab esi- ja taustaprogrammi ülesanded.

Toome näite

Selle näite puhul määratleme esiserva, et kasutada kohalikku hosti konkreetse pordiga. Järgmisena seome selle taustaprogrammiga, mis käitab kohalikku hosti, ja seejärel käivitame Pythoni serveri, et testida, kas kõik töötab koormuse tasakaalustamisel ootuspäraselt. Järgige antud samme.

1. samm: jaotise Vaikeseaded konfigureerimine

Jaotises „Vaikeseaded” määrame sõlmede vahel jagatavad väärtused. Meie puhul määrasime režiimiks HTTP ja määrame kliendi ja serveri ajalõpu. Saate kohandada aega vastavalt oma vajadustele.

Pidage meeles, et kõik need muudatused on HAProxy konfiguratsioonis, mis asub aadressil „/etc/haproxy/haproxy.cfg”. Kui vaikeseadete jaotis on konfigureeritud, määratleme kasutajaliidese.

2. samm: esiosa sektsiooni konfigureerimine

Esiosa jaotises määratleme, kuidas soovime, et kliendid saaksid rakendusele või veebisaidile võrgus juurdepääsu. Anname rakendusele IP-aadressid. Kuid sel juhul teeme koostööd kohaliku hostiga. Seetõttu on meie IP-aadress varuaadress 127.0.0.1 ja me tahame aktsepteerida ühendusi pordi 80 kaudu.

Peate lisama 'siduva' märksõna, mis toimib määratud pordi IP-aadressi kuulajana. Teie määratud IP-aadressi ja porti kasutab koormuse tasakaalustaja sissetulevate päringute vastuvõtmiseks.

Pärast konfiguratsioonifaili eelmiste ridade lisamist peame taaskäivitama 'haproxy.service' järgmise käsuga:

$ sudo systemctl taaskäivitage haproxy

Siinkohal saame proovida päringuid meie veebisaidile saata, kasutades käsku 'curl'. Käivitage käsk ja lisage siht-IP-aadress.

$ curl

Kuna me peame veel määratlema, kuidas meie HAProxy taustaprogramm on, saame vea 503, nagu on näidatud järgmises. Kuigi koormuse tasakaalustajal õnnestus päringud vastu võtta, pole praegu saadaval ühtegi serverit, mis seda käsitleks, seega viga.

3. samm: taustaprogrammi konfigureerimine

Taustaprogrammi jaotis on koht, kus me määratleme serverid, mis töötlevad kõiki sissetulevaid päringuid. Koormuse tasakaalustaja viitab sellele jaotisele, et teada saada, kuidas see peaks jaotama sissetulevaid päringuid tagamaks, et ükski server ei saaks ülekoormatud.

Viga 503, mille saime varem, tulenes sellest, et meil polnud taotluste käsitlemiseks ühtegi taustaprogrammi. Alustuseks määrame päringute käsitlemiseks atribuudi „default_backend”. Saate selle määratleda esiosa jaotises. Nimetasime selle selle juhtumi jaoks 'linux_backend'.

Järgmisena looge taustaosa jaotis, millel on sama nimi, mis on määratletud esiosa jaotises. Seejärel peate kasutama märksõna 'server', millele järgneb serveri nimi ja selle IP-aadress. Järgmisel pildil on näha, et määratlesime serveri 'linuxhint1', kasutades IP 127.0.0.1 ja porti 8001:

Teil võib olla taustaserverite kogum, kuid selle juhtumi jaoks määratlesime ainult ühe. Veenduge, et olete faili salvestanud. Peame HAProxy teenuse uuesti taaskäivitama.

Loodud HAProxy koormuse tasakaalustaja testimiseks loome Python3 abil veebiserveri, et siduda taustapordid meie määratud IP-aadressi abil. Käivitame käsu järgmiselt:

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

Veenduge, et asendate väärtused nii, et need vastaksid teie IP-aadressile ja pordile, mida soovite siduda. Pange tähele, kuidas veebiserver luuakse ja kuulab sissetulevaid päringuid.

Teises terminalis kasutage päringu serverile saatmiseks käsku 'curl'.

$ curl

Erinevalt sellest, kuidas saime varem vea 503, mis näitab, et päringu käsitlemiseks pole serverit saadaval, saame seekord väljundi, mis kinnitab, et meie HAProxy koormuse tasakaalustaja töötab.

Kui lähete tagasi eelmisele terminalile, kus me veebiserveri lõime, näete, et saame eduka väljundi 200, mis kinnitab, et HAProxy sai päringu kätte ja käsitles seda, saates selle meie taustaprogrammi jaotises määratletud serverisse.

Nii saate oma veebisaidi või rakenduse jaoks seadistada lihtsa HAProxy.

Reeglitega töötamine

Enne kui lõpetame selle algaja HAProxy õpetuse, räägime kiiresti sellest, kuidas saate määratleda reeglid, mis juhivad seda, kuidas koormuse tasakaalustaja päringuid käsitleb.

Järgides samu samme, mis varem, jätkem meie vaikejaotis puutumata ja määratlege esiosa jaotises erinevad IP-aadressid. Seome sama IP-aadressi, kuid aktsepteerime ühendusi erinevatest portidest.

Lisaks on meil vaikimisi_taustaprogramm ja teine ​​​​use_backend, mis on erinev serverite kogum, mida kasutame sõltuvalt pordist, kust päringud tulevad. Järgmise konfiguratsiooni korral haldavad kõiki pordi 81 kaudu päringuid Linux2_backendi serverid. Kõiki muid taotlusi käsitleb 'default_backend'.

Seejärel loome taustaprogrammi sektsioonid, nagu on määratletud esiprogrammis. Pange tähele, et iga taustaprogrammi jaoks on meil erinev server, mille määrame taotluste käsitlemiseks kasutamiseks.

Taaskäivitage teenus HAProxy kiiresti.

Loome Python3 abil veebiserveri ja seome päringud pordiga 8002, mis on alternatiivne taustaserver.

Sellele päringute saatmisel määrame pordiks 81, et käivitada koormuse tasakaalustaja, et saata päringud alternatiivsele serverile, mis ei ole vaikeserver.

Kontrollides uuesti meie veebiserverit, näeme, et see suudab päringuid vastu võtta ja käsitleda ning annab 200 (edukalt) vastuse.

Nii saate määratleda reeglid, mis juhivad seda, kuidas teie koormuse tasakaalustaja taotlusi vastu võtab ja käsitleb.

Järeldus

HAProxy on ideaalne lahendus TCP/HTTP rakenduste koormuse tasakaalustamiseks. Pärast installimist saate konfiguratsioonifaili mugavalt redigeerida, et määratleda vaikeseaded, esiosa ja taustaosa jaotised, et juhtida teie koormuse tasakaalustaja tööd. See postitus on HAProxy juhend algajatele. See algas HAProxy ja selle funktsioonide määratlemisega. Järgmisena uuriti, kuidas HAProxyt konfigureerida, ja tõi näite, kuidas HAProxyt koormuse tasakaalustajana kasutada.