Configurazione di un sistema Application Load Balancer condiviso - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di un sistema Application Load Balancer condiviso

Quando si abiliti il bilanciamento del carico, l'ambiente AWS Elastic Beanstalk viene dotato di un load balancer Elastic Load Balancer per la distribuzione del traffico tra le istanze dell'ambiente. Elastic Load Balancing supporta diversi tipi di sistema di bilanciamento del carico. Per ulteriori informazioni, consulta la Guida per l'utente di Elastic Load Balancing. Elastic Beanstalk può creare automaticamente un sistema di bilanciamento del carico oppure puoi specificare un sistema di bilanciamento del carico condiviso che hai creato.

In questo argomento viene descritta la configurazione di un sistema Application Load Balancer condiviso che crei e associ all'ambiente. Consulta anche Configurazione di un Application Load Balancer. Per informazioni sulla configurazione di tutti i tipi di sistema di bilanciamento del carico supportati da Elastic Beanstalk, consulta Sistema di bilanciamento del carico per l'ambiente Elastic Beanstalk.

Nota

È possibile scegliere il tipo di sistema di bilanciamento del carico che l'ambiente utilizza solo durante la creazione dell'ambiente. Puoi modificare le impostazioni per gestire il comportamento del sistema di bilanciamento del carico in esecuzione nell'ambiente, ma non puoi modificarne il tipo. Inoltre, non è possibile passare da un sistema di bilanciamento del carico dedicato a uno condiviso o viceversa.

Introduzione

Un sistema di bilanciamento del carico condiviso viene creato e gestito personalmente utilizzando il servizio Amazon Elastic Compute Cloud (Amazon EC2) e quindi utilizzato in più ambienti Elastic Beanstalk.

Quando crei un ambiente di dimensionamento con bilanciamento del carico e scegli di utilizzare un sistema Application Load Balancer, per impostazione predefinita Elastic Beanstalk crea un sistema di bilanciamento del carico dedicato all'ambiente. Per informazioni su cosa è un sistema Application Load Balancer e come funziona in un ambiente Elastic Beanstalk, consulta l'introduzione alla configurazione di un sistema Application Load Balancer per Elastic Beanstalk.

In alcune situazioni si potrebbe voler risparmiare il costo di avere più sistemi di bilanciamento del carico dedicati. Ciò può essere utile quando si dispone di più ambienti, ad esempio se l'applicazione è una suite di microservizi anziché un servizio monolitico. In questi casi è possibile scegliere di utilizzare un sistema di bilanciamento del carico condiviso.

Per utilizzare un sistema di bilanciamento del carico condiviso, prima lo crei in Amazon EC2 quindi aggiungi uno o più listener. Durante la creazione di un ambiente Elastic Beanstalk è quindi necessario fornire il sistema di bilanciamento del carico e scegliere una porta del listener. Elastic Beanstalk associa il listener al processo predefinito nell'ambiente. È possibile aggiungere regole di listener personalizzate per instradare il traffico da intestazioni e percorsi host specifici ad altri processi di ambiente.

Elastic Beanstalk aggiunge un tag al sistema di bilanciamento del carico condiviso. Il nome del tag è elasticbeanstalk:shared-elb-environment-count, e il suo valore è il numero di ambienti che condividono questo sistema di bilanciamento del carico.

L'utilizzo di un sistema di bilanciamento del carico condiviso è diverso dall'utilizzo di uno dedicato in vari modi.

Regarding (Motivo) Application Load Balancer dedicato Application Load Balancer condiviso

Gestione

Elastic Beanstalk crea e gestisce il sistema di bilanciamento del carico, i listener, le regole del listener e i processi (gruppi di destinazione). Elastic Beanstalk inoltre rimuove questi elementi quando termini l'ambiente. Elastic Beanstalk può impostare l'acquisizione del log di accesso del sistema di bilanciamento del carico, se scegli questa opzione.

Puoi creare e gestire il sistema di bilanciamento del carico e i listener al di fuori di Elastic Beanstalk. Elastic Beanstalk crea e gestisce una regola predefinita e un processo predefinito e tu aggiungi le regole e i processi. Elastic Beanstalk rimuove le regole del listener e i processi aggiunti durante la creazione dell'ambiente.

Regole dei listener

Elastic Beanstalk crea una regola predefinita per ogni listener per instradare tutto il traffico al processo predefinito del listener.

Elastic Beanstalk associa una regola predefinita solo a un listener di porta 80, se esistente. Se scegli una porta del listener predefinita diversa, devi associare la regola predefinita alla porta (la console Elastic Beanstalk e l'EB CLI consentono di eseguire questa operazione).

Per risolvere i conflitti di condizione delle regole del listener in ambienti che condividono il sistema di bilanciamento del carico, Elastic Beanstalk aggiunge il CNAME dell'ambiente alla regola del listener come condizione di intestazione host.

Elastic Beanstalk considera le impostazioni di priorità delle regole relative tra gli ambienti che condividono il sistema di bilanciamento del carico e le associa alle priorità assolute durante la creazione.

Gruppi di sicurezza

Elastic Beanstalk crea un gruppo di sicurezza predefinito e lo collega al sistema di bilanciamento del carico.

È possibile configurare uno o più gruppi di sicurezza da utilizzare per il sistema di bilanciamento del carico. In caso contrario, Elastic Beanstalk verifica se un gruppo di sicurezza esistente e gestito è già collegato al sistema di bilanciamento del carico. In caso contrario, Elastic Beanstalk crea un gruppo di sicurezza e lo collega al sistema di bilanciamento del carico. Elastic Beanstalk elimina questo gruppo di sicurezza quando termina l'ultimo ambiente che condivide il sistema di bilanciamento del carico.

Aggiornamenti

Puoi aggiornare il sistema Application Load Balancer dopo la creazione dell'ambiente. È possibile modificare i listener, le regole del listener e i processi. È possibile configurare l'acquisizione del log di accesso del sistema di bilanciamento del carico.

Non è possibile utilizzare Elastic Beanstalk per configurare l'acquisizione del log di accesso in Application Load Balancer e non è possibile aggiornare i listener e le regole del listener dopo la creazione dell'ambiente. È possibile aggiornare solo i processi (gruppi di destinazione). Per configurare l'acquisizione del log di accesso e per aggiornare i listener e le regole del listener, utilizza Amazon EC2.

Configurazione di un sistema Application Load Balancer condiviso utilizzando la console Elastic Beanstalk

Puoi utilizzare la console Elastic Beanstalk per configurare un sistema Application Load Balancer condiviso durante la creazione dell'ambiente. È possibile selezionare uno dei sistemi di bilanciamento del carico condivisibili dell'account da utilizzare nell'ambiente, selezionare la porta del listener predefinita e configurare processi aggiuntivi e regole del listener.

Non è possibile modificare la configurazione del sistema Application Load Balancer condivisa nella console Application Load Balancer dopo la creazione dell'ambiente. Per configurare i listener, le regole del listener, i processi (gruppi di destinazione) e l'acquisizione del log di accesso utilizza Amazon EC2.

Per configurare un sistema Application Load Balancer nella console Elastic Beanstalk durante la creazione dell'ambiente
  1. Apri la console Elastic Beanstalk e nell'elenco Regions (Regioni) seleziona la tua Regione AWS.

  2. Nel riquadro di navigazione, selezionare Compute environments (Ambienti di calcolo).

  3. Scegliere Create a new environment (Crea un nuovo ambiente) per iniziare a creare l'ambiente.

  4. Nella pagina principale della procedura guidata, prima di scegliere Create environment (Crea ambiente), scegli Configure more options (Configura più opzioni).

  5. Scegli la configurazione preimpostata High availability (Alta disponibilità).

    In alternativa, nella categoria di configurazione Capacity (Capacità), configura un tipo di ambiente Load balanced (Con bilanciamento del carico). Per informazioni dettagliate, consulta Capacità.

  6. Nella categoria di configurazione Load balancer (Sistema di bilanciamento del carico), scegliere Edit (Modifica).

  7. Seleziona l'opzione Application Load Balancer (Sistema di bilanciamento del carico applicazioni) se non è già selezionata, quindi seleziona l'opzione Shared (Condiviso).

    Pagina di configurazione di Elastic Load Balancing: scelta del tipo di sistema di bilanciamento del carico
  8. Apporta alla configurazione del sistema Application Load Balancer condiviso le modifiche richieste dall'ambiente.

  9. Scegli Save (Salva) e apporta eventuali altre modifiche di configurazione richieste dal tuo ambiente.

  10. Seleziona Create environment (Crea ambiente).

Impostazioni di Application Load Balancer condiviso

Application Load Balancer condiviso

Questa sezione ti consente di scegliere un sistema Application Load Balancer condiviso per l'ambiente e configurare il routing del traffico predefinito.

Prima di configurare un sistema Application Load Balancer condiviso, utilizza Amazon EC2 per definire almeno un sistema Application Load Balancer da condividere, con almeno un listener, nel tuo account. Se non l'hai già fatto, puoi scegliere Manage load balancers (Gestisci sistemi di bilanciamento del carico). Elastic Beanstalk apre la console Amazon EC2 in una nuova scheda del browser.

Al termine della configurazione dei sistemi di bilanciamento del carico condivisi all'esterno di Elastic Beanstalk, configura le seguenti impostazioni in questa sezione della console:

  • Load balancer ARN (ARN del sistema di bilanciamento del carico): il sistema di bilanciamento del carico condiviso da utilizzare in questo ambiente. Seleziona da un elenco di sistemi di bilanciamento del carico o inserisci un Amazon Resource Name (ARN) del sistema di bilanciamento del carico.

  • Default listener port (Porta predefinita del listener: la porta del listener su cui è in ascolto il sistema di bilanciamento del carico condiviso. Selezionare da un elenco di porte listener esistenti. Il traffico proveniente da questo listener con CNAME dell'ambiente nell'intestazione host viene instradato a un processo predefinito in questo ambiente.

Configurazione del sistema Application Load Balancer: scelta del sistema di bilanciamento del carico condiviso

Processes

Utilizza questo elenco per specificare i processi per il tuo sistema di bilanciamento del carico. Un processo è la destinazione di instradamento del traffico da parte dei listener. Inizialmente, l'elenco mostra il processo predefinito, che riceve il traffico dal listener predefinito.

Configurazione di Application Load Balancer: elenco dei processi
Per configurare un processo esistente
  1. Seleziona la casella di controllo accanto alla voce della tabella e successivamente Actions (Operazioni) e Edit (Modifica).

  2. Utilizzare la finestra dialogo Environment process (Processo ambiente) per modificare le impostazioni, quindi scegliere Save (Salva).

Per aggiungere un processo
  1. Scegliere Add process (Aggiungi processo).

  2. Nella finestra di dialogo Environment process (Processo ambiente) configurare le impostazioni desiderate e quindi scegliere Add (Aggiungi).

Impostazioni della finestra di dialogo del processo di ambiente di Application Load Balancer

Definizione

Utilizza queste impostazioni per definire il processo: Name (Nome), Port (Porta) e Protocol (Protocollo) attraverso cui riceverà le richieste.

Impostazioni del processo di Application Load Balancer per nome, porta e protocollo

Controllo dello stato

Utilizza le seguenti impostazioni per configurare controlli di stato del processo:

  • HTTP code (Codice HTTP): codice di stato HTTP che indica un processo integro.

  • Path (Percorso): percorso della richiesta di controllo dello stato del processo.

  • Timeout: il periodo di attesa espresso in secondi di una risposta durante un controllo dello stato.

  • Interval (Intervallo): il periodo di tempo espresso in secondi che decorre tra i controlli dello stato di una singola istanza. L'intervallo deve essere maggiore del timeout.

  • Unhealthy threshold (Soglia di mancata integrità), Healthy threshold (Soglia di integrità): il numero di controlli dello stato consecutivi che non devono o devono essere superati rispettivamente prima che Elastic Load Balancing modifichi lo stato di integrità di un'istanza.

  • Deregistration delay (Ritardo annullamento della registrazione): il periodo di tempo espresso in secondi necessario al completamento delle richieste prima che venga annullata la registrazione di un'istanza.

Impostazioni del processo di Application Load Balancer per un controllo dello stato
Nota

Il controllo dello stato di Elastic Load Balancing non influisce sul comportamento del controllo dello stato del gruppo Auto Scaling di un ambiente. Le istanze che non passano il controllo dello stato di Elastic Load Balancing non vengono sostituite automaticamente da Amazon EC2 Auto Scaling a meno che non configuri manualmente Amazon EC2 Auto Scaling per eseguire questa operazione. Per informazioni dettagliate, consulta Impostazione del controllo dello stato di Auto Scaling.

Per ulteriori informazioni sui controlli dello stato e su come influiscono sullo stato di integrità generale dell'ambiente, consulta Report dello stato di base.

Sessioni

Seleziona o deseleziona la casella Stickiness policy enabled (Policy di adesione abilitata) per attivare o disattivare le sticky session. Usa Cookie duration (Durata del cookie) per configurare la durata di una sticky session, fino a 604800 secondi.

Impostazioni del processo di Application Load Balancer per la persistenza della sessione

Regolamento

Utilizza questo elenco per specificare le regole dei listener personalizzate per il sistema di bilanciamento del carico. Una regola associa le richieste ricevute dal listener relative a un determinato modello di percorso a un processo di destinazione. Ogni listener può avere più regole, instradando le richieste su percorsi diversi a processi diversi su istanze dei diversi ambienti che condividono il listener.

Le regole hanno priorità numeriche che stabiliscono la precedenza in cui vengono applicate alle richieste in entrata. Elastic Beanstalk aggiunge una regola predefinita che instrada tutto il traffico del listener predefinito al processo predefinito del nuovo ambiente. La precedenza della regola predefinita è la più bassa: viene applicata nel caso in cui non ci siano altre regole per lo stesso listener che corrispondono alla richiesta in entrata. Inizialmente, se non sono state aggiunte regole personalizzate, l'elenco è vuoto. La regola predefinita non viene visualizzata.

Configurazione di Application Load Balancer: elenco delle regole

Puoi modificare le impostazioni di una regola esistente o aggiungere una nuova regola. Per iniziare a modificare una regola dell'elenco o per aggiungere una regola, utilizza la stessa procedura indicata per l'elenco dei processi. Viene visualizzata la finestra di dialogo Listener rule (Regola listener), con le impostazioni seguenti:

  • Name (Nome): nome della regola.

  • Listener port (Porta listener): porta del listener a cui si applica la regola.

  • Priority (Priorità): priorità della regola. Un numero di priorità inferiore ha la precedenza. Le priorità delle regole del listener devono essere uniche. Elastic Beanstalk tratta le priorità delle regole come relative tra gli ambienti di condivisione e le mappa alle priorità assolute durante la creazione.

  • Match conditions (Condizioni di corrispondenza): elenco delle condizioni dell'URL della richiesta a cui si applica la regola. Esistono due tipi di condizioni: HostHeader (la parte del dominio dell'URL) e PathPattern (la parte del percorso dell'URL). Una condizione è riservata al sottodominio di ambiente ed è possibile aggiungere fino a quattro condizioni. Ogni valore di condizione ha una lunghezza massima di 128 caratteri e può includere caratteri jolly.

  • Process (Processo): processo al quale il sistema di bilanciamento del carico instrada le richieste che soddisfano la regola.

Configurazione di Application Load Balancer: elenco delle regole

Esempio: utilizzare un sistema Application Load Balancer condiviso per un'applicazione protetta basata su microservizi

In questo esempio l'applicazione è costituita da diversi microservizi, ognuno implementato come un ambiente Elastic Beanstalk. Inoltre, è necessaria la crittografia del traffico end-to-end. Dimostreremo uno degli ambienti di micro-servizi, che ha un processo principale per le richieste degli utenti e un processo separato per la gestione delle richieste amministrative.

Per soddisfare questi requisiti utilizza Amazon EC2 per creare un sistema Application Load Balancer che condividerai tra i tuoi microservizi. Aggiungere un listener sicuro sulla porta 443 e il protocollo HTTPS. Quindi aggiungi più certificati SSL al listener: uno per dominio dei microservizi. Per informazioni dettagliate sulla creazione di Application Load Balancer e del listener protetto, consulta Creazione di un sistema Application Load Balancer e Creazione di un listener HTTPS per il sistema Application Load Balancer nella Guida per l'utente di Application Load Balancer.

In Elastic Beanstalk configura ogni ambiente di microservizi per utilizzare il sistema Application Load Balancer condiviso e impostare la porta del listener predefinita su 443. Nel caso del particolare ambiente che stiamo dimostrando qui, indicare che il processo predefinito ascolta la porta 443 su HTTPS e aggiungere un processo e una regola di listener per il traffico di amministrazione su un percorso diverso.

Configurazione del sistema di bilanciamento del carico condiviso per questo esempio
  1. Nella sezione Shared Application Load Balancer (Application Load Balancer condiviso) seleziona il sistema di bilanciamento del carico e quindi seleziona 443 per Default listener port (Porta del listener predefinita). La porta del listener dovrebbe essere già selezionata se è l'unico listener che dispone del sistema di bilanciamento del carico.

    Configurazione di Application Load Balancer: aggiunta di un listener protetto
  2. Configura il processo predefinito per HTTPS. Seleziona il processo predefinito, quindi in Actions (Operazioni), scegli Edit (Modifica). Per Port (Porta), immettere 443. In Protocollo, seleziona HTTPS.

    Esempio di configurazione di Application Load Balancer: configurazione del processo predefinito per HTTPS
  3. Aggiungi un processo admin. In Name (Nome), inserire admin. Per Port (Porta), immettere 443. In Protocollo, seleziona HTTPS. In Health check (Controllo dello stato), per Path (Percorso), digita /admin.

    Esempio di configurazione di Application Load Balancer: aggiunta del processo di amministrazione
  4. Aggiungi una regola per il traffico amministrativo. In Name (Nome), inserire admin. In Listener port (Porta listener), immettere 443. Per Match conditions (Condizioni di corrispondenza), aggiungere PathPattern con il valore /admin/*. Per Processo, selezionare admin.

    Esempio di configurazione di Application Load Balancer: aggiunta della regola di amministrazione

Configurazione di un sistema Application Load Balancer condiviso utilizzando l'interfaccia a riga di comando EB

Quando esegui eb create, l'interfaccia a riga di comando EB ti chiede di scegliere un tipo di sistema di bilanciamento del carico. Se scegli application (impostazione predefinita) e se l'account dispone di almeno un sistema Application Load Balancer condivisibile, l'interfaccia a riga di comando EB chiede anche se vuoi utilizzare un sistema Application Load Balancer condiviso. Se si risponde y, viene richiesto anche di selezionare il sistema di bilanciamento del carico e la porta predefinita.

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 2): Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y Select a shared load balancer 1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e 2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 (default is 1): 2 Select a listener port for your shared load balancer 1) 80 2) 100 3) 443 (default is 1): 3

È inoltre possibile specificare un sistema di bilanciamento del carico condiviso utilizzando le opzioni dei comandi.

$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443

Spazi dei nomi di Application Load Balancer condiviso

Le impostazioni relative ai sistemi Application Load Balancer condivisi sono disponibili nei seguenti spazi dei nomi:

  • aws:elasticbeanstalk:environment: scegli il tipo di sistema di bilanciamento del carico per l'ambiente e indica a Elastic Beanstalk che verrà utilizzato un sistema di bilanciamento del carico condiviso.

    Non è possibile impostare queste due opzioni nei file di configurazione (.Ebextensions).

  • aws:elbv2:loadbalancer: configura l'ARN del sistema Application Load Balancer condiviso e i gruppi di sicurezza.

  • aws:elbv2:listener: associa i listener del sistema Application Load Balancer condiviso ai processi di ambiente elencando le regole del listener.

  • aws:elbv2:listenerrule: configura le regole del listener che instradano il traffico verso processi diversi, a seconda del percorso della richiesta. Le regole sono univoche per i sistemi Application Load Balancer, dedicati e condivisi.

  • aws:elasticbeanstalk:environment:process: configura i controlli dello stato e specifica porta e protocollo per i processi eseguiti sulle istanze del tuo ambiente.

Esempio
.ebextensions/application-load-balancer-shared.config

Per iniziare a utilizzare un sistema Application Load Balancer condiviso, usa la console Elastic Beanstalk, l'interfaccia a riga di comando EB o l'API per impostare il tipo di sistema di bilanciamento del carico su application e scegli di utilizzare un sistema di bilanciamento del carico condiviso. Utilizzare un file di configurazione per configurare il sistema di bilanciamento del carico condiviso.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
Nota

È possibile configurare questa opzione solo durante la creazione dell'ambiente.

Esempio .ebextensions/alb-shared-secure-listener.config

Il seguente file di configurazione seleziona un listener sicuro predefinito sulla porta 443 per il sistema di bilanciamento del carico condiviso e imposta il processo predefinito per ascoltare sulla porta 443.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS
Esempio .ebextensions/alb-shared-admin-rule.config

Il seguente file di configurazione si basa sull'esempio precedente e aggiunge una regola che instrada il traffico con un percorso di richiesta di /admin a un processo denominato admin in ascolto sulla porta 4443.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default,admin aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS aws:elasticbeanstalk:environment:process:admin: HealthCheckPath: /admin Port: '4443' Protocol: HTTPS aws:elbv2:listenerrule:admin: PathPatterns: /admin/* Priority: 1 Process: admin