Ahoj všichni! Již dnes začíná kurz , proto jsme uspořádali odpovídající tematický webinář zaměřený na přehled ELB. Prošli jsme typy vyrovnávačů zátěže a vytvořili několik instancí EC2 s vyrovnávačem zátěže. Také jsme se podívali na další příklady použití.

, budete:
- rozumět, co je AWS Load Balancing;
- znát typy Elastic Load Balancer a jeho komponenty;
- používat AWS ELB ve své praxi.
Proč je to vůbec užitečné:
- užitečné, pokud plánujete skládat zkoušky certifikace AWS;
- je to jednoduchý způsob, jak rozdělit zátěž mezi servery;
- je to jednoduchý způsob, jak přidat Lambda do vašeho servisu (ALB).
Otevřenou lekci vedl , systémový inženýr v marketingové společnosti zabývající se vývojem a údržbou webových stránek.
Úvod
Co je to Elastic Load Balancer, můžete vidět na diagramu níže, kde je uveden nejjednodušší příklad:

Vyrovnávač zátěže přijímá požadavky a distribuuje je mezi instance. Máme jednu samostatnou instanci, máme Lambda funkce a máme AutoScaling skupinu (skupinu serverů).
Typy AWS ELB
1. Prozkoumejme hlavní typy:
Classic Load Balancer. Nejstarší vyrovnávač od AWS, pracuje jak na 4., tak na 7. úrovni OSI, podporuje HTTP, HTTPS, TCP a SSL. Zajišťuje základní vyrovnávání zátěže mezi několika instancemi Amazon EC2 a funguje jak na úrovni požadavků, tak na úrovni spojení. Otevřeme ho (vyznačeno šedě):

Tento vyrovnávač zátěže je považován za zastaralý, proto se doporučuje používat pouze ve výjimečných případech. Například pro aplikace, které byly postaveny v síti EC2-Classic. V zásadě nám nikdo nebrání ho vytvořit:

2. Network Load Balancer. Vhodné pro vysokou zátěž, pracuje na 4. úrovni OSI (může být použito v EKS a ECS), podporuje TCP, UDP a TLS.
Network Load Balancer směruje provoz na cílové objekty v Amazon VPC a je schopen zpracovávat miliony požadavků za sekundu při extrémně nízkých latencích. Kromě toho je optimalizován pro zpracování modelů provozu s náhlou a měnící se zátěží.
3. Application Load Balancer. Pracuje na 7. úrovni, podporuje Lambda, podporuje pravidla na úrovni hlaviček a cest, podporuje HTTP a HTTPS.
Zajišťuje pokročilé směrování požadavků zaměřené na dodávku aplikací, které jsou postaveny na moderních architekturách, včetně mikroservis a kontejnerů. Směruje provoz k cílovým objektům v Amazon VPC na základě obsahu požadavku.
Pro mnoho uživatelů se Application Load Balancer stal prvním náhradníkem Classic Load Balancer, protože TCP není tak rozšířený jako HTTP.
Vytvoříme ho také, takže už budeme mít dva vyvažovače zátěže:

Komponenty Load Balance
Obecné komponenty Load Balance (vlastní všem vyvažovačům):
- Access Logging Policy
— vaše přístupové protokoly k ELB. Pro provedení nastavení můžete přejít do popisu a vybrat tlačítko „Upravit atributy“:

Poté uvedeme S3Bucket — objektové úložiště Amazon:

- Schéma
— interní nebo externí vyvažovač. Smysl je v tom, zda by váš LoadBalancer měl přijímat externí adresy, aby byl dostupný zvenčí, nebo může to být váš interní vyvažovač;
- Bezpečnostní skupiny
— kontrola přístupu k vyvažovači. V podstatě je to vysoceúrovňová brána firewall.


- Podřízené sítě
— podsítě uvnitř vaší VPC (odpovídajícím způsobem i zóny dostupnosti). Podsítě se uvádějí při vytváření. Pokud je VPC omezeno na region, jsou podsítě omezena podle zón dostupnosti. Při vytváření vyvažovače zátěže je lepší ho vytvořit alespoň ve dvou podřízených sítích (pomůže to, pokud nastanou problémy s jednou zónou dostupnosti);
- Posluchači
— vaše protokoly vyvažovače. Jak již bylo řečeno dříve, pro Classic Load Balancer to mohou být HTTP, HTTPS, TCP a SSL, pro Network Load Balancer — TCP, UDP a TLS, pro Application Load Balancer — HTTP a HTTPS.
Příklad pro Classic Load Balancer:

A zde v Application Load Balancer vidíme trochu jiné rozhraní a celkově jinou logiku:

Komponenty Load Balancer v2 (ALB a NLB)
Nyní se podíváme podrobněji na vyvažovače 2. verze Application Load Balancer a Network Load Balancer. Tyto vyvažovače mají své komponentní vlastnosti. Například se objevila taková myšlenka, jako jsou Target Groups — instance (a funkce). Díky této komponentě máme možnost uvádět, na kterou z Target Groups chceme směrovat provoz.


Jednoduše řečeno, v Target Groups uvádíme instance, kam bude provoz směřovat. Pokud v klasickém vyvažovači zátěže pouze připojujete instance k vyvažovači, pak v Application Load Balancer nejprve:
- vytváříte Load Balancer;
- vytváříte Target skupinu;
- směřujete na potřebné porty nebo pravidla Load Balancer na požadované Target Groups;
- v Target skupinách přiřazujete instance.
Tato logika může vypadat složitěji, ale ve skutečnosti je pohodlnější.
Další komponenta — Pravidla Listeneru (pravidla pro směrování). To se již týká pouze Application Load Balancer. Pokud v Network Load Balancer jednoduše vytvoříte Listener, který posílá provoz na konkrétní Target skupinu, tak v Application Load Balancer je to .

Nyní si dejme pár slov o další komponentě — Elastic IP (statické adresy pro NLB). Zatímco pravidla pro směrování Listeneru se týkala pouze Application Load Balancer, Elastic IP se týká pouze Network Load Balancer.
Vytvoříme Network Load Balancer:


A právě v procesu vytváření uvidíme, že máme možnost vybrat Elastic IP:

Elastic IP poskytuje jedinou IP adresu, kterou lze v čase propojit s různými instancemi EC2. Pokud má instance EC2 Elastic IP adresu a tato instance je ukončena nebo zastavena, můžeme okamžitě propojit novou instanci EC2 s adresou Elastic IP. Vaše aktuální aplikace přitom nepřestane fungovat, protože aplikace vidí stále stejnou IP adresu, i když se skutečná EC2 změnila.
Tady na téma, proč je Elastic IP potřeba. Podívejte se, vidíme 3 IP adresy, ale ty tady nezůstanou navždy:

Amazon je mění v průběhu času, může to dělat každých 60 sekund (ale v praxi samozřejmě méně často). To znamená, že IP adresy se mohou změnit. A v případě Network Load Balancer můžete právě přiřadit IP adresu a uvádět ji ve svých pravidlech, politikách apod.

Děláme závěry
ELB zajišťuje automatické rozdělení příchozího provozu mezi více cílovými objekty (kontejnery, instance Amazon EC2, IP adresy a Lambda funkce). ELB dokáže rozdělovat provoz se měnící zátěží jak v jedné dostupné zóně, tak mezi více dostupnými zónami. Uživatel si může vybrat ze tří typů vyvažovačů, které zajistí jak vysokou dostupnost, tak automatické škálování a slušnou ochranu. To vše je důležité pro zajištění odolnosti vašich aplikací.
Hlavní výhody:
- vysoká dostupnost. Ve smlouvě o službách je stanovena dostupnost 99,99 % pro vyvažovač zátěže. Například několik dostupnostních zón zajišťuje, že provoz bude zpracován pouze na funkčních objektech. V podstatě lze vyvážit zátěž napříč celým regionem, přesměrováním provozu na funkční cílové objekty v různých dostupnostních zónách;
- bezpečnost. ELB pracuje s Amazon VPC a poskytuje různé možnosti zabezpečení — zahrnuje integrovanou správu certifikátů, autentizaci uživatelů a dešifrování SSL/TLS. To vše zajišťuje centralizovanou a flexibilní správu nastavení TLS;
- elasticita. ELB může zpracovávat náhlé změny síťového provozu. A hluboká integrace s Auto Scaling dává aplikaci dostatek zdrojů, pokud se zatížení mění, přičemž není potřeba manuální zásah;
- flexibilita. Lze používat IP adresy k směrování požadavků na cílové objekty vašich aplikací. To zajišťuje flexibilitu při virtualizaci cílových aplikací, což umožňuje hostit několik aplikací na jednom instance. Protože aplikace mohou používat jeden síťový port a mají oddělené bezpečnostní skupiny, usnadňuje interakci mezi aplikacemi, když máme například architekturu na bázi mikroslužeb;
- monitorování a audit. Lze provádět monitorování aplikací v reálném čase pomocí funkcí Amazon CloudWatch. To zahrnuje metriky, protokoly a sledování požadavků. Jednoduše řečeno, budete schopni identifikovat problémy a poměrně přesně určovat úzké místo výkonu;
- hybridní vyvažování zátěže. Schopnost vyvažovat zátěž mezi místními zdroji a AWS pomocí stejného vyvažovače usnadňuje migraci nebo rozšiřování místních aplikací do cloudu. Usnadňuje také zpracování selhání s využitím cloudu.
Pokud máte zájem o podrobnosti, zde je ještě pár užitečných odkazů z oficiálního webu Amazon:
- .
Zdroj: habr.com
