Równoważenie obciążenia za pomocą AWS ELB

Cześć wszystkim! Kurs zaczyna się dzisiaj „AWS dla programistów”, w związku z którym zorganizowaliśmy odpowiednie seminarium internetowe poświęcone przeglądowi ELB. Przyjrzeliśmy się typom balanserów i stworzyliśmy kilka instancji EC2 z balanserem. Przestudiowaliśmy także inne przykłady użycia.

Równoważenie obciążenia za pomocą AWS ELB

Po wysłuchaniu webinaru, Będziesz:

  • zrozumieć, czym jest równoważenie obciążenia AWS;
  • znać rodzaje Elastic Load Balancer i jego komponenty;
  • wykorzystaj AWS ELB w swojej praktyce.

Po co w ogóle musisz to wiedzieć?

  • przydatne, jeśli planujesz przystąpić do egzaminów certyfikacyjnych AWS;
  • jest to prosty sposób na rozłożenie obciążenia pomiędzy serwerami;
  • Jest to prosty sposób na dodanie Lambdy do Twojej usługi (ALB).

Przeprowadził lekcję otwartą Riszat Teregulow, inżynier systemów w firmie marketingowej zajmującej się tworzeniem i wsparciem witryn internetowych.

Wprowadzenie

Czym jest Elastic Load Balancer można zobaczyć na poniższym schemacie, który pokazuje prosty przykład:

Równoważenie obciążenia za pomocą AWS ELB

Load Balancer akceptuje żądania i dystrybuuje je między instancjami. Mamy jedną oddzielną instancję, są funkcje Lambda i istnieje grupa AutoScaling (grupa serwerów).

Typy ELB AWS

1. Spójrzmy na główne typy:

Klasyczny moduł równoważenia obciążenia. Pierwszy moduł równoważenia obciążenia firmy AWS działa zarówno na warstwie 4, jak i warstwie 7 OSI, obsługując protokoły HTTP, HTTPS, TCP i SSL. Zapewnia podstawowe równoważenie obciążenia w wielu instancjach Amazon EC2 i działa zarówno na poziomie żądania, jak i połączenia. Otwórzmy to (zaznaczone na szaro):

Równoważenie obciążenia za pomocą AWS ELB

Ta wyważarka jest uważana za przestarzałą, dlatego zaleca się ją stosować tylko w niektórych przypadkach. Na przykład w przypadku aplikacji zbudowanych w sieci EC2-Classic. W zasadzie nikt nam nie zabrania go tworzyć:

Równoważenie obciążenia za pomocą AWS ELB

2. Równoważenie obciążenia sieciowego. Nadaje się do dużych obciążeń, działa w warstwie 4 OSI (może być używany w EKS i ECS), obsługiwane są protokoły TCP, UDP i TLS.

Network Load Balancer kieruje ruch do celów w Amazon VPC i jest w stanie przetwarzać miliony żądań na sekundę z bardzo niskimi opóźnieniami. Dodatkowo jest zoptymalizowany do obsługi wzorców ruchu przy nagłych i zmiennych obciążeniach.

3. Moduł równoważenia obciążenia aplikacji. Działa w warstwie 7, obsługuje Lambda, obsługuje reguły na poziomie nagłówka i ścieżki, obsługuje HTTP i HTTPS.
Zapewnia zaawansowane routing żądań skoncentrowany na dostarczaniu aplikacji zbudowanych na nowoczesnych architekturach, w tym mikrousługach i kontenerach. Kieruje ruch do celów w Amazon VPC na podstawie treści żądania.

Dla wielu użytkowników moduł równoważenia obciążenia aplikacji był pierwszym wyborem, który zastąpił klasyczny moduł równoważenia obciążenia, ponieważ protokół TCP nie jest tak powszechny jak protokół HTTP.

Stwórzmy go też, w efekcie czego będziemy już mieli dwa moduły równoważenia obciążenia:

Równoważenie obciążenia za pomocą AWS ELB

Komponenty równoważenia obciążenia

Wspólne komponenty równoważenia obciążenia (wspólne dla wszystkich balanserów):

  • Dostęp do zasad rejestrowania

— Twoje logi dostępu ELB. Aby dokonać ustawień, możesz przejść do opcji Opis i wybrać przycisk „Edytuj atrybuty”:

Równoważenie obciążenia za pomocą AWS ELB

Następnie określamy S3Bucket - magazyn obiektów Amazon:

Równoważenie obciążenia za pomocą AWS ELB

  • Schemat

— balanser wewnętrzny lub zewnętrzny. Chodzi o to, czy Twój LoadBalancer musi otrzymać adresy zewnętrzne, aby był dostępny z zewnątrz, czy też może to być Twój wewnętrzny moduł równoważenia obciążenia;

  • Grupy bezpieczeństwa

— kontrola dostępu do wyważarki. Zasadniczo jest to zapora sieciowa wysokiego poziomu.

Równoważenie obciążenia za pomocą AWS ELB

Równoważenie obciążenia za pomocą AWS ELB

  • Podsieci

— podsieci wewnątrz Twojej VPC (i odpowiednio strefy dostępności). Podsieci są określane podczas tworzenia. Jeśli VPC są ograniczone regionalnie, podsieci są ograniczone strefami dostępności. Tworząc Load Balancer lepiej jest utworzyć go w co najmniej dwóch podsieciach (pomaga w przypadku problemów z jedną Strefą Dostępności);

  • Słuchacze

— protokoły Twojego balansera. Jak wspomniano wcześniej, w przypadku Classic Load Balancer może to być HTTP, HTTPS, TCP i SSL, w przypadku Network Load Balancer - TCP, UDP i TLS, w przypadku Application Load Balancer - HTTP i HTTPS.

Przykład dla klasycznego modułu równoważenia obciążenia:

Równoważenie obciążenia za pomocą AWS ELB

Ale w Application Load Balancer widzimy nieco inny interfejs i ogólnie inną logikę:

Równoważenie obciążenia za pomocą AWS ELB

Komponenty Load Balancer v2 (ALB i NLB)

Przyjrzyjmy się teraz bliżej modułom równoważącym w wersji 2: Application Load Balancer i Network Load Balancer. Te wyważarki mają swoje własne cechy składowe. Pojawiło się na przykład takie pojęcie jak Grupy docelowe – instancje (i funkcje). Dzięki temu komponentowi mamy możliwość określenia, do której z Grup Docelowych chcemy kierować ruch.

Równoważenie obciążenia za pomocą AWS ELB

Równoważenie obciążenia za pomocą AWS ELB

Mówiąc najprościej, w Grupach docelowych określamy przypadki, w których będzie pochodził ruch. Jeżeli w tym samym Classic Load Balancerze po prostu od razu podłączysz intensywność do balansera, to w Aplikacji Load Balancer najpierw:

  • utwórz moduł równoważenia obciążenia;
  • utwórz grupę docelową;
  • kierować poprzez wymagane porty lub reguły Load Balancera do wymaganych Grup Docelowych;
  • w Grupach docelowych przypisujesz instancje.

Ta logika działania może wydawać się bardziej skomplikowana, ale w rzeczywistości jest wygodniejsza.

Kolejnym elementem jest Zasady słuchania (zasady routingu). Dotyczy to tylko modułu równoważenia obciążenia aplikacji. Jeśli w Network Load Balancer po prostu utworzysz Listener, a on wyśle ​​ruch do konkretnej grupy docelowej, to w Application Load Balancer wszystko więcej zabawy i wygody.

Równoważenie obciążenia za pomocą AWS ELB

A teraz powiedzmy kilka słów o kolejnym elemencie – Elastyczny adres IP (adresy statyczne dla NLB). Jeśli reguły routingu reguł odbiornika wpływają tylko na moduł równoważenia obciążenia aplikacji, wówczas elastyczny adres IP ma wpływ tylko na moduł równoważenia obciążenia sieciowego.

Stwórzmy moduł równoważenia obciążenia sieciowego:

Równoważenie obciążenia za pomocą AWS ELB

Równoważenie obciążenia za pomocą AWS ELB

I właśnie podczas procesu tworzenia zobaczymy, że mamy możliwość wyboru Elastic IP:

Równoważenie obciążenia za pomocą AWS ELB

Elastic IP zapewnia pojedynczy adres IP, który z biegiem czasu może być powiązany z różnymi instancjami EC2. Jeśli instancja EC2 ma elastyczny adres IP i instancja ta zostanie zakończona lub zatrzymana, możesz natychmiast powiązać nową instancję EC2 z elastycznym adresem IP. Jednak Twoja bieżąca aplikacja nie przestanie działać, ponieważ aplikacje nadal widzą ten sam adres IP, nawet jeśli zmienił się prawdziwy EC2.

tutaj jest kolejny przypadek użycia na temat tego, dlaczego potrzebny jest elastyczny adres IP. Słuchaj, widzimy 3 adresy IP, ale nie zostaną tu na zawsze:

Równoważenie obciążenia za pomocą AWS ELB

Amazon zmienia je z biegiem czasu, może 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 po prostu powiązać adres IP i wskazać go w swoich regułach, politykach itp.

Równoważenie obciążenia za pomocą AWS ELB

Wyciągnij wnioski

ELB zapewnia automatyczną dystrybucję ruchu przychodzącego do wielu celów (kontenery, instancje Amazon EC2, adresy IP i funkcje Lambda). ELB jest w stanie dystrybuować ruch o zmiennym obciążeniu zarówno w obrębie jednej Strefy Dostępności, jak i pomiędzy wieloma Strefami Dostępności. Użytkownik może wybierać spośród trzech typów balanserów, które zapewniają wysoką dostępność, autoskalowanie i dobrą ochronę. Wszystko to jest ważne, aby zapewnić odporność aplikacji na awarie.

Główne zalety:

  • duża dostępność. Umowa serwisowa zakłada dostępność modułu równoważenia obciążenia na poziomie 99,99%. Na przykład wiele stref dostępności zapewnia, że ​​ruch jest przetwarzany tylko przez obiekty w dobrej kondycji. W rzeczywistości możesz zrównoważyć obciążenie w całym regionie, przekierowując ruch do zdrowych celów w różnych strefach dostępności;
  • bezpieczeństwo. ELB współpracuje z Amazon VPC, zapewniając różne możliwości bezpieczeństwa - zintegrowane zarządzanie certyfikatami, uwierzytelnianie użytkowników i deszyfrowanie SSL/TLS. Wszystko razem zapewnia scentralizowane i elastyczne zarządzanie ustawieniami TLS;
  • elastyczność. ELB radzi sobie z nagłymi zmianami w ruchu sieciowym. Głęboka integracja z funkcją automatycznego skalowania zapewnia aplikacji wystarczające zasoby w przypadku zmiany obciążenia, bez konieczności ręcznej interwencji;
  • elastyczność. Adresów IP można używać do kierowania żądań do obiektów docelowych aplikacji. Zapewnia to elastyczność podczas wirtualizacji aplikacji docelowych, dając w ten sposób możliwość hostowania wielu aplikacji w jednej instancji. Ponieważ aplikacje mogą korzystać z jednego portu sieciowego i mieć oddzielne grupy zabezpieczeń, komunikacja między aplikacjami jest uproszczona, gdy mamy, powiedzmy, architekturę opartą na mikrousługach;
  • monitorowanie i audyt. Możesz monitorować aplikacje w czasie rzeczywistym, korzystając z funkcji Amazon CloudWatch. Mówimy o metrykach, logach, śledzeniu żądań. Krótko mówiąc, będziesz w stanie dość dokładnie zidentyfikować problemy i wskazać wąskie gardła wydajności;
  • hybrydowe równoważenie obciążenia. Możliwość równoważenia obciążenia pomiędzy zasobami lokalnymi i AWS przy użyciu tego samego modułu równoważenia obciążenia ułatwia migrację lub rozszerzanie aplikacji lokalnych do chmury. Dzięki chmurze uproszczona jest także obsługa awarii.

Jeśli interesują Cię szczegóły, oto kilka przydatnych linków z oficjalnej strony Amazon:

  1. Elastyczne równoważenie obciążenia.
  2. Możliwości elastycznego równoważenia obciążenia.

Źródło: www.habr.com

Dodaj komentarz