Výukový program pro začátečníky HAProxy

Vyukovy Program Pro Zacatecniky Haproxy



Jak se vaše aplikace škáluje, objevuje se potřeba přidat další servery, aby zvládly větší provoz. Čím větší provoz vaše aplikace zaznamená, tím vyšší je pravděpodobnost, že bude čelit výpadku při přetížení serveru. Existují však nástroje, jako je HAProxy, které vám umožňují definovat, jak bude provoz zpracován, aby se vyrovnala zátěž na vašem serveru. Cílem je zajistit, aby žádný server nebyl přetížen. High Availability Proxy je software s otevřeným zdrojovým kódem, který je navržen tak, aby nabízel spolehlivé vyrovnávání zátěže a zároveň fungoval jako reverzní proxy pro aplikace TCP/HTTP.

HAProxy pracuje na snížení přetížení libovolného serveru a dosahuje toho distribucí provozu, aby bylo zajištěno, že nedojde k přetížení serveru, ale jsou k dispozici další servery. Platforma, jako je Instagram, má masivní provoz kvůli požadavkům odesílaným za sekundu, a proto je potřeba použít HAProxy k definování frontendu, backendu a posluchačů pro servery, aby se zabránilo přetížení.

Proč používat HAProxy

Než se dozvíte o instalaci a konfiguraci HAProxy, měli byste pochopit, proč ji potřebujeme, díky funkcím, které nabízí. Zde jsou hlavní vlastnosti HAProxy:







  1. Vyrovnávání zátěže – S HAProxy můžete pohodlně distribuovat provoz mezi různé servery, abyste se vyhnuli přetížení jednoho serveru. Vaše aplikace tak nebude čelit žádným problémům s výpadky a dosáhnete rychlejší odezvy, spolehlivosti a dostupnosti.
  2. Logování a monitorování – Získáte podrobné protokoly monitorování pro vaše servery, které vám pomohou s řešením problémů. Kromě toho má HAProxy stránku statistik, kde můžete získat analýzu výkonu v reálném čase pro váš nástroj pro vyrovnávání zatížení.
  3. Zdravotní prohlídky – Dokonce i vaše servery vyžadují kontrolu stavu k určení jejich stavu. HAProxy často spouští kontroly stavu, aby zjistil stav vašeho serveru a zvýšil jeho spolehlivost. Pokud je detekován nefunkční server, přesměruje provoz na jiný server.
  4. Reverzní proxy – Jedním ze způsobů, jak zvýšit bezpečnost, je skrytí vnitřní struktury. Naštěstí vám HAProxy umožňuje přijímat provoz od klientů a směrovat je na příslušné servery. Tímto způsobem je vaše vnitřní struktura skryta před okem hackera.
  5. ACL (Access Control List) – Pomocí HAProxy můžete definovat, jak má probíhat směrování provozu pomocí různých kritérií, jako jsou cesty, hlavičky a IP adresy. Definování vlastní logiky směrování pro váš provoz se tak stává jednodušší.
  6. Ukončení SSL – Ve výchozím nastavení je SSL/TLS vytíženo backendovými servery, což způsobuje snížený výkon. U HAProxy však dojde k ukončení SSL/TLS na nástroji pro vyrovnávání zátěže, čímž dojde k odlehčení úlohy na backendových serverech.

Instalace HAProxy

Doposud jsme definovali, co je HAProxy, a diskutovali o funkcích, které nabízí, abychom vám pomohli pochopit, proč jej potřebujete pro svou aplikaci. Dalším krokem je pochopit, jak začít instalací do vašeho systému.



Pokud používáte systémy Ubuntu nebo Debian, HAProxy lze nainstalovat ze správce balíčků APT. Spusťte následující příkaz:



$ aktualizace sudo apt
$ sudo apt install haproxy

Podobně, pokud používáte systémy založené na RHEL nebo CentOS, HAProxy je k dispozici ve správci balíčků „yum“. Spusťte následující příkazy:





$ sudo yum aktualizace
$ sudo yum nainstalovat haproxy

V našem případě používáme Ubuntu. Máme tedy příkaz takto:



Poté můžeme zkontrolovat jeho verzi, abychom se ujistili, že se nám podařilo nainstalovat HAProxy úspěšně.

$ haproxy --verze

Jak nakonfigurovat HAProxy

S nainstalovaným HAProxy nyní můžete otevřít jeho konfigurační soubor ( / etc/haproxy/haproxy.cfg) a definujte nastavení, která chcete použít pro váš load balancer.

Otevřete konfigurační soubor pomocí editoru, jako je nano nebo vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Získáte konfigurační soubor, jako je ten v následujícím:

Z konfiguračního souboru si všimnete, že obsahuje dvě hlavní části:

  1. globální – Je to první sekce v souboru a její hodnoty by se neměly měnit. Obsahuje nastavení procesu, která definují, jak HAProxy funguje. Například definuje podrobnosti protokolování a skupiny nebo uživatele, kteří mohou spouštět funkce HAProxy. Všimněte si, že v tomto konfiguračním souboru můžete mít pouze jednu globální sekci a její hodnoty by měly zůstat nezměněny.
  1. výchozí – Tato část obsahuje výchozí hodnoty pro uzly. V této sekci můžete například přidat časové limity nebo provozní režim vašeho HAProxy. Kromě toho je možné mít v konfiguračním souboru HAProxy četné výchozí sekce.

Zde je příklad sekce „Výchozí“:

V daném obrázku režim definuje, jak bude vaše HAProxy zpracovávat příchozí požadavky. Režim můžete nastavit na HTTP nebo TCP. Pokud jde o timeout, určuje, jak dlouho má HAProxy čekat. Například časový limit připojení je doba, po kterou je třeba počkat, než se vytvoří připojení typu back-end. Timeout client udává, jak dlouho má HAProxy čekat, než klient odešle data. Timeout server je doba, po kterou se čeká, až příslušný server odešle data, která budou předána klientovi. Jak definujete výchozí hodnoty, hodně záleží na prodloužení doby odezvy vaší aplikace.

Existují tři další sekce, které byste měli definovat, aby váš nástroj pro vyrovnávání zatížení fungoval podle očekávání.

  1. frontend – Tato část obsahuje IP adresy, které chcete, aby vaši klienti používali k navázání spojení.
  2. backend – Zobrazuje fondy serverů, které zpracovávají požadavky, jak je definováno v části frontend.
  3. poslouchej - Postupně se používá, když chcete směrovat určitou skupinu serverů. Tato část kombinuje úkoly frontendu a backendu.

Mějme příklad

Pro tento příklad definujeme frontend pro použití localhost s konkrétním portem. Dále jej svážeme s backendem, na kterém běží localhost, a poté spustíme Python server, abychom otestovali, zda vše funguje podle očekávání pro vyrovnávání zátěže. Postupujte podle uvedených kroků.

Krok 1: Konfigurace části Výchozí nastavení

V části „Výchozí“ nastavíme hodnoty, které mají být sdíleny mezi uzly. V našem případě nastavíme režim na HTTP a nastavíme časové limity pro klienta a server. Čas si můžete upravit podle svých potřeb.

Pamatujte, že všechny tyto úpravy jsou v konfiguraci HAProxy umístěné na „/etc/haproxy/haproxy.cfg“. Jakmile je nakonfigurována sekce výchozích nastavení, pojďme definovat frontend.

Krok 2: Konfigurace frontendové sekce

V sekci frontend definujeme, jak chceme, aby k aplikaci nebo webu přistupovali klienti online. Dáváme IP adresy pro aplikaci. Ale v tomto případě spolupracujeme s localhostem. Naše IP adresa je tedy záložní adresa 127.0.0.1 a chceme přijímat připojení přes port 80.

Musíte přidat klíčové slovo „bind“, které funguje jako posluchač pro IP adresu na zadaném portu. IP adresa a port, které definujete, jsou to, co nástroj pro vyrovnávání zatížení používá k přijímání příchozích požadavků.

Po přidání předchozích řádků do vašeho konfiguračního souboru musíme restartovat „haproxy.service“ následujícím příkazem:

$ sudo systemctl restart haproxy

V tomto okamžiku můžeme zkusit odeslat požadavky na náš web pomocí příkazu „curl“. Spusťte příkaz a přidejte cílovou IP adresu.

$ curl

Protože ještě musíme definovat, jak bude backend našeho HAProxy, dostaneme chybu 503, jak je znázorněno níže. Přestože nástroj pro vyrovnávání zatížení dokázal přijmout požadavky, v současné době není k dispozici žádný server, který by je zpracoval, a proto došlo k chybě.

Krok 3: Konfigurace backendu

Sekce backend je místo, kde definujeme servery, které budou zpracovávat všechny příchozí požadavky. Nástroj pro vyrovnávání zatížení odkazuje na tuto část, aby věděl, jak by měl distribuovat příchozí požadavky, aby se zajistilo, že žádný server nebude přetížen.

Chyba 503, kterou jsme dostali dříve, byla způsobena tím, že jsme neměli žádný backend pro zpracování požadavků. Začněme definováním „default_backend“ pro zpracování požadavků. Definujete jej v sekci frontend. Pro tento případ jsme jej pojmenovali „linux_backend“.

Dále vytvořte backendovou sekci, která má stejný název jako ten, který je definován v frontendové sekci. Poté musíte použít klíčové slovo „server“ následované názvem vašeho serveru a jeho IP adresou. Následující obrázek ukazuje, že jsme definovali server „linuxhint1“ pomocí IP 127.0.0.1 a portu 8001:

Můžete mít fond backendových serverů, ale pro tento případ jsme definovali pouze jeden. Ujistěte se, že jste soubor uložili. Musíme znovu restartovat službu HAProxy.

Abychom otestovali vytvořený nástroj pro vyrovnávání zatížení HAProxy, vytvoříme webový server pomocí Python3, který sváže backendové porty pomocí IP adresy, kterou jsme zadali. Příkaz spustíme následovně:

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

Ujistěte se, že jste nahradili hodnoty tak, aby odpovídaly vaší IP adrese a portu, který chcete svázat. Všimněte si, jak se webový server vytváří a naslouchá všem příchozím požadavkům.

Na jiném terminálu použijte příkaz „curl“ k odeslání požadavku na server.

$ curl

Na rozdíl od toho, jak jsme dostali dříve chybu 503, která ukazuje, že není k dispozici žádný server pro zpracování požadavku, tentokrát dostaneme výstup, který potvrzuje, že náš HAProxy load balancer funguje.

Pokud se vrátíte na předchozí terminál, kde jsme vytvořili webový server, uvidíte, že dostaneme úspěšný výstup 200, který potvrzuje, že HAProxy přijalo požadavek a zpracovalo jej odesláním na definovaný server v naší backendové sekci.

Takto si můžete nastavit jednoduchý HAProxy pro svůj web nebo aplikaci.

Práce s pravidly

Než skončíme s tímto výukovým programem HAProxy pro začátečníky, pojďme si rychle promluvit o tom, jak můžete definovat pravidla, která vedou k tomu, jak budou požadavky zpracovávány nástrojem pro vyrovnávání zatížení.

Podle stejných kroků jako dříve ponechme naši výchozí sekci nedotčenou a v sekci frontend definujme různé IP adresy. Svážeme stejnou IP adresu, ale přijímáme připojení z různých portů.

Navíc máme náš „default_backend“ a další „use_backend“, což je jiný fond serverů, který budeme používat v závislosti na portu, ze kterého požadavky přicházejí. V následující konfiguraci jsou všechny požadavky přes port 81 zpracovány servery v „Linux2_backend“. Jakékoli další požadavky zpracovává „default_backend“.

Poté vytvoříme backendové sekce, jak jsou definovány v frontendu. Všimněte si, že pro každý backend máme jiný server, který určíme pro použití pro zpracování požadavků.

Rychle restartujte službu HAProxy.

Pojďme vytvořit webový server pomocí Python3 a svázat požadavky na portu 8002, což je alternativní backend server.

Při odesílání požadavků na něj zadáváme port jako 81, aby se spustil nástroj pro vyrovnávání zatížení, aby odeslal požadavky na alternativní server, který není výchozí.

Při opětovné kontrole našeho webového serveru vidíme, že zvládá přijímat a zpracovávat požadavky a dává 200 (úspěšnou) odpověď.

Takto můžete definovat pravidla, podle kterých bude váš nástroj pro vyrovnávání zatížení přijímat a zpracovávat požadavky.

Závěr

HAProxy je ideálním řešením pro vyrovnávání zátěže pro aplikace TCP/HTTP. Po instalaci můžete pohodlně upravovat konfigurační soubor a definovat výchozí nastavení, frontend a backend sekce, které vám pomohou, jak bude váš nástroj pro vyrovnávání zatížení fungovat. Tento příspěvek je průvodcem pro začátečníky HAProxy. Začalo to definováním HAProxy a jeho funkcí. Dále se zabývali tím, jak nakonfigurovat HAProxy, a na závěr uvedl příklad, jak používat HAProxy jako nástroj pro vyrovnávání zatížení.