Configurazione di un Application Load Balancer - 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 Application Load Balancer

Quando abiliti il bilanciamento del carico, il tuo AWS Elastic Beanstalk ambiente è dotato di un sistema di bilanciamento del carico Elastic Load Balancing per distribuire il traffico tra le istanze del tuo ambiente. Elastic Load Balancing supporta diversi tipi di load balancer. Per ulteriori informazioni, consulta la Guida per l'utente di Elastic Load Balancing. Elastic Beanstalk può creare un load balancer automaticamente o ti consente di specificare un load balancer condiviso creato da te.

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

Nota

È possibile scegliere il tipo di load balancer 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 Application Load Balancer ispeziona il traffico a livello di protocollo di rete dell'applicazione per identificare il percorso della richiesta in modo da poter indirizzare le richieste di percorsi diversi a destinazioni diverse.

Quando l'ambiente utilizza un sistema Application Load Balancer, per impostazione predefinita viene configurato da Elastic Beanstalk in modo da eseguire la stessa funzione di un sistema Classic Load Balancer. Il listener predefinito accetta HTTP le richieste sulla porta 80 e le distribuisce alle istanze dell'ambiente. Puoi aggiungere un listener sicuro sulla porta 443 con un certificato per decrittografare il HTTPS traffico, configurare il comportamento di health check e inviare i log di accesso dal load balancer a un bucket Amazon Simple Storage Service (Amazon S3).

Nota

A differenza di un Classic Load Balancer o di un Network Load Balancer, un Application Load Balancer non può avere un livello di trasporto (livello 4) o/listener. TCP SSL TLS Supporta solo gli ascoltatori. HTTP HTTPS Inoltre, non può utilizzare l'autenticazione di backend per autenticare le HTTPS connessioni tra il load balancer e le istanze di backend.

In un ambiente Elastic Beanstalk puoi utilizzare un sistema Application Load Balancer per indirizzare il traffico per determinati percorsi a un processo diverso nelle istanze del server Web. Con un sistema Classic Load Balancer, tutto il traffico indirizzato a un listener viene instradato a un singolo processo sulle istanze di back-end. Con un sistema Application Load Balancer puoi configurare più regole sul listener per instradare le richieste verso percorsi specifici a processi di back-end diversi. È possibile configurare ogni processo con la porta su cui il processo è in ascolto.

Ad esempio, è possibile eseguire un processo di login separato dall'applicazione principale. Anche se l'applicazione principale sulle istanze del tuo ambiente accetta la maggior parte delle richieste e resta in attesa sulla porta 80, il processo di login resta in attesa sulla porta 5000 e accetta le richieste nel percorso /login. Tutte le richieste in entrata dai clienti arrivano sulla porta 80. Con un sistema Application Load Balancer puoi configurare un solo listener per il traffico in entrata sulla porta 80, con due regole che instradano il traffico verso due processi separati, a seconda del percorso indicato nella richiesta. È possibile aggiungere una regola personalizzata che indirizza il traffico /login al processo di accesso in ascolto sulla porta 5000. La regola predefinita instrada tutte il traffico restante nel processo dell'applicazione principale in attesa sulla porta 80.

Una regola Application Load Balancer esegue il mapping di una richiesta a un gruppo di destinazione. In Elastic Beanstalk, un gruppo di destinazione è rappresentato da un processo. È possibile configurare un processo con un protocollo, una porta e le impostazioni di controllo dello stato. Il processo rappresenta il processo in esecuzione sulle istanze nel tuo ambiente. Il processo predefinito è un listener sulla porta 80 del server proxy inverso (nginx o Apache) su cui viene eseguita l'applicazione.

Nota

Al di fuori di Elastic Beanstalk un gruppo di destinazione esegue il mapping a un gruppo di istanze. Un listener può utilizzare regole e gruppi di destinazione per instradare il traffico verso istanze diverse in base al percorso. All'interno di Elastic Beanstalk tutte le istanze dell'ambiente sono identiche, pertanto la distinzione viene fatta tra i processi in ascolto su porte diverse.

Un sistema Classic Load Balancer utilizza un unico percorso di controllo dello stato per l'intero ambiente. Con un sistema Application Load Balancer ogni processo ha un percorso di controllo dello stato separato monitorato dal sistema di bilanciamento del carico e dal monitoraggio dello stato avanzato di Elastic Beanstalk.

Per utilizzare un Application Load Balancer, l'ambiente deve avere un valore predefinito o personalizzato VPC e deve avere un ruolo di servizio con il set di autorizzazioni standard. Se disponi di un ruolo del servizio precedente, potrebbe essere necessario aggiornare le autorizzazioni per includere elasticloadbalancing:DescribeTargetHealth e elasticloadbalancing:DescribeLoadBalancers. Per ulteriori informazioni sui sistemi Application Load Balancer, consulta Cos'è un Application Load Balancer?.

Nota

Il controllo dello stato di Application Load Balancer non utilizza il percorso del controllo dello stato di Elastic Beanstalk. Utilizza, invece, il percorso specifico configurato per ogni processo separatamente.

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

Puoi utilizzare la console Elastic Beanstalk per configurare i listener, i processi e le regole di un sistema Application Load Balancer durante la creazione dell'ambiente o in un secondo momento quando l'ambiente è in esecuzione.

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 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, consultare Capacità.

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

  7. Seleziona le opzioni Application Load Balancer e Dedicated (Dedicato) se non sono già selezionate.

    Pagina di configurazione di Elastic Load Balancing: scelta del tipo di sistema di bilanciamento del carico
  8. Apporta alla configurazione di Application Load Balancer 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).

Per configurare un sistema Application Load Balancer di un ambiente in esecuzione nella console Elastic Beanstalk
  1. Apri la console Elastic Beanstalk e, nell'elenco Regioni, seleziona la tua. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

    Nota

    Se si dispone di molti ambienti, utilizzare la barra di ricerca per filtrare l'elenco degli ambienti.

  3. Nel riquadro di navigazione, seleziona Configuration (Configurazione).

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

    Nota

    Se la categoria di configurazione di Load balancer (Sistema di bilanciamento del carico) non presenta un pulsante Edit (Modifica), il tuo ambiente non dispone di un load balancer. Per informazioni su come impostarne uno, consultare Modifica del tipo di ambiente.

  5. Apporta alla configurazione di Application Load Balancer le modifiche richieste dall'ambiente.

  6. Per salvare le modifiche scegli Apply (Applica) nella parte inferiore della pagina.

Impostazioni di Application Load Balancer

Listener

Utilizza questo elenco per specificare i listener per il tuo load balancer. Ogni listener instrada il traffico client in entrata su una determinata porta utilizzando un protocollo specificato per uno o più processi sulle tue istanze. Inizialmente, l'elenco mostra il listener predefinito, che indirizza il HTTP traffico in entrata sulla porta 80 verso un processo denominato default.

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

  2. Utilizza la finestra di dialogo Application Load Balancer listener (Listener di Application Load Balancer) per modificare le impostazioni, quindi seleziona Save (Salva).

Aggiunta di un listener
  1. Scegli Add listener (Aggiungi listener).

  2. Nella finestra di dialogo Application Load Balancer listener (Listener del sistema di bilanciamento del carico applicazioni), configura le impostazioni e scegli Add (Aggiungi).

Utilizza le impostazioni della finestra di dialogo Listener di Application Load Balancer per scegliere la porta e il protocollo utilizzati dal listener per intercettare il traffico e il processo per instradare il traffico. Se scegli il HTTPS protocollo, configura SSL le impostazioni.

Finestra di dialogo dei listener di Application Load Balancer

Prima di configurare un HTTPS listener, assicuratevi di disporre di un SSL certificato valido. Esegui una di queste operazioni:

Per ulteriori dettagli sulla configurazione HTTPS e l'utilizzo dei certificati in Elastic Beanstalk, consulta. Configurazione del protocollo HTTPS per l'ambiente Elastic Beanstalk

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. Ogni listener instrada il traffico client in entrata su una determinata porta utilizzando un protocollo specificato per uno o più processi sulle tue istanze. Inizialmente, l'elenco mostra il processo predefinito, che ascolta il traffico in entrata HTTP sulla porta 80.

Configurazione di Application Load Balancer: elenco dei processi

Puoi modificare le impostazioni di un processo esistente o aggiungerne uno nuovo. Per iniziare a modificare un processo dell'elenco o per aggiungere un processo, utilizza la stessa procedura indicata per l'elenco di listener. Viene visualizzata la finestra di dialogo Environment process (Processo ambiente).

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:

  • HTTPcode — Il codice di HTTP stato che indica un processo sano.

  • 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 superano un controllo dello stato di Elastic Load Balancing non vengono sostituite automaticamente da Amazon Auto EC2 Scaling a meno che non configuri manualmente Amazon Auto EC2 Scaling a tale scopo. Per informazioni dettagliate, vedi 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 tuo 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, richieste di instradamento su percorsi distinti per diversi processi delle istanze.

Le regole hanno priorità numeriche che stabiliscono la precedenza in cui vengono applicate alle richieste in entrata. Per ogni nuovo listener aggiunto, Elastic Beanstalk aggiunge una regola predefinita che instrada il traffico di tutti i listener verso il processo predefinito. 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. Le regole predefinite di tutti i listener non vengono visualizzate.

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 di listener. 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.

  • Condizioni di corrispondenza: un elenco di condizioni di richiesta a cui si URL applica la regola. Esistono due tipi di condizioni: HostHeader(la parte URL del dominio) e PathPattern(la parte URL del percorso). È possibile aggiungere fino a cinque condizioni. Ogni valore di condizione è lungo fino a 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.

Quando si modifica una regola esistente, non è possibile modificarne Name (Nome) e Listener port (Porta listener).

Configurazione di Application Load Balancer: elenco delle regole

Acquisizione dei log di accesso

Utilizza queste impostazioni per configurare Elastic Load Balancing al fine di acquisire i log con le informazioni dettagliate sulle richieste inviate al tuo Application Load Balancer. Per impostazione predefinita, l'acquisizione dei log di accesso è disattivata. Quando Store logs (Archivia i log) è abilitato, Elastic Load Balancing archivia i log nel bucket S3 che configuri. L'impostazione del prefisso indica una cartella di livello superiore nel bucket per i log. Elastic Load Balancing inserisce i log in una cartella denominata AWSLogs con il prefisso impostato. Se non specifichi un prefisso, Elastic Load Balancing posiziona la cartella a livello root del bucket.

Nota

Se il bucket Amazon S3 che configuri per l'acquisizione dei log di accesso non è il bucket creato da Elastic Beanstalk per il tuo account, assicurati di aggiungere una policy utente con le autorizzazioni appropriate per i tuoi () utenti. AWS Identity and Access Management IAM Le policy utente gestite fornite da Elastic Beanstalk coprono solo le autorizzazioni per le risorse gestite da Elastic Beanstalk.

Per informazioni dettagliate sui log di accesso, incluse le autorizzazioni e altri requisiti, consulta Log di accesso per Application Load Balancer.

Configurazione di Application Load Balancer: log di accesso

Esempio: Application Load Balancer con un listener protetto e due processi

In questo esempio, l'applicazione richiede la crittografia del end-to-end traffico e un processo separato per la gestione delle richieste amministrative.

Per configurare l'Application Load Balancer del tuo ambiente in modo da soddisfare questi requisiti, rimuovi il listener predefinito, aggiungi un HTTPS listener, indichi che il processo predefinito ascolta la porta 443 sulla HTTPS porta 443 e aggiungi un processo e una regola listener per il traffico amministrativo su un percorso diverso.

Configurazione del sistema di bilanciamento del carico per questo esempio
  1. Aggiungi un listener protetto. In Porta digita 443. In Protocollo, seleziona HTTPS. Per il SSLcertificato, seleziona il certificato. ARN SSL Ad esempio, arn:aws:iam::123456789012:server-certificate/abc/certs/build o arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678.

    Per Processo predefinito, mantieni default selezionato.

    Configurazione di Application Load Balancer: aggiunta di un listener protetto

    Ora puoi visualizzare il nuovo listener nell'elenco.

    Esempio di configurazione di Application Load Balancer: elenco con due listener
  2. Disabilita il HTTP listener della porta predefinita 80. Per il listener predefinito, disattiva l'opzione Enabled (Abilitato).

    Esempio di configurazione di Application Load Balancer: disabilitazione del listener predefinito
  3. Configura il processo predefinito suHTTPS. Seleziona il processo predefinito, quindi in Actions (Operazioni), scegli Edit (Modifica). In Porta digita 443. In Protocollo, seleziona HTTPS.

    Esempio di configurazione di Application Load Balancer: configurazione del processo predefinito su HTTPS
  4. Aggiungi un processo admin. In Name (Nome) digitare admin. In Porta digita 443. In Protocollo, seleziona HTTPS. In Controllo dello stato, per Percorso, digita /admin.

    Esempio di configurazione di Application Load Balancer: aggiunta del processo di amministrazione
  5. Aggiungi una regola per il traffico amministrativo. In Name (Nome) digitare admin. In Porta listener, digitare 443. Per le condizioni Match, aggiungi PathPatternun valore. /admin/* Per Processo, selezionare admin.

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

Configurazione di un Application Load Balancer utilizzando l'EB CLI

L'EB CLI richiede di scegliere un tipo di load balancer durante l'esecuzione. eb create

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

Puoi specificare un tipo di sistema di bilanciamento del carico anche con l'opzione --elb-type.

$ eb create test-env --elb-type application

Spazi dei nomi di Application Load Balancer

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

  • aws:elasticbeanstalk:environment: scegli il tipo di sistema di bilanciamento del carico per l'ambiente. Il valore di un sistema Application Load Balancer è application.

    Non è possibile impostare questa opzione nei file di configurazione (.Ebextensions).

  • aws:elbv2:loadbalancer: configura i log di accesso e altre impostazioni che si applicano al sistema Application Load Balancer nel suo complesso.

  • aws:elbv2:listener: configura i listener nel sistema Application Load Balancer. Queste impostazioni vengono mappate alle impostazioni in aws:elb:listener per i sistemi Classic Load Balancer.

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

  • aws:elasticbeanstalk:environment:process: configura i controlli dello stato e specifica porta e protocollo per i processi eseguiti sulle istanze del tuo ambiente. Le impostazioni relative a porta e protocollo sono mappate alle impostazioni relative a porta e protocollo dell'istanza in aws:elb:listener per un listener su un sistema Classic Load Balancer. Le impostazioni relative ai controlli dello stato sono mappate alle impostazioni nei namespace aws:elb:healthcheck e aws:elasticbeanstalk:application.

Esempio alb-access-logs.ebextensions/ .config

Il seguente file di configurazione consente di accedere ai caricamenti log per un ambiente con un sistema Application Load Balancer.

option_settings: aws:elbv2:loadbalancer: AccessLogsS3Bucket: amzn-s3-demo-bucket AccessLogsS3Enabled: 'true' AccessLogsS3Prefix: beanstalk-alb
Esempio
.ebextensions/ alb-default-process .config

Il seguente file di configurazione modifica le impostazioni di adesione e controllo dello stato per il processo predefinito.

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '15' HealthCheckPath: / HealthCheckTimeout: '5' HealthyThresholdCount: '3' UnhealthyThresholdCount: '5' Port: '80' Protocol: HTTP StickinessEnabled: 'true' StickinessLBCookieDuration: '43200'
Esempio .ebextensions/ alb-secure-listener .config

Il seguente file di configurazione aggiunge un listener protetto e un processo corrispondente sulla porta 443.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: Port: '443' Protocol: HTTPS
Esempio .ebextensions/ alb-admin-rule .config

Il seguente file di configurazione aggiunge un listener protetto con una regola che instrada il traffico con il percorso di richiesta /admin a un processo denominato admin in ascolto sulla porta 4443.

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' Protocol: HTTPS Rules: admin SSLCertificateArns: arn:aws:acm:us-east-2:123456789012:certificate/21324896-0fa4-412b-bf6f-f362d6eb6dd7 aws:elasticbeanstalk:environment:process:https: 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