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

Cześć wszystkim! Już dziś zaczyna się kurs „AWS dla programistów”, 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.

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

Słuchając webinaru, 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ł Rishat Teregułow, 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żenie obciążenia za pomocą AWS ELB

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):

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

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ć:

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

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:

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

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”:

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

Następnie wskazujemy S3Bucket — obiektowe przechowywanie Amazon:

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

  • 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.

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

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

  • 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:

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

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

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

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.

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

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

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 jest ciekawsze i wygodniejsze.

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

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:

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

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

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

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

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 jeszcze jeden przypadek użycia w temacie po co potrzebny jest Elastic IP. Zobacz, widzimy 3 adresy IP, ale nie zostaną one tutaj na zawsze:

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

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.

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

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:

  1. Elastic Load Balancing.
  2. Możliwości Elastic Load Balancing.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster