Come posso ottenere un routing basato sul percorso su 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 target specifici in base al percorso dell'URL.

Breve descrizione

Un Application Load Balancer consente di creare un listener con regole che inoltrano le richieste ai gruppi target in base all'URL. Questa funzionalità non è disponibile per altri tipi di sistema di bilanciamento del carico, come Classic Load Balancer, Network Load Balancer e Gateway Load Balancer. Le regole del modello di percorso vengono applicate solo al percorso dell'URL e non ai parametri di query dell'URL. Per ulteriori informazioni sui modelli di percorso, consulta Condizioni del percorso.

Per stabilire un routing basato sul percorso sull'Application Load Balancer, procedi come segue:

  1. Crea un gruppo target.
  2. Configura le regole del listener.

Prima di creare i gruppi target, assicurati che siano soddisfatti i seguenti prerequisiti:

Risoluzione

Supponi di disporre di due servizi, il servizio A e il servizio B, con applicazioni in esecuzione su questi servizi sulla porta 80. Ad esempio, il servizio A esegue un'applicazione sul percorso /svcA e il servizio B esegue un'applicazione sul percorso /svcB.

Crea un gruppo target

Dopo aver creato le istanze, registrale presso un gruppo target. In base alle regole del listener configurate sul sistema di bilanciamento, le richieste vengono inoltrate alle destinazioni registrate utilizzando la porta e il protocollo specificati per il gruppo di destinazione. Tuttavia, è possibile sovrascrivere le informazioni sulla porta quando si registrano individualmente le destinazioni. Per ulteriori informazioni, consulta Creare un gruppo target.

Ad esempio, supponiamo di creare due gruppi target con Protocollo HTTP e Porta 80, ciascuno con un'applicazione distribuita. Ad esempio, registri l'istanza EC2 che esegue il servizio A con target-group-A. Per questo gruppo target, puoi impostare HealthCheckProtocol come HTTP e HealthCheckPath come /svcA.

L'istanza EC2 che esegue il servizio B viene registrata con target-group-B. Per questo gruppo target, puoi impostare HealthCheckProtocol come HTTP e HealthCheckPath come /svcB.

Puoi aggiungere o rimuovere obiettivi da o verso i tuoi gruppi target in qualsiasi momento. Per ulteriori informazioni, consulta Registrare gli obiettivi con il gruppo target.

Dopo aver specificato un gruppo di destinazione in una regola per un listener, il load balancer monitora continuamente lo stato di tutte le destinazioni registrate presso il gruppo target che si trovano nella zona di disponibilità abilitata per il load balancer. Il sistema di bilanciamento del carico indirizza le richieste ai target registrati che sono integri. Per ulteriori informazioni, consulta Controlli dell'integrità per i tuoi gruppi target.

Configurazione delle regole del listener

Quando si crea un listener per un Application Load Balancer, è possibile definire una o più regole oltre alla regola predefinita. Una regola è costituita da una priorità, un'azione e una o più condizioni. Non è possibile definire le condizioni per la regola predefinita. Se non vengono soddisfatte le condizioni per nessuna delle regole non predefinite, viene eseguita l'azione per la regola predefinita.

Per ulteriori informazioni sulla priorità delle regole, consulta Riordinare le regole.

Per ulteriori informazioni sulle azioni delle regole, consulta Tipi di azioni delle regole.

Per ulteriori informazioni sulle condizioni delle regole, vedere Tipi di condizioni delle regole.

Per implementare il routing basato sul percorso su un Application Load Balancer, è necessario configurare le regole del listener. È necessario configurare una regola per ogni modello di percorso in base al quale si desidera indirizzare le richieste.

Ad esempio:

Listener regola 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.

Listener regola 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 creare un nuovo listener HTTP, consulta Creare un listener HTTP.

Per creare un nuovo listener HTTPS, consulta Creare un listener HTTPS.

Per aggiornare le regole del listener con condizioni e azioni, procedi come segue:

  1. Apri la console Amazon EC2.
  2. Nel riquadro di navigazione, in Load Balancing, scegli Load Balancers.
  3. Selezionate il sistema di bilanciamento del carico, quindi scegliete Listeners.
  4. Per aggiornare il listener, scegli Visualizza/modifica regole.
  5. Scegli l'icona Aggiungi regole (il segno più) nella barra dei menu. In questo modo vengono aggiunte le icone Inserisci regola nelle posizioni in cui è possibile inserire una regola nell'ordine di priorità.
  6. Scegli una delle icone di inserimento delle regole aggiunte nel passaggio precedente.
  7. Per aggiungere una regola basata sul percorso per /svcA, scegli Aggiungi condizione, Percorso, quindi inserisci il modello di percorso /svcA. Per salvare la condizione, scegli l'icona del segno di spunta.
  8. Per aggiungere un'azione di inoltro, scegli Aggiungi azione, Inoltra a, quindi scegli il gruppo target group-A.
  9. Scegli Salva.

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

  • Per il passaggio 6, immettere il modello di percorso /svcB.
  • Per il passaggio 7, scegli il gruppo target target-group-B.

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

Nota: le regole di routing basate sui percorsi cercano una corrispondenza esatta. In questo esempio, il routing basato sul percorso utilizza le definizioni dei percorsi /svcA e /svcB. Se l'applicazione richiede che le richieste vengano indirizzate più avanti lungo questi percorsi, ad esempio /svcA/doc o /svcB/doc, includi un carattere jolly quando scrivi la condizione per la regola di routing basata sul percorso. Usa modelli di percorso simili a /svcA* o /svcB* per assicurarti che tutti i documenti su questi percorsi vengano presi in considerazione durante il routing delle richieste.

Verifica il routing basato sul percorso

Per testare questo routing, copia il nome DNS dell'Application Load Balancer in un browser Web e aggiungi il percorso URL /svcA o /svcB. Quando il listener Application Load Balancer riceve la richiesta, inoltra la richiesta al gruppo di destinazione appropriato in base alla condizione del percorso.

Ad esempio, supponiamo che il nome DNS del tuo 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.

Con il routing basato sul percorso, Application Load Balancer consente di ospitare più microservizi dietro un unico sistema di bilanciamento del carico utilizzando le regole del listener e i gruppi target. Pertanto, puoi impostare regole complesse per indirizzare le richieste dei client alle tue applicazioni. Oltre alle regole basate sui percorsi, puoi anche indirizzare le richieste a particolari applicazioni in base all'intestazione host, all'intestazione dell'agente utente e ai valori dei parametri di query. Per ulteriori informazioni, consulta Advanced request routing for AWS Application Load Balancers.


Informazioni correlate

Come posso risolvere i problemi e correggere i controlli di integrità non riusciti per Application Load Balancer?

Risolvi i problemi relativi a Application Load Balancer