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à.
PERF04-BP04 Usa il bilanciamento del carico per distribuire il traffico su più risorse
Distribuisci il traffico tra varie risorse o servizi affinché il carico di lavoro possa trarre vantaggio dall'elasticità fornita dal cloud. Puoi anche utilizzare il bilanciamento del carico per la terminazione dell'offloading della crittografia al fine di migliorare le prestazioni, l'affidabilità e gestire e instradare il traffico in modo efficiente.
Anti-pattern comuni:
-
Scelta del tipo di sistema di bilanciatore del carico senza tenere conto dei requisiti del carico di lavoro.
-
Mancato utilizzo delle funzionalità del bilanciatore del carico per l'ottimizzazione delle prestazioni.
-
Esposizione diretta del carico di lavoro a Internet senza un bilanciatore del carico.
-
Instradi tutto il traffico Internet attraverso i bilanciatori del carico esistenti.
-
Utilizzi il bilanciamento del TCP carico generico e fai in modo che ogni nodo di calcolo gestisca la crittografia. SSL
Vantaggi dell'adozione di questa best practice: un bilanciatore del carico gestisce il carico variabile del traffico dell'applicazione in una o più zone di disponibilità e consente alta disponibilità, dimensionamento automatico e un migliore utilizzo del carico di lavoro.
Livello di rischio associato se questa best practice non fosse adottata: elevato
Guida all'implementazione
I bilanciatori del carico operano come punto di ingresso per il carico di lavoro, dal quale distribuiscono il traffico alle destinazioni di backend, come istanze di calcolo o container per migliorarne l'utilizzo.
La scelta del tipo corretto di bilanciatore del carico è il primo passaggio per ottimizzare l'architettura. Inizia elencando le caratteristiche del carico di lavoro, ad esempio il protocollo (ad esempio TCPHTTP,TLS, o WebSockets), il tipo di destinazione (come istanze, contenitori o serverless), i requisiti dell'applicazione (come connessioni a lunga durata, autenticazione utente o persistenza) e il posizionamento (come regione, zona locale, Outpost o isolamento zonale).
AWS fornisce diversi modelli per le applicazioni per utilizzare il bilanciamento del carico. Application Load Balancer è la soluzione ideale per il bilanciamento del carico HTTP e del HTTPS traffico e fornisce un routing avanzato delle richieste mirato alla distribuzione di architetture applicative moderne, inclusi microservizi e contenitori.
Network Load Balancer è la soluzione ideale per il bilanciamento del carico del TCP traffico laddove sono richieste prestazioni estreme. È in grado di gestire milioni di richieste al secondo, mantenendo al contempo latenze ridottissime. Inoltre, è ottimizzato per la gestione degli schemi di traffico improvvisi e incostanti.
Elastic Load Balancing
Dopo aver scelto il bilanciatore del carico appropriato, puoi iniziare a utilizzarne le funzionalità per ridurre la quantità di attività che deve svolgere il backend per distribuire il traffico.
Ad esempio, utilizzando sia Application Load Balancer (ALB) che Network Load Balancer NLB (), è possibile SSL eseguireTLS/encryption offloading, un'opportunità per evitare che CPU l'handshake così TLS impegnativo venga completato dai target e anche per migliorare la gestione dei certificati.
Quando configuriSSL/TLSoffloading nel tuo sistema di bilanciamento del carico, quest'ultimo diventa responsabile della crittografia del traffico da e verso i client, mentre consegna il traffico non crittografato ai tuoi backend, liberando le tue risorse di backend e migliorando i tempi di risposta per i client.
Application Load Balancer può anche servire il traffico HTTP /2 senza bisogno di supportarlo sui tuoi obiettivi. Questa semplice decisione può migliorare i tempi di risposta dell'applicazione, poiché HTTP /2 utilizza TCP le connessioni in modo più efficiente.
Nel definire l'architettura, è bene tenere conto dei requisiti di latenza del carico di lavoro. Ad esempio, se un'applicazione è sensibile alla latenza, è possibile scegliere di usare Network Load Balancer, che offre latenze estremamente ridotte. In alternativa, è possibile decidere di avvicinare il carico di lavoro ai clienti sfruttando Application Load Balancer nelle zone locali AWS
Un altro aspetto di cui tenere conto per i carichi di lavoro sensibili alla latenza è il bilanciamento del carico tra zone. Con il bilanciamento del carico tra zone, ogni nodo del bilanciatore del carico distribuisce il traffico tra le destinazioni registrate in tutte le zone di disponibilità autorizzate.
Usa Auto Scaling integrato con il bilanciatore del carico. Uno degli aspetti principali di un sistema con prestazioni efficienti riguarda il dimensionamento corretto delle risorse backend. A questo scopo, puoi utilizzare integrazioni dei bilanciatori del carico per le risorse di destinazione backend. Usando l'integrazione dei bilanciatori del carico con gruppi Auto Scaling, le destinazioni vengono aggiunte o rimosse nel e dal bilanciatore del carico in base alle esigenze, in risposta al traffico in ingresso. I sistemi di bilanciamento del carico possono anche integrarsi con Amazon e ECSAmazon EKS per carichi di lavoro containerizzati.
Passaggi dell'implementazione
-
Definisci i tuoi requisiti di bilanciamento del carico, tra cui volume di traffico, disponibilità e scalabilità delle applicazioni.
-
Scegli il tipo di sistema di bilanciatore del carico del carico giusto per la tua applicazione.
-
Usa Application Load Balancer per i carichi di lavoro HTTP HTTPS /.
-
Usa Network Load Balancer per HTTP carichi non di lavoro eseguiti su o. TCP UDP
-
Utilizza una combinazione di entrambi (ALBcome obiettivo di NLB
) se desideri sfruttare le funzionalità di entrambi i prodotti. Ad esempio, puoi farlo se desideri utilizzare lo statico IPs di NLB insieme al routing basato sull'HTTPintestazione da ALB o se desideri esporre il tuo HTTP carico di lavoro a un. AWS PrivateLink
-
-
Se possibile, usaSSL/TLSoffloading.
-
ConfiguraHTTPS/TLSlistener con Application Load Balancer e Network Load Balancer integrati con. AWS Certificate Manager
-
Tieni presente che alcuni carichi di lavoro potrebbero richiedere la end-to-end crittografia per motivi di conformità. In questo caso, è necessario consentire la crittografia nelle destinazioni.
-
Per le migliori pratiche di sicurezza, consulta SEC09-BP02 Applica la crittografia in transito.
-
-
Seleziona l'algoritmo di routing corretto (solo). ALB
-
L'algoritmo di instradamento può fare la differenza per quanto riguarda l'uso corretto delle destinazioni backend e, di conseguenza, l'impatto sulle prestazioni. Ad esempio, ALB offre due opzioni per gli algoritmi di routing:
-
Numero minimo di richieste in sospeso: usa questa opzione per ottenere una migliore distribuzione del carico nelle destinazioni backend nei casi in cui le richieste per l'applicazione variano per complessità o le destinazioni variano per capacità di elaborazione.
-
Round robin: usa questa opzione quando le richieste e le destinazioni sono simili o se devi distribuire equamente le richieste tra le destinazioni.
-
-
Valuta se usare l'isolamento tra zone o quello zonale.
-
Disattiva l'isolamento tra zone (usando l'isolamento zonale) per migliorare la latenza e in caso di domini con errori di zona. È disattivato per impostazione predefinita in NLB e ALBpuoi disattivarlo per gruppo target.
-
Attiva l'isolamento tra zone per ottenere disponibilità e flessibilità maggiori. Per impostazione predefinita, l'opzione cross-zone è attivata per ogni gruppo target ALB e NLBpuò essere attivata in base al gruppo target.
-
-
Attiva HTTP keep-alive per i tuoi HTTP carichi di lavoro (solo). ALB Con questa funzionalità, il load balancer può riutilizzare le connessioni di backend fino alla scadenza del timeout keep-alive, migliorando i tempi di HTTP richiesta e risposta e riducendo anche l'utilizzo delle risorse per gli obiettivi di backend. Per informazioni dettagliate su come eseguire questa operazione per Apache e Nginx, vedi Quali sono
le impostazioni ottimali per l'utilizzo di Apache o come server di backend? NGINX ELB -
Attiva il monitoraggio del tuo bilanciatore del carico.
-
Attiva i log di accesso per Application Load Balancer e Network Load Balancer.
-
I campi principali da considerare sono, e. ALB
request_processing_time
request_processing_time
response_processing_time
-
I principali campi da prendere in considerazione NLB sono
connection_time
etls_handshake_time
. -
Preparati a eseguire query sui log quando necessario. Puoi usare Amazon Athena per interrogare sia i ALBlog che i log. NLB
-
Crea allarmi per metriche relative alle prestazioni, ad esempio per.
TargetResponseTime
ALB
-
Risorse
Documenti correlati:
Video correlati:
Esempi correlati: