Elastyczny moduł równoważenia obciążenia dla wielu aplikacji internetowych


13

Mam Naplikacje internetowe. Każda aplikacja jest obsługiwana przez inną nazwę hosta w mojej domenie i wdrażana w 2 instancjach działających w AWS. Innymi słowy, mam 2Ninstancje podzielone na pary, które działają w Nróżnych aplikacjach internetowych.

Chciałbym skonfigurować pojedynczy moduł równoważenia obciążenia AWS, który będzie proxy żądania do jednego z dwóch wystąpień, które obsługują go na podstawie Hostnagłówka. Czy jest to możliwe przy użyciu jednego ELB, czy będę musiał wdrożyć NELB, po jednym dla każdej pary instancji?


Odpowiedzi:


19

Pojedynczy ELB kieruje ruch do dokładnie jednego zestawu instancji i dystrybuuje ruch przychodzący do wszystkich instancji „za nim”. Nie kieruje selektywnie ruchu na podstawie analizy ruchu w warstwie 7, takiej jak Host:nagłówek.

Potrzebujesz jednego ELB dla każdego zestawu instancji. Jak to opisujesz, jest to jeden ELB dla każdej aplikacji internetowej.

Jeśli Twoim głównym celem uruchamiania ELB jest odciążanie SSL przy użyciu certyfikatu wieloznacznego (mam jeden system zaprojektowany w ten sposób, z dziesiątkami aplikacji żyjących na wielu-domen-domen.my-wildcard-cert-domain.com), to instancje „za” ELB może uruchamiać zwrotny serwer proxy, taki jak HAProxy (lub kilka innych alternatyw, takich jak Varnish), który może podejmować decyzje dotyczące routingu w warstwie 7, a następnie przekazywać ruch do odpowiedniego podzbioru maszyn za nimi, co pozwala również na bardziej wyrafinowane równoważenie obciążenia i ma tę zaletę, że zapewnia statystyki i liczniki ruchu, agreguje i rozdziela.

       /-- HAProxy \  /----- instances hosting app #1  
ELB ---|            >> ----- instances hosting app #2 
       \-- HAProxy /  \----- instances hosting app #n 

Pośrednie instancje ^^^^ mogą oceniać Host:nagłówki (między innymi), a nawet przechwytywać wartość pliku cookie sesji w swoich dziennikach do analizy.

Ta konfiguracja pozwala mi również uruchamiać wiele aplikacji na nakładających się podzbiorach instancji, tam gdzie jest to właściwe, i wykonywać wiele innych rzeczy, których ELB nie obsługuje bezpośrednio. Zwraca również niestandardową stronę „503” w przypadku, gdy aplikacja zostanie przeciążona lub w inny sposób stanie się niedostępna, czego ELB nie robi samodzielnie. Zilustrowałem tutaj 2 serwery proxy, bez konkretnego powodu oprócz Twojej wzmianki o numerze 2 w pytaniu. Moja konfiguracja ma 3, po jednej dla każdej strefy dostępności w regionie, w którym jest wdrożona.


3
W sierpniu 2016 r. Amazon uruchomił moduł równoważenia obciążenia aplikacji AWS, który umożliwia routing do różnych grup docelowych na podstawie nagłówków HTTP.
Jens Bannmann

2
@JensBannmann to prawda. Kiedy go wypuścili, jedyne obsługiwane przez niego reguły routingu były oparte na ścieżce. W 2017 roku dodali możliwość trasowania na podstawie Host:nagłówka. Ta odpowiedź była poprawna, kiedy napisałem ją w 2014 roku, ale wygląda na to, że nadszedł czas na aktualizację. Dziękuję za zwrócenie mojej uwagi.
Michael - sqlbot

3

Od sierpnia 2016 r. Amazon ELB oferuje dwa typy równoważenia obciążenia:

  • Klasyczny moduł równoważenia obciążenia kieruje cały ruch do jednego zestawu instancji bez uwzględnienia zawartości protokołu aplikacji. Wcześniej był to jedyny dostępny typ ELB.
  • Moduł równoważenia obciążenia aplikacji może kierować ruch do różnych grup docelowych zgodnie z konfigurowalnymi regułami opartymi na ścieżkach adresów URL. Wpis na blogu Nowy - Moduł równoważenia obciążenia aplikacji AWS wymienia aplikacje składające się z kilku mikrousług jako główny przypadek użycia i podaje szczegółowe instrukcje konfiguracji.

W twoim przypadku zastosowanie Application Load Balancer wydaje się idealne. Jest jednak ograniczony do 10 zasad, więc będzie działał łatwo tylko, jeśli Twój Nnie jest większy niż 10.


0

Na twojej liście instancji ec2 widzisz dwie instancje, prawda? Ale w każdym przypadku masz wiele aplikacji internetowych? Używasz wirtualnego hosta do wdrożenia każdego z nich?

Potrzebujesz tylko jednego ELB, aby podzielić opłatę na swoich hostach. Przykład:

External request > ELB (based on CNAME pointer)  > EC2 Instance. 

Myślę, że to lepiej, daj mi więcej swojego scenariusza i może mogę ci pomóc.

Pozdrowienia.

AKTUALIZACJA

Jeśli masz różne aplikacje internetowe w instancjach EC2, musisz mieć dwa moduły równoważenia obciążenia elastycznego (ELB). Każdy dla pary instancji. Całkowicie cztery przypadki


Na mojej liście instancji widzę 2Naplikacje. Istnieje N aplikacji internetowych, po dwa wystąpienia dla każdego. Przeredaguję pytanie, aby to wyjaśnić.
thesamet

Zaktualizowana odpowiedź.
Junior Rocha
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.