Elastic Load Balancer per più webapp


13

Ho delle Nwebapp. Ogni webapp è servita da un nome host diverso nel mio dominio e distribuita in 2 istanze in esecuzione in AWS. In altre parole, ho 2Nistanze, divise in coppie che eseguono Nwebapp distinte.

Vorrei impostare un singolo bilanciamento del carico elastico AWS che eseguirà il proxy di una richiesta in una delle due istanze che lo servono in base all'intestazione Host. È possibile utilizzare un singolo ELB o avrò bisogno di distribuire NELB, uno per ogni coppia di istanze?


Risposte:


19

Un singolo ELB indirizza il traffico esattamente a una serie di istanze e distribuisce il traffico in entrata a tutte le istanze "dietro". Non indirizza selettivamente il traffico in base a un'analisi di livello 7 del traffico, come l' Host:intestazione.

È necessario un ELB per ogni set di istanze. Come lo descrivi, questo è un ELB per ogni webapp.

Se il tuo scopo principale per eseguire ELB è scaricare SSL utilizzando un certificato jolly (ho un sistema progettato in questo modo, con dozzine di app che vivono su molti-differenti-dominis.my-wildcard-cert-domain.com), quindi le istanze "dietro" l'ELB potrebbe essere in esecuzione un proxy inverso come HAProxy (o diverse altre alternative, come Varnish) che può prendere decisioni di routing di livello 7 e quindi inoltrare il traffico al sottoinsieme appropriato di macchine dietro di loro, che consente anche più sofisticati bilanciamento del carico e ha il vantaggio di fornire statistiche e contatori di traffico, aggregati e separati.

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

Le istanze intermedie ^^^^ possono valutare le Host:intestazioni (tra le altre cose) e persino acquisire il valore del cookie di sessione nei loro registri per l'analisi.

Questa configurazione mi consente anche di eseguire più app su sottoinsiemi di istanze sovrapposte, ove appropriato, e fare molte altre cose che ELB da sola non supporta direttamente. Restituisce anche una pagina "503" personalizzata nel caso in cui un'applicazione venga sovraccaricata o altrimenti non disponibile, cosa che ELB non esegue da sola. Ho rappresentato 2 server proxy qui, per nessun motivo particolare oltre alla tua menzione del numero 2 nella domanda. La mia configurazione in realtà ne ha 3, una per ogni zona di disponibilità nella regione in cui questa è distribuita.


3
Nell'agosto 2016, Amazon ha lanciato AWS Application Load Balancer che consente il routing a diversi gruppi target in base alle intestazioni HTTP.
Jens Bannmann,

2
@JensBannmann è vero. Quando lo hanno rilasciato, le uniche regole di routing supportate erano basate sul percorso. Nel 2017, hanno aggiunto la possibilità di instradare in base all'intestazione Host:. Questa risposta era corretta quando l'ho scritta nel 2014, ma sembra che sia il momento di un aggiornamento. Grazie per avermelo riportato alla mia attenzione.
Michael - sqlbot,

3

Ad agosto 2016, Amazon ELB offre due diversi tipi di bilanciatori del carico:

  • Classic Load Balancer instrada tutto il traffico verso un set di istanze senza considerare il contenuto del protocollo dell'applicazione. In precedenza, questo era l'unico tipo ELB disponibile.
  • Il bilanciamento del carico delle applicazioni può indirizzare il traffico verso diversi gruppi target in base a regole configurabili basate su percorsi URL. Il post sul blog Nuovo: AWS Application Load Balancer menziona le applicazioni costituite da diversi microservizi come caso d'uso principale e fornisce istruzioni dettagliate per la configurazione.

Per il tuo caso d'uso, Application Load Balancer sembra l'ideale. È limitato a 10 regole, tuttavia, quindi funzionerà facilmente solo se il tuo Nnon è più grande di 10.


0

Nel tuo elenco di istanze ec2, vedi due istanze, giusto? Ma in ogni caso hai molte webapps? Usi l'host virtuale per distribuire ognuno?

Hai bisogno di un solo ELB per dividere la carica sui tuoi host. Esempio:

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

Penso che sia meglio che tu mi dia più del tuo scenario e forse posso aiutarti.

Saluti.

AGGIORNARE

Se si hanno webapp diverse sulle istanze EC2, è necessario disporre di due Elastic Load Balancer (ELB). Ognuno per un paio di istanze. Totalmente, quattro casi


Nel mio elenco di istanze vedo 2Napp. Esistono N webapp, due istanze per ognuna. Modificherò la domanda per chiarire questo.
martedì

Risposta aggiornata.
Junior Rocha,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.