Vadnica za začetnike HAProxy

Vadnica Za Zacetnike Haproxy



Ko se vaša aplikacija povečuje, se pojavi potreba po dodajanju več strežnikov za obvladovanje večjega prometa. Več prometa kot prejme vaša aplikacija, večje so možnosti za izpad ob preobremenitvi strežnika. Vendar pa obstajajo orodja, kot je HAProxy, ki vam omogočajo, da določite, kako se obravnava promet za uravnoteženje obremenitve vašega strežnika. Ideja je zagotoviti, da se noben strežnik ne preobremeni. High Availability Proxy je odprtokodna programska oprema, ki je zasnovana tako, da nudi zanesljivo uravnoteženje obremenitve, hkrati pa deluje kot obratni proxy za aplikacije TCP/HTTP.

HAProxy deluje tako, da zmanjša preobremenitev katerega koli strežnika, in to doseže z distribucijo prometa, da zagotovi, da strežnik ni preobremenjen, drugi strežniki pa so na voljo. Platforma, kot je Instagram, ima ogromen promet zaradi zahtev, poslanih na sekundo, zato je treba uporabiti HAProxy za definiranje sprednjega dela, zaledja in poslušalcev za strežnike, da se izognemo preobremenitvi.

Zakaj uporabljati HAProxy

Preden se naučite o namestitvi in ​​konfiguraciji HAProxy, bi morali razumeti, zakaj ga potrebujemo zaradi funkcij, ki jih ponuja. Sledijo glavne funkcije HAProxy:







  1. Izravnavanje obremenitve – S HAProxy lahko udobno porazdelite promet med različne strežnike, da preprečite preobremenitev enega samega strežnika. Tako se vaša aplikacija ne bo soočila s težavami z izpadi, dosegli pa boste hitrejšo odzivnost, zanesljivost in razpoložljivost.
  2. Beleženje in spremljanje – Za pomoč pri odpravljanju težav boste prejeli podrobne dnevnike nadzora za svoje strežnike. Poleg tega ima HAProxy stran s statističnimi podatki, kjer lahko dobite analitiko učinkovitosti v realnem času za vaš izravnalnik obremenitve.
  3. Zdravstveni pregledi – Celo vaši strežniki zahtevajo zdravstveni pregled, da se ugotovi njihov status. HAProxy pogosto izvaja preglede zdravja, da pozna status vašega strežnika in tako poveča njegovo zanesljivost. Če je zaznan nezdrav strežnik, preusmeri promet na drug strežnik.
  4. Povratni proxy – Eden od načinov za povečanje varnosti je skrivanje notranje strukture. Na srečo vam HAProxy omogoča sprejemanje prometa od strank in njihovo usmerjanje na ustrezne strežnike. Tako je vaša notranja struktura skrita pred hekerskimi očmi.
  5. ACL (seznami za nadzor dostopa) – S HAProxy lahko določite, kako naj poteka usmerjanje prometa z različnimi kriteriji, kot so poti, glave in naslovi IP. Tako postane definiranje logike usmerjanja po meri za vaš promet preprostejše.
  6. Prekinitev SSL – Zaledni strežniki privzeto razbremenijo SSL/TLS, kar povzroči zmanjšano zmogljivost. Vendar pa pri HAProxy do prekinitve SSL/TLS pride pri izravnalniku obremenitve, s čimer se naloga razbremeni v zalednih strežnikih.

Namestitev HAProxy

Doslej smo opredelili, kaj je HAProxy, in razpravljali o funkcijah, ki jih ponuja, da boste lažje razumeli, zakaj ga potrebujete za svojo aplikacijo. Naslednji korak je razumevanje, kako začeti z namestitvijo v vaš sistem.



Če uporabljate sistem Ubuntu ali Debian, lahko HAProxy namestite iz upravitelja paketov APT. Zaženite naslednji ukaz:



$ sudo apt posodobitev
$ sudo apt namestite haproxy

Podobno, če uporabljate sisteme, ki temeljijo na RHEL, ali CentOS, je HAProxy na voljo pri upravitelju paketov »yum«. Zaženite naslednje ukaze:





$ sudo yum posodobitev
$ sudo yum namestite haproxy

V našem primeru uporabljamo Ubuntu. Tako imamo svoj ukaz naslednji:



Nato lahko preverimo njegovo različico in se prepričamo, da nam je uspelo uspešno namestiti HAProxy.

$ haproxy --različica

Kako konfigurirati HAProxy

Ko je HAProxy nameščen, lahko zdaj odprete njegovo konfiguracijsko datoteko ( / etc/haproxy/haproxy.cfg) in določite nastavitve, ki jih želite uporabiti za vaš izravnalnik obremenitve.

Odprite konfiguracijsko datoteko z urejevalnikom, kot je nano ali vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Dobite konfiguracijsko datoteko, podobno tej:

Iz konfiguracijske datoteke boste opazili, da ima dva glavna razdelka:

  1. globalno – To je prvi razdelek v datoteki in njegovih vrednosti ne smete spreminjati. Vsebuje nastavitve procesa, ki določajo, kako deluje HAProxy. Na primer, definira podrobnosti beleženja in skupine ali uporabnike, ki lahko izvajajo funkcije HAProxy. Upoštevajte, da imate lahko v tej konfiguracijski datoteki samo en globalni razdelek, njegove vrednosti pa morajo ostati nespremenjene.
  1. privzete vrednosti – Ta razdelek vsebuje privzete vrednosti za vozlišča. V tem razdelku lahko na primer dodate časovne omejitve ali način delovanja za vaš HAProxy. Poleg tega je mogoče imeti v konfiguracijski datoteki HAProxy številne razdelke s privzetimi nastavitvami.

Tukaj je primer razdelka »Privzeto«:

Na dani sliki način določa, kako bo vaš HAProxy obravnaval dohodne zahteve. Način lahko nastavite na HTTP ali TCP. Kar zadeva časovno omejitev, določa, kako dolgo naj HAProxy čaka. Na primer, časovna omejitev povezave je čas čakanja, preden se vzpostavi zaledna povezava. Časovna omejitev odjemalca je, koliko časa naj HAProxy čaka, da odjemalec pošlje podatke. Časovna omejitev strežnika je čas čakanja, da ustrezen strežnik pošlje podatke, ki bodo posredovani odjemalcu. Kako definirate privzete vrednosti, je zelo pomembno pri izboljšanju odzivnega časa vaše aplikacije.

Obstajajo še trije razdelki, ki jih morate definirati, da bo vaš izravnalnik obremenitve deloval po pričakovanjih.

  1. frontend – Ta razdelek vsebuje naslove IP, za katere želite, da jih vaše stranke uporabijo za vzpostavitev povezave.
  2. zaledje – Prikazuje strežniška področja, ki obravnavajo zahteve, kot je opredeljeno v razdelku sprednjega dela.
  3. poslušaj – Uporablja se zaporedoma, ko želite usmeriti določeno skupino strežnikov. Ta razdelek združuje naloge sprednjega in zadnjega dela.

Imejmo primer

V tem primeru definiramo sprednji del za uporabo lokalnega gostitelja z določenimi vrati. Nato ga povežemo z zaledjem, ki poganja lokalnega gostitelja, in nato zaženemo strežnik Python, da preizkusimo, ali vse deluje po pričakovanjih za uravnoteženje obremenitve. Sledite danim korakom.

1. korak: Konfiguracija razdelka s privzetimi nastavitvami

V razdelku »Privzete nastavitve« nastavimo vrednosti, ki si jih delijo vozlišča. V našem primeru smo način nastavili na HTTP in nastavili časovne omejitve za odjemalca in strežnik. Čas lahko prilagodite svojim potrebam.

Ne pozabite, da so vsa ta urejanja v konfiguraciji HAProxy, ki se nahaja na naslovu »/etc/haproxy/haproxy.cfg«. Ko je razdelek s privzetimi nastavitvami konfiguriran, definirajmo sprednji del.

2. korak: Konfiguracija razdelka Frontend

V razdelku frontend določimo, kako želimo, da do aplikacije ali spletne strani dostopajo stranke prek spleta. Podamo naslove IP za aplikacijo. Toda v tem primeru delamo z lokalnim gostiteljem. Zato je naš naslov IP nadomestni naslov 127.0.0.1 in želimo sprejeti povezave prek vrat 80.

Dodati morate ključno besedo »bind«, ki deluje kot poslušalec za naslov IP na navedenih vratih. Naslov IP in vrata, ki ju določite, uporabljata izravnalnik obremenitve za sprejemanje dohodnih zahtev.

Ko dodamo prejšnje vrstice v vašo konfiguracijsko datoteko, moramo znova zagnati »haproxy.service« z naslednjim ukazom:

$ sudo systemctl znova zaženi haproxy

Na tej točki lahko poskusimo poslati zahteve na naše spletno mesto z ukazom 'curl'. Zaženite ukaz in dodajte ciljni naslov IP.

$ curl

Ker moramo še določiti, kakšno bo zaledje našega HAProxy, dobimo napako 503, kot je prikazano v nadaljevanju. Čeprav je izravnalnik obremenitve uspel prejeti zahteve, trenutno ni na voljo noben strežnik, ki bi jih obravnaval, zato je prišlo do napake.

3. korak: Konfiguracija zaledja

V zalednem razdelku definiramo strežnike, ki bodo obravnavali vse dohodne zahteve. Izravnalnik obremenitve se sklicuje na ta razdelek, da ve, kako naj porazdeli dohodne zahteve, da zagotovi, da noben strežnik ne bo preobremenjen.

Napaka 503, ki smo jo dobili prej, je bila, ker nismo imeli nobenega zaledja za obdelavo zahtev. Začnimo z definiranjem »default_backend« za obdelavo zahtev. Določite ga v razdelku frontend. Za ta primer smo ga poimenovali »linux_backend«.

Nato ustvarite zaledni razdelek, ki ima enako ime kot tisti, ki je definiran v sprednjem razdelku. Nato morate uporabiti ključno besedo »strežnik«, ki ji sledi ime vašega strežnika in njegov naslov IP. Naslednja slika prikazuje, da smo definirali strežnik »linuxhint1« z uporabo IP 127.0.0.1 in vrat 8001:

Lahko imate skupino zalednih strežnikov, vendar smo za ta primer definirali samo enega. Prepričajte se, da ste shranili datoteko. Znova moramo znova zagnati storitev HAProxy.

Za preizkus ustvarjenega izravnalnika obremenitve HAProxy ustvarimo spletni strežnik z uporabo Python3 za povezovanje zalednih vrat z uporabo naslova IP, ki smo ga podali. Ukaz izvedemo takole:

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

Prepričajte se, da zamenjate vrednosti, da se ujemajo z vašim naslovom IP in vrati, ki jih želite povezati. Opazite, kako se ustvari spletni strežnik in posluša vse dohodne zahteve.

Na drugem terminalu uporabimo ukaz 'curl', da pošljemo zahtevo strežniku.

$ curl

Za razliko od tega, kako smo prej dobili napako 503, ki kaže, da ni na voljo noben strežnik za obdelavo zahteve, tokrat dobimo izhod, ki potrjuje, da naš izravnalnik obremenitve HAProxy deluje.

Če se vrnete na prejšnji terminal, kjer smo ustvarili spletni strežnik, boste videli, da dobimo izhod uspeha 200, ki potrjuje, da je HAProxy prejel zahtevo in jo obravnaval tako, da jo je poslal na določen strežnik v našem zalednem razdelku.

Tako lahko nastavite preprost HAProxy za svoje spletno mesto ali aplikacijo.

Delo s pravili

Preden zaključimo s to vadnico HAProxy za začetnike, se na hitro pogovorimo o tem, kako lahko definirate pravila, ki bodo vodila, kako bo izravnalnik obremenitve obravnaval zahteve.

Po enakih korakih kot prej pustimo naš privzeti razdelek nedotaknjen in v sprednjem razdelku določimo različne naslove IP. Vežemo isti naslov IP, vendar sprejemamo povezave iz različnih vrat.

Poleg tega imamo svoj »default_backend« in še en »use_backend«, ki je različna skupina strežnikov, ki jih bomo uporabljali glede na vrata, iz katerih prihajajo zahteve. V naslednji konfiguraciji vse zahteve prek vrat 81 obravnavajo strežniki v »Linux2_backend«. Vse druge zahteve obravnava »default_backend«.

Nato ustvarimo zaledne odseke, kot je definirano v sprednjem delu. Upoštevajte, da imamo za vsako zaledje drugačen strežnik, ki ga določimo za uporabo za obravnavanje zahtev.

Hitro znova zaženite storitev HAProxy.

Ustvarimo spletni strežnik z uporabo Python3 in povežimo zahteve na vrata 8002, ki so nadomestni zaledni strežnik.

Ko mu pošiljamo zahteve, določimo vrata kot 81, da sproži izravnalnik obremenitve, da pošlje zahteve nadomestnemu strežniku, ki ni privzeti.

Ob ponovnem preverjanju našega spletnega strežnika lahko vidimo, da uspe sprejeti in obravnavati zahteve ter daje odgovor 200 (uspeh).

Tako lahko določite pravila za usmerjanje, kako bo vaš izravnalnik obremenitve prejemal in obravnaval zahteve.

Zaključek

HAProxy je idealna rešitev za uravnoteženje obremenitve za aplikacije TCP/HTTP. Ko je nameščen, lahko udobno urejate konfiguracijsko datoteko, da določite privzete, čelne in zaledne odseke, ki vodijo, kako bo deloval vaš izravnalnik obremenitve. Ta objava je vodnik za začetnike po HAProxy. Začelo se je z opredelitvijo HAProxy in njegovih funkcij. Nato se je poglobil v razumevanje, kako konfigurirati HAProxy, in zaključil s primerom, kako uporabiti HAProxy kot izravnalnik obremenitve.