Ako implementovať efektívne zdravotné kontroly v HAProxy

Ako Implementovat Efektivne Zdravotne Kontroly V Haproxy



Nastavenie vášho HAProxy, aby fungovalo ako váš vyvažovač záťaže, je neúplné, ak nezvažujete efektívne kontroly stavu servera. Implementácia zdravotných kontrol pomáha zlepšiť spoľahlivosť a dostupnosť aplikácie. HAProxy podporuje implementáciu zdravotných kontrol, ktoré kontrolujú backend servery, aby sa ubezpečil, že ich zdravotný stav je vhodný na použitie.

Do rotácie sa pridajú iba servery, ktoré prejdú kontrolou stavu. Týmto spôsobom sa server nevyberie na použitie, ak neprejde kontrolou stavu, čím sa minimalizujú možnosti prestojov. V tomto príspevku sa budeme hlbšie zaoberať tým, ako fungujú zdravotné kontroly v HAProxy a čo je potrebné na implementáciu efektívnej zdravotnej kontroly. Poďme začať!

Čo sú zdravotné kontroly v HAProxy

Pri konfigurácii HAProxy je jednou úlohou určiť, ktoré servery typu backend sa majú použiť pre vašu aplikáciu. Týmto spôsobom bude prevádzka distribuovaná na servery, aby sa predišlo preťaženiu servera. Zdravotné kontroly však pomáhajú uistiť sa, že server je vybratý na obsluhu prenosu iba vtedy, ak je v poriadku.







Kontroly stavu sa vykonávajú na každom serveri a iba tie, ktoré vyhoveli, sa pridajú do rotácie na použitie pri vyrovnávaní záťaže. Kontroly stavu sa vykonávajú odoslaním požiadaviek, ako sú TCP alebo HTTP, na preddefinovaný koncový bod na vašom backendovom serveri. Výsledky zdravotného stavu, ktoré backendový server odošle späť, určujú jeho stav. Stav servera môže napríklad zobrazovať UP alebo DOWN alebo poslať stav OK 200, ktorý potvrdzuje, že server je v poriadku.



Pri konfigurácii kontrol stavu sa uistite, že máte preddefinovaný koncový bod, ktorý sa má použiť na kontroly stavu. Existujú rôzne možnosti, ktoré môžete použiť na nastavenie koncového bodu. Môžete napríklad vrátiť stavový kód alebo správu v závislosti od stavu servera. Všetky kontroly stavu sú definované v backendovej časti vášho konfiguračného súboru HAProxy. Otvorte konfiguračný súbor a vytvorte sekciu frontend.



$ sudo nano /etc/haproxy/haproxy.cfg

Tu je základný príklad frontendovej časti, ktorá spája port 80, nastavuje stránku so štatistikami a určuje predvolený backend.





Ďalším krokom je vytvorenie backendovej sekcie. Nasledujú rôzne príklady, ako implementovať efektívnu kontrolu stavu v HAProxy.



Príklad 1: Implementácia účinných aktívnych zdravotných kontrol

Jednoduchým spôsobom implementácie kontrol stavu v HAProxy je nastavenie aktívnych kontrol stavu. Pri tejto možnosti sa HAProxy pokúsi pripojiť k serveru. Ak nie je odoslaná žiadna odpoveď, server považuje za nefunkčný a vyradí ho z rotácie. Predvolený spôsob implementácie aktívnych kontrol stavu je pridaním kľúčového slova „check“ na každý riadok servera, aby ich HAProxy skontroloval všetky.

Hoci tento prvý príklad funguje, nie je to najlepší spôsob, ako implementovať zdravotné kontroly. Okrem toho používa predvolené nastavenia. Napríklad interval medzi kontrolami, označený ako inter, je nastavený na dve sekundy. Pád, počet povolených neúspešných kontrol, je nastavený na tri. Ak chcete upraviť tieto nastavenia, zadajte preferovaný medzičas a počet kontrol, ako je uvedené v nasledujúcom príklade:

Príklad 2: Implementácia kontroly stavu HTTP

Pri kontrole stavu HTTP odošle HAProxy požiadavku HTTP na všetky servery s kľúčovým slovom „check“. Na základe odpovede vyhodnotí stav servera. Príklady úspešných odpovedí servera spadajú do rozsahu 2xx alebo 3xx. Odpoveď ako 200 OK znamená, že server je v dobrom stave.

V tomto príklade pridajte do backendu riadok „option httpchk“.

Príklad 3: Práca s požiadavkou GET

HAProxy odošle požiadavku GET na cestu „/“ pri vytváraní požiadavky HTTP. Ak však máte svoj koncový bod nakonfigurovaný v inej ceste, môžete zadať cestu URL, napríklad „/health“, a HAProxy naň odošle požiadavku GET.

Na základe vášho koncového bodu server použije odpoveď na určenie stavu servera. Postup implementácie:

Príklad 4: Zadanie cesty požiadavky GET a stavu odpovede

Pomocou koncového bodu môžete určiť, akú úspešnú odpoveď môžete očakávať od požiadavky GET koncového bodu, aby ste určili stav servera. V tomto príklade je naša cesta požiadavky GET „/health“ a očakávame, že stav odpovede 200 potvrdí, že server je v dobrom stave na zvládnutie vyrovnávania záťaže a iných úloh.

Po úprave konfiguračného súboru HAProxy reštartujte HAProxy, aby sa zmeny prejavili.

To je všetko! Na svojom HAProxy ste implementovali efektívne kontroly stavu. Môžete prejsť na stránku so štatistikami alebo skontrolovať protokolový súbor pomocou nasledujúceho príkazu, aby ste sa uistili, že kontroly stavu fungujú podľa očakávania:

$ tail -f /var/log/haproxy.log

Záver

Účinnú kontrolu stavu v HAProxy môžete implementovať rôznymi spôsobmi. Kontroly stavu sú implementované v backendovej časti konfiguračného súboru HAProxy a tento príspevok uvádza rôzne príklady, ako na to ísť. Skontrolujte si svoju ideálnu metódu a pohodlne implementujte efektívnu kontrolu zdravotného stavu v HAProxy.