Cześć wszystkim! Już dziś zaczyna się kurs , w związku z czym przeprowadziliśmy odpowiedni tematyczny webinar, poświęcony przeglądowi ELB. Omówiliśmy rodzaje równoważników obciążenia i stworzyliśmy kilka instancji EC2 z równoważnikiem obciążenia. Zbadaliśmy również inne przykłady zastosowania.

, będziesz:
- rozumieć, czym jest AWS Load Balancing;
- znać rodzaje Elastic Load Balancer i jego komponenty;
- używać AWS ELB w swojej praktyce.
Dlaczego warto to umieć:
- jest to przydatne, jeśli planujesz zdawać egzaminy certyfikacyjne AWS;
- to prosty sposób na rozdzielanie obciążenia między serwerami;
- to prosty sposób na dodanie Lambda do Twojej usługi (ALB).
Otwarty wykład poprowadził , inżynier systemowy w firmie marketingowej zajmującej się tworzeniem i utrzymywaniem stron internetowych.
Wprowadzenie
Czym jest Elastic Load Balancer, można zobaczyć na diagramie poniżej, który przedstawia najprostszy przykład:

Równoważnik obciążenia przyjmuje zapytania i rozdziela je pomiędzy instancje. Mamy jedną oddzielną instancję, funkcje Lambda oraz grupę AutoScaling (grupa serwerów).
Rodzaje AWS ELB
1. Rozważmy podstawowe typy:
Classic Load Balancer. Najstarszy równoważnik od AWS, działa zarówno na 4., jak i 7. poziomie OSI, wspiera HTTP, HTTPS, TCP i SSL. Zapewnia podstawowe rozkładanie obciążenia pomiędzy kilkoma instancjami Amazon EC2 i działa zarówno na poziomie zapytań, jak i połączeń. Otwórzmy go (wyróżniony na szaro):

Ten równoważnik uważany jest za przestarzały, dlatego zaleca się jego użycie tylko w określonych przypadkach. Na przykład, dla aplikacji, które zostały zbudowane w sieci EC2-Classic. W zasadzie nikt nie przeszkadza nam go stworzyć:

2. Network Load Balancer. Nadaje się do dużych obciążeń, działa na 4. poziomie OSI (można go używać w EKS i ECS), wspiera TCP, UDP i TLS.
Network Load Balancer kieruje ruch do obiektów docelowych w Amazon VPC i jest w stanie przetwarzać miliony zapytań na sekundę przy ultra niskich opóźnieniach. Dodatkowo, jest zoptymalizowany do obsługi modeli ruchu o nagłych i zmieniających się obciążeniach.
3. Application Load Balancer. Działa na 7. poziomie, ma wsparcie dla Lambda, obsługuje reguły na poziomie nagłówków i ścieżek, wspiera HTTP i HTTPS.
Zapewnia zaawansowane zarządzanie ruchem, skierowane na dostarczanie aplikacji zbudowanych na nowoczesnych architekturach, w tym mikroserwisach i kontenerach. Kieruje ruch do docelowych zasobów w Amazon VPC, opierając się na zawartości żądania.
Dla wielu użytkowników, Application Load Balancer stał się pierwszym wyborem zamiast Classic Load Balancer, ponieważ TCP nie jest tak powszechny w porównaniu do HTTP.
Stwórzmy go również, w wyniku czego będziemy mieć już dwa balansery obciążenia:

Elementy Load Balance
Ogólne elementy Load Balance (zwykle wszystkie balanse obciążenia):
- Polityka logowania dostępu
— twoje dzienniki dostępu ELB. Aby skonfigurować ustawienia, możesz przejść do opisu i wybrać przycisk „Edytuj atrybuty”:

Następnie wskazujemy S3Bucket — obiektowe przechowywanie Amazon:

- Schemat
— balansujący wewnętrzny lub zewnętrzny. Sens polega na tym, czy twój LoadBalancer powinien otrzymywać zewnętrzne adresy, aby być dostępny z zewnątrz, czy może to być twój wewnętrzny balancer obciążenia;
- Grupy zabezpieczeń
— kontrola dostępu do balancera. To w zasadzie zapora wysokiego poziomu.


- Podsieci
— podsieci w obrębie twojej VPC (odpowiednio, i strefy dostępności). Podsieci są określane podczas tworzenia. Jeśli VPC jest ograniczone regionem, to Podsiec jest ograniczony do stref dostępności. Podczas tworzenia Load Balancer lepiej jest tworzyć go w co najmniej dwóch podsieciach (pomaga, jeśli wystąpią problemy w jednej strefie dostępności);
- Słuchacze
— twoje protokoły balancera. Jak już wspomniano wcześniej, dla Classic Load Balancer mogą to być HTTP, HTTPS, TCP i SSL, dla Network Load Balancer — TCP, UDP i TLS, dla Application Load Balancer — HTTP i HTTPS.
Przykład dla Classic Load Balancer:

Natomiast w Application Load Balancer widzimy nieco inny interfejs, a ogólnie inną logikę:

Elementy Load Balancer v2 (ALB i NLB)
Teraz bliżej przyjrzymy się balancerom 2. wersji Application Load Balancer i Network Load Balancer. Te balancery mają swoje charakterystyczne cechy. Na przykład pojawiła się koncepcja Target Groups — instancje (i funkcje). Dzięki temu komponentowi, mamy możliwość wskazania, na którą z Target Groups chcemy kierować ruch.


Mówiąc prosto, w Target Groups wskazujemy instancje, do których będzie przychodzić ruch. Jeśli w tym samym Classic Load Balancer po prostu podłączasz instancje do balancera, to w Application Load Balancer najpierw:
- tworzysz Load Balancer;
- tworzysz grupę Target;
- skierujesz do odpowiednich grup docelowych przez odpowiednie porty lub zasady Load Balancer;
- w grupach docelowych przypisujesz instancje.
Taka logika działania może wydawać się bardziej skomplikowana, ale w rzeczywistości jest bardziej wygodna.
Następny komponent — zasady Listener (zasady do routingu). To dotyczy już tylko Application Load Balancer. Jeśli w Network Load Balancer po prostu tworzysz Listener, który przesyła ruch do konkretnej grupy docelowej, to w Application Load Balancer wszystko .

Teraz powiedzmy kilka słów o kolejnym komponencie — Elastic IP (statyczne adresy dla NLB). Jeśli zasady dotyczące routingu zasad dla Listener dotyczyły tylko Application Load Balancer, to Elastic IP dotyczy tylko Network Load Balancer.
Stwórzmy Network Load Balancer:


I podczas tworzenia zobaczymy, że mamy możliwość wyboru Elastic IP:

Elastic IP zapewnia jeden adres IP, który można powiązać z różnymi instancjami EC2 w czasie. Jeśli instancja EC2 ma adres Elastic IP i zostanie zakończona lub zatrzymana, można natychmiast powiązać nową instancję EC2 z adresem Elastic IP. Przy tym twoja aktualna aplikacja nie przestanie działać, ponieważ aplikacje widzą ten sam adres IP, nawet jeśli rzeczywisty EC2 się zmienił.
Oto w temacie po co potrzebny jest Elastic IP. Zobacz, widzimy 3 adresy IP, ale nie zostaną one tutaj na zawsze:

Amazon zmienia je w czasie, może to robić co 60 sekund (ale w praktyce, oczywiście, rzadziej). Oznacza to, że adresy IP mogą się zmieniać. A w przypadku Network Load Balancer możesz właśnie powiązać adres IP i podać go w swoich zasadach, politykach itd.

Podsumowując
ELB zapewnia automatyczne rozdzielanie przychodzącego ruchu między wieloma celami (kontenery, instancje Amazon EC2, adresy IP i funkcje Lambda). ELB potrafi rozdzielać ruch przy zmieniającym się obciążeniu zarówno w obrębie jednej strefy dostępności, jak i między wieloma strefami dostępności. Użytkownik może wybierać spośród trzech typów load balancerów, zapewniających zarówno wysoką dostępność, jak i automatyczne skalowanie oraz niezłą ochronę. Wszystko to jest istotne dla zapewnienia odporności twoich aplikacji.
Główne zalety:
- wysoka dostępność. W umowie o usługi przewiduje się 99,99% dostępności dla równoważnika obciążenia. Na przykład, kilka stref dostępności gwarantuje, że ruch będzie obsługiwany tylko przez sprawne obiekty. Można równoważyć obciążenie w całym regionie, kierując ruch do sprawnych obiektów docelowych w różnych strefach dostępności;
- bezpieczeństwo. ELB działa z Amazon VPC, oferując różne możliwości zapewnienia bezpieczeństwa — zarówno zintegrowane zarządzanie certyfikatami, jak i uwierzytelnianie użytkowników oraz deszyfrowanie SSL/TLS. To wszystko zapewnia zdecentralizowane i elastyczne zarządzanie ustawieniami TLS;
- elastyczność. ELB może obsługiwać nagłe zmiany ruchu sieciowego. A głęboka integracja z Auto Scaling zapewnia aplikacji wystarczające zasoby, gdy obciążenie się zmienia, bez potrzeby interwencji ręcznej;
- elastyczność. Można używać adresów IP do kierowania zapytań do obiektów docelowych twoich aplikacji. Gwarantuje to elastyczność w wirtualizacji aplikacji docelowych, co umożliwia jednoczesne uruchamianie kilku aplikacji na jednym instancie. Ponieważ aplikacje mogą korzystać z jednego portu sieciowego i mają oddzielne grupy zabezpieczeń, ułatwia to interakcję między aplikacjami w architekturze opartej na mikrousługach;
- monitoring i audyt. Można monitorować aplikacje w czasie rzeczywistym, korzystając z funkcji Amazon CloudWatch. Chodzi o metryki, dzienniki, śledzenie zapytań. Mówiąc prosto, będziesz mógł wykrywać problemy i dość precyzyjnie określać wąskie gardła wydajności;
- hybrydowe równoważenie obciążenia. Możliwość równoważenia obciążenia między lokalnymi zasobami a AWS przy użyciu tego samego równoważnika upraszcza migrację lub rozszerzanie lokalnych aplikacji w chmurze. Ułatwia również obsługę awarii z użyciem chmury.
Jeśli chcesz uzyskać więcej informacji, oto kilka przydatnych linków z oficjalnej strony Amazon:
- .
Źródło: habr.com
