HAProxy návod pre začiatočníkov

Haproxy Navod Pre Zaciatocnikov



Ako sa vaša aplikácia škáluje, objavuje sa potreba pridať ďalšie servery, aby zvládli väčšiu návštevnosť. Čím väčšiu návštevnosť vaša aplikácia dostane, tým vyššia je šanca, že bude čeliť výpadkom pri preťažení servera. Existujú však nástroje, ako je HAProxy, ktoré vám umožňujú definovať, ako sa s prevádzkou zaobchádza, aby sa vyrovnala záťaž na vašom serveri. Cieľom je zabezpečiť, aby žiadny server nebol preťažený. High Availability Proxy je softvér s otvoreným zdrojovým kódom, ktorý je navrhnutý tak, aby ponúkal spoľahlivé vyvažovanie záťaže a zároveň fungoval ako reverzný proxy pre aplikácie TCP/HTTP.

HAProxy pracuje na znížení preťaženia akéhokoľvek servera a dosahuje to distribúciou prevádzky, aby sa zabezpečilo, že žiadne preťaženie servera nebude, ale budú k dispozícii ďalšie servery. Platforma, ako je Instagram, má masívnu návštevnosť kvôli požiadavkám odosielaným za sekundu, a preto je potrebné použiť HAProxy na definovanie frontendu, backendu a poslucháčov pre servery, aby sa predišlo preťaženiu.

Prečo používať HAProxy

Predtým, ako sa dozviete o inštalácii a konfigurácii HAProxy, mali by ste pochopiť, prečo ju potrebujeme, vďaka funkciám, ktoré ponúka. Toto sú hlavné funkcie HAProxy:







  1. Rozdelenie výkonu - S HAProxy môžete pohodlne distribuovať prevádzku medzi rôzne servery, aby ste sa vyhli preťaženiu jedného servera. Vaša aplikácia tak nebude čeliť žiadnym problémom s výpadkami a dosiahnete rýchlejšiu odozvu, spoľahlivosť a dostupnosť.
  2. Protokolovanie a monitorovanie – Získate podrobné protokoly monitorovania vašich serverov, ktoré vám pomôžu pri riešení problémov. Okrem toho má HAProxy stránku so štatistikami, kde môžete získať analýzu výkonu v reálnom čase pre váš vyrovnávač zaťaženia.
  3. Zdravotné kontroly - Dokonca aj vaše servery vyžadujú kontrolu stavu na určenie ich stavu. HAProxy často spúšťa zdravotné kontroly, aby zistil stav vášho servera, aby zvýšil jeho spoľahlivosť. Ak sa zistí nefunkčný server, presmeruje prenos na iný server.
  4. Reverzný proxy – Jedným zo spôsobov zvýšenia bezpečnosti je skrytie vnútornej štruktúry. Našťastie vám HAProxy umožňuje prijímať prenosy od klientov a smerovať ich na príslušné servery. Týmto spôsobom je vaša vnútorná štruktúra skrytá pred okom hackera.
  5. ACL (Access Control List) – Pomocou HAProxy môžete definovať, ako by malo prebiehať smerovanie prevádzky pomocou rôznych kritérií, ako sú cesty, hlavičky a adresy IP. Definovanie vlastnej logiky smerovania pre vašu premávku sa tak stáva jednoduchším.
  6. Ukončenie SSL – V predvolenom nastavení je SSL/TLS vyťažené backendovými servermi, čo spôsobuje znížený výkon. V prípade HAProxy sa však ukončenie SSL/TLS vyskytuje v nástroji na vyrovnávanie záťaže, čím sa úloha v backendových serveroch zníži.

Inštalácia HAProxy

Doteraz sme definovali, čo je HAProxy a diskutovali o funkciách, ktoré ponúka, aby sme vám pomohli pochopiť, prečo ho potrebujete pre svoju aplikáciu. Ďalším krokom je pochopiť, ako začať inštaláciou do vášho systému.



Ak používate systémy Ubuntu alebo Debian, HAProxy je možné nainštalovať zo správcu balíkov APT. Spustite nasledujúci príkaz:



$ sudo apt aktualizácia
$ sudo apt install haproxy

Podobne, ak používate systémy založené na RHEL alebo CentOS, HAProxy je k dispozícii v správcovi balíkov „yum“. Spustite nasledujúce príkazy:





$ sudo yum aktualizácia
$ sudo yum nainštalujte haproxy

V našom prípade používame Ubuntu. Náš príkaz teda máme nasledovný:



Potom môžeme skontrolovať jeho verziu, aby sme sa uistili, že sa nám podarilo úspešne nainštalovať HAProxy.

$ haproxy --verzia

Ako nakonfigurovať HAProxy

S nainštalovaným HAProxy môžete teraz otvoriť jeho konfiguračný súbor ( / etc/haproxy/haproxy.cfg) a definujte nastavenia, ktoré chcete použiť pre váš vyrovnávač zaťaženia.

Otvorte konfiguračný súbor pomocou editora, ako je nano alebo vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Získate konfiguračný súbor, ako je ten v nasledujúcom:

Z konfiguračného súboru si všimnete, že obsahuje dve hlavné časti:

  1. globálne - Je to prvá sekcia v súbore a jej hodnoty by sa nemali meniť. Obsahuje nastavenia procesu, ktoré definujú, ako HAProxy funguje. Napríklad definuje podrobnosti protokolovania a skupiny alebo používateľov, ktorí môžu vykonávať funkcie HAProxy. Všimnite si, že v tomto konfiguračnom súbore môžete mať iba jednu globálnu sekciu a jej hodnoty by mali zostať nezmenené.
  1. predvolené – Táto časť obsahuje predvolené hodnoty pre uzly. V tejto časti môžete napríklad pridať časové limity alebo prevádzkový režim vášho HAProxy. Okrem toho je možné mať v konfiguračnom súbore HAProxy množstvo predvolených sekcií.

Tu je príklad sekcie „Predvolené“:

Na danom obrázku režim definuje, ako bude vaše HAProxy spracovávať prichádzajúce požiadavky. Režim môžete nastaviť na HTTP alebo TCP. Čo sa týka časového limitu, určuje, ako dlho má HAProxy čakať. Napríklad časový limit pripojenia je čas čakania, kým sa vytvorí backendové pripojenie. Časový limit klienta udáva, ako dlho má HAProxy čakať, kým klient odošle údaje. Časový limit servera je čas čakania, kým príslušný server odošle údaje, ktoré budú preposlané klientovi. Spôsob, akým definujete predvolené hodnoty, je veľmi dôležitý pri zvyšovaní času odozvy vašej aplikácie.

Existujú tri ďalšie sekcie, ktoré by ste mali definovať, aby váš nástroj na vyvažovanie zaťaženia fungoval podľa očakávania.

  1. frontend – Táto časť obsahuje adresy IP, ktoré chcete, aby vaši klienti používali na vytvorenie spojenia.
  2. backend – Zobrazuje fondy serverov, ktoré spracúvajú požiadavky, ako sú definované v časti frontend.
  3. počúvaj - Používa sa postupne, keď chcete smerovať špecifickú skupinu serverov. Táto časť kombinuje úlohy frontendu a backendu.

Uveďme si príklad

V tomto príklade definujeme frontend tak, aby používal localhost so špecifickým portom. Ďalej ho spojíme s backendom, ktorý spúšťa localhost a potom spustíme Python server, aby sme otestovali, či všetko funguje tak, ako sa očakáva pri vyrovnávaní záťaže. Postupujte podľa uvedených krokov.

Krok 1: Konfigurácia sekcie Predvolené nastavenia

V časti „Predvolené“ nastavíme hodnoty, ktoré sa majú zdieľať medzi uzlami. V našom prípade nastavíme režim na HTTP a nastavíme časové limity pre klienta a server. Čas si môžete prispôsobiť podľa svojich potrieb.

Pamätajte, že všetky tieto úpravy sú v konfigurácii HAProxy umiestnenej na „/etc/haproxy/haproxy.cfg“. Po nakonfigurovaní sekcie predvolených nastavení definujme rozhranie.

Krok 2: Konfigurácia frontendovej sekcie

V sekcii frontend definujeme, ako chceme, aby bola aplikácia alebo webstránka prístupná klientom online. Dávame IP adresy pre aplikáciu. Ale v tomto prípade pracujeme s localhostom. Preto je naša IP adresa záložnou adresou 127.0.0.1 a chceme akceptovať pripojenia cez port 80.

Musíte pridať kľúčové slovo „bind“, ktoré funguje ako poslucháč adresy IP na zadanom porte. IP adresa a port, ktoré definujete, sú to, čo nástroj na vyrovnávanie zaťaženia používa na prijímanie prichádzajúcich požiadaviek.

Po pridaní predchádzajúcich riadkov do vášho konfiguračného súboru musíme reštartovať „haproxy.service“ s nasledujúcim príkazom:

$ sudo systemctl reštart haproxy

V tomto bode môžeme skúsiť odoslať požiadavky na našu webovú stránku pomocou príkazu „curl“. Spustite príkaz a pridajte cieľovú IP adresu.

$ curl

Keďže ešte musíme definovať, ako bude backend nášho HAProxy, dostaneme chybu 503, ako je uvedené nižšie. Hoci nástroj na vyrovnávanie zaťaženia dokázal prijať požiadavky, momentálne nie je k dispozícii žiadny server, ktorý by ich spracoval, a preto došlo k chybe.

Krok 3: Konfigurácia backendu

Sekcia backend je miesto, kde definujeme servery, ktoré budú spracovávať všetky prichádzajúce požiadavky. Nástroj na vyrovnávanie zaťaženia odkazuje na túto časť, aby vedel, ako by mal distribuovať prichádzajúce požiadavky, aby sa zabezpečilo, že žiadny server nebude preťažený.

Chyba 503, ktorú sme dostali skôr, bola preto, že sme nemali žiadny backend na spracovanie žiadostí. Začnime definovaním „default_backend“ na spracovanie žiadostí. Definujete ho v sekcii frontend. Pre tento prípad sme ho nazvali „linux_backend“.

Ďalej vytvorte sekciu backendu, ktorá má rovnaký názov ako ten, ktorý je definovaný v sekcii frontend. Potom musíte použiť kľúčové slovo „server“, za ktorým nasleduje názov vášho servera a jeho IP adresa. Nasledujúci obrázok ukazuje, že sme definovali server „linuxhint1“ pomocou IP 127.0.0.1 a portu 8001:

Môžete mať skupinu backendových serverov, ale pre tento prípad sme definovali iba jeden. Uistite sa, že ste súbor uložili. Musíme znova reštartovať službu HAProxy.

Aby sme otestovali vytvorený HAProxy load balancer, vytvoríme webový server pomocou Python3, ktorý naviaže backendové porty pomocou IP adresy, ktorú sme zadali. Príkaz spustíme nasledovne:

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

Uistite sa, že ste nahradili hodnoty tak, aby sa zhodovali s vašou IP adresou a portom, ktorý chcete viazať. Všimnite si, ako sa vytvára webový server a počúva všetky prichádzajúce požiadavky.

Na inom termináli použite príkaz „curl“ na odoslanie požiadavky na server.

$ curl

Na rozdiel od toho, ako sme predtým dostali chybu 503, ktorá ukazuje, že nie je k dispozícii žiadny server na spracovanie požiadavky, tentoraz dostaneme výstup, ktorý potvrdzuje, že náš vyrovnávač zaťaženia HAProxy funguje.

Ak sa vrátite na predchádzajúci terminál, kde sme vytvorili webový server, uvidíte, že dostaneme úspešný výstup 200, ktorý potvrdzuje, že HAProxy prijalo požiadavku a spracovalo ju odoslaním na definovaný server v našej backendovej sekcii.

Takto môžete nastaviť jednoduchý HAProxy pre váš web alebo aplikáciu.

Práca s pravidlami

Predtým, ako skončíme s týmto návodom pre začiatočníkov HAProxy, poďme sa rýchlo porozprávať o tom, ako môžete definovať pravidlá, ktoré usmernia, ako bude vyrovnávač zaťaženia spracovávať požiadavky.

Podľa rovnakých krokov ako predtým ponechajte našu predvolenú sekciu nedotknutú a definujte rôzne adresy IP v sekcii frontend. Viažeme rovnakú IP adresu, ale akceptujeme pripojenia z rôznych portov.

Okrem toho máme náš „default_backend“ a ďalší „use_backend“, čo je iná skupina serverov, ktoré budeme používať v závislosti od portu, z ktorého prichádzajú požiadavky. V nasledujúcej konfigurácii sú všetky požiadavky cez port 81 spracované servermi v „Linux2_backend“. Akékoľvek ďalšie požiadavky spracuje „default_backend“.

Potom vytvoríme sekcie backendu, ako sú definované vo frontende. Všimnite si, že pre každý backend máme iný server, ktorý špecifikujeme na použitie na spracovanie požiadaviek.

Rýchlo reštartujte službu HAProxy.

Vytvorme webový server pomocou Python3 a spojíme požiadavky na porte 8002, ktorý je alternatívnym backendovým serverom.

Pri odosielaní požiadaviek naň špecifikujeme port ako 81, aby sa spustil nástroj na vyrovnávanie záťaže, aby odosielal požiadavky na alternatívny server, ktorý nie je predvolený.

Pri opätovnom skontrolovaní nášho webového servera vidíme, že dokáže prijímať a spracovávať požiadavky a dáva 200 (úspešnú) odpoveď.

Takto môžete definovať pravidlá, podľa ktorých bude váš nástroj na vyvažovanie zaťaženia prijímať a spracovávať požiadavky.

Záver

HAProxy je ideálne riešenie pre vyrovnávanie záťaže pre aplikácie TCP/HTTP. Po nainštalovaní môžete pohodlne upravovať konfiguračný súbor, aby ste definovali predvolené nastavenia, frontend a backendové časti, ktoré vám pomôžu, ako bude váš nástroj na vyrovnávanie zaťaženia fungovať. Tento príspevok je sprievodcom pre začiatočníkov HAProxy. Začalo to definovaním HAProxy a jeho funkcií. Ďalej sa ponoril do pochopenia toho, ako nakonfigurovať HAProxy a na záver uviedol príklad, ako používať HAProxy ako vyrovnávač zaťaženia.