Salta al contenuto

Come posso configurare il routing basato sul percorso in un Application Load Balancer?

7 minuti di lettura
0

Sto eseguendo diversi microservizi dietro il mio Application Load Balancer. Desidero inoltrare le richieste a gruppi di destinazione specifici in base al percorso dell'URL.

Breve descrizione

Puoi utilizzare un Application Load Balancer per creare un listener con regole che inoltrano le richieste ai gruppi di destinazione in base all'URL. Le regole del modello di percorso si applicano solamente al percorso dell'URL, non ai parametri di query dell'URL. Per ulteriori informazioni sui modelli di percorso, consulta Condizioni percorso.

Nota: questa funzionalità non è supportata dai Classic Load Balancer, dai Network Load Balancer o dai Gateway Load Balancer.

Per configurare il routing basato sul percorso su un Application Load Balancer, completa i seguenti passaggi:

  1. Crea un gruppo di destinazione.
  2. Configura le regole del listener.

Prerequisiti:

  • Avvia le istanze Amazon Elastic Compute Cloud (Amazon EC2) in un Amazon Virtual Private Cloud (Amazon VPC). Per ulteriori informazioni, consulta Inizia a usare Amazon EC2.
  • Verifica che i ](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-register-targets.html#target-security-groups)gruppi di sicurezza di destinazione[ delle istanze Amazon EC2 consentano l'accesso alla porta del listener e alla porta del controllo dell'integrità.
  • Distribuisci l'applicazione sulle istanze Amazon EC2 che intendi registrare nei gruppi di destinazione. Ad esempio, consulta Tutorial: installare un server LAMP su AL2 023.
  • Crea un Application Load Balancer.

Risoluzione

Crea un gruppo di destinazione

Dopo aver creato le istanze, registrale in un gruppo di destinazione. In base alle regole del listener configurate, l'Application Load Balancer invia richieste alle destinazioni registrate in base alla porta e al protocollo che hai specificato. Puoi tuttavia modificare le informazioni della porta quando registri singolarmente le destinazioni. Per ulteriori informazioni, consulta Crea un gruppo di destinazione per il tuo Application Load Balancer.

Supponiamo ad esempio di avere due servizi, il servizio A e il servizio B. Le applicazioni che eseguono questi servizi utilizzano la porta 80. Il servizio A esegue un'applicazione sul percorso /svcA, mentre il servizio B esegue un'applicazione sul percorso /svcB.

  • Crei due gruppi di destinazione con Protocollo HTTP e Porta 80, ciascuno con un'applicazione distribuita.
  • Registri l'istanza Amazon EC2 che esegue il servizio A nel gruppo di destinazione target-group-A. Per questo gruppo di destinazione, puoi impostare HTTP per HealthCheckProtocol e /svcA per HealthCheckPath.
  • Registri l'istanza Amazon EC2 che esegue il servizio nel gruppo di destinazione target-group-B. Per questo gruppo di destinazione, puoi impostare HTTP per HealthCheckProtocol e /svcB per HealthCheckPath.

Puoi aggiungere o rimuovere destinazioni nei gruppi di destinazione in qualsiasi momento. Per ulteriori informazioni, consulta Registra le destinazioni nel gruppo di destinazione del tuo Application Load Balancer.

Dopo aver specificato un gruppo di destinazione, il bilanciatore del carico monitora continuamente lo stato di tutte le destinazioni che si trovano nella zona di disponibilità attivata. Il bilanciatore del carico indirizza le richieste alle destinazioni registrate che risultano integre. Per ulteriori informazioni, consulta Controlli dell'integrità per i gruppi di destinazione di un Application Load Balancer.

Configura le regole del listener

Quando crei un listener per un Application Load Balancer, puoi definire una o più regole oltre alla regola predefinita. Una regola è costituita da una priorità, un'azione e una o più condizioni. Non puoi definire condizioni per la regola predefinita. Se nessuna delle condizioni delle regole definite risulta soddisfatta, viene eseguita l'azione della regola predefinita.

Per impostare il routing basato sul percorso su un Application Load Balancer, devi configurare le regole del listener. Configura una regola per ogni modello di percorso in base al quale desideri indirizzare le richieste.

Esempio di regole del listener

L'esempio seguente mostra le regole del listener per i servizi A e B:

Regola del listener 1: Se il percorso URL della richiesta contiene la stringa /svcA, inoltra la richiesta a target-group-A. Questo perché target-group-A include il servizio A che esegue un'applicazione sul percorso specificato.

Regola del listener 2: Se il percorso URL della richiesta contiene la stringa /svcB, inoltra la richiesta a target-group-B. Questo perché target-group-B include il servizio B che esegue un'applicazione sul percorso specificato.

Per aggiornare le regole del listener con condizioni e azioni, completa i seguenti passaggi:

  1. Apri la console Amazon EC2.
  2. Nel pannello di navigazione, in Bilanciamento del carico, scegli Bilanciatori del carico.
  3. Scegli il bilanciatore del carico, quindi scegli Ascoltatore e regole.
  4. Per aggiornare il listener, scegli la scheda Ascoltatore e regole, quindi seleziona il testo nella colonna Protocol:Port per aprire la pagina dei dettagli del listener.
  5. Nella scheda Regole, nella sezione Regole listener, seleziona la regola che desideri modificare.
  6. Scegli Operazioni, quindi scegli Modifica regola.
  7. Scegli Aggiungi regole.
  8. Modifica il nome e i tag in base alle esigenze. Per aggiungere altri tag, scegli Aggiungi tag aggiuntivi.
  9. Scegli Avanti.
  10. Per aggiungere una regola basata sul percorso per /svcA, scegli Aggiungi condizione, Percorso, quindi inserisci il modello di percorso /svcA. Scegli Conferma.
  11. Scegli Avanti.
  12. Per aggiungere un'azione di inoltro, scegli Inoltra ai gruppi di destinazione per Azioni di routing, quindi, nel menu, scegli il gruppo di destinazione target-group-A.
  13. Scegli Avanti.
  14. Scegli la priorità appropriata.
  15. Rivedi i dettagli e le configurazioni aggiornate per la regola. Quando le selezioni sono corrette, scegli Salva modifiche.

Ripeti i passaggi precedenti per il percorso /svcB con le seguenti modifiche:

  • Nel passaggio 10, inserisci il modello di percorso /svcB.
  • Nel passaggio 12, scegli il gruppo di destinazione target-group-B.

Per ulteriori informazioni, consulta Regole del listener per Application Load Balancer.

Nota: le regole di routing basate sui percorsi cercano una corrispondenza esatta. Se l'applicazione richiede che le richieste vengano indirizzate ulteriormente su questi percorsi, includi un carattere jolly nella condizione per la regola di routing basata sul percorso. Utilizza modelli di percorso simili a /svcA* o /svcB* affinché qualsiasi documento su questi percorsi venga preso in considerazione durante l'indirizzamento delle richieste.

Verifica il routing basato sul percorso

Per testare il routing basato sul percorso, copia il nome DNS dell'Application Load Balancer in un browser web, quindi aggiungi il percorso dell'URL /svcA or /svcB.

Ad esempio, supponiamo che il nome DNS dell'Application Load Balancer sia alb-demo-1234567890.us-west-2.elb.amazonaws.com.

  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA deve restituire il servizio A.
  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB deve restituire il servizio B.

Quando il listener dell'Application Load Balancer riceve la richiesta, la inoltra al gruppo di destinazione appropriato in base alla condizione del percorso.

Se utilizzi il routing basato sul percorso, puoi ospitare più microservizi dietro un singolo Application Load Balancer. Puoi indirizzare il traffico verso ciascun servizio in base a regole del listener e gruppi di destinazione. Puoi anche indirizzare il traffico in base a condizioni come intestazione host, intestazione user-agent o valori dei parametri di query. Per ulteriori informazioni, consulta Advanced request routing for AWS Application Load Balancers (Instradamento avanzato delle richieste per gli Application Load Balancer di AWS).

Informazioni correlate

Come faccio a risolvere e correggere gli errori del controllo dell'integrità degli Application Load Balancer?

Risoluzione dei problemi degli Application Load Balancer