Bilanciamento del carico con AWS ELB

Ciao a tutti! Il corso inizia oggi "AWS per sviluppatori", in relazione al quale abbiamo tenuto un corrispondente webinar tematico dedicato alla revisione dell'ELB. Abbiamo esaminato i tipi di bilanciatori e creato diverse istanze EC2 con un bilanciatore. Abbiamo studiato anche altri esempi di utilizzo.

Bilanciamento del carico con AWS ELB

Dopo aver ascoltato il webinar, Desideri:

  • capire cos'è AWS Load Balancing;
  • conoscere le tipologie di Elastic Load Balancer e i suoi componenti;
  • utilizza AWS ELB nella tua pratica.

Perché hai bisogno di saperlo?

  • utile se hai intenzione di sostenere esami di certificazione AWS;
  • questo è un modo semplice per distribuire il carico tra i server;
  • Questo è un modo semplice per aggiungere Lambda al tuo servizio (ALB).

Ha condotto una lezione aperta Rishat Teregulov, ingegnere di sistema presso una società di marketing per lo sviluppo e il supporto di siti Web.

Introduzione

Cos'è un Elastic Load Balancer può essere visto nel diagramma seguente, che mostra un semplice esempio:

Bilanciamento del carico con AWS ELB

Load Balancer accetta le richieste e le distribuisce tra le istanze. Abbiamo un'istanza separata, ci sono funzioni Lambda e c'è un gruppo AutoScaling (un gruppo di server).

Tipi di AWS ELB

1. Diamo un'occhiata alle tipologie principali:

Bilanciatore del carico classico. Il primissimo sistema di bilanciamento del carico di AWS, funziona sia su OSI Layer 4 che su Layer 7, supportando HTTP, HTTPS, TCP e SSL. Fornisce il bilanciamento del carico di base su più istanze Amazon EC2 e funziona sia a livello di richiesta che di connessione. Apriamolo (evidenziato in grigio):

Bilanciamento del carico con AWS ELB

Questo bilanciatore è considerato obsoleto, quindi se ne consiglia l'uso solo in determinati casi. Ad esempio, per le applicazioni create sulla rete EC2‑Classic. In linea di principio nessuno ci impedisce di crearlo:

Bilanciamento del carico con AWS ELB

2. Bilanciamento del carico di rete. Adatto a carichi di lavoro pesanti, funziona a OSI Layer 4 (può essere utilizzato in EKS ed ECS), sono supportati TCP, UDP e TLS.

Network Load Balancer instrada il traffico verso le destinazioni in un Amazon VPC ed è in grado di elaborare milioni di richieste al secondo con una latenza estremamente bassa. Inoltre, è ottimizzato per gestire modelli di traffico con carichi improvvisi e variabili.

3. Bilanciamento del carico dell'applicazione. Funziona al livello 7, ha il supporto Lambda, supporta regole a livello di intestazione e percorso, supporta HTTP e HTTPS.
Fornisce routing avanzato delle richieste incentrato sulla fornitura di applicazioni basate su architetture moderne, inclusi microservizi e contenitori. Dirige il traffico verso le destinazioni in Amazon VPC in base al contenuto della richiesta.

Per molti utenti, Application Load Balancer è stata la prima scelta per sostituire Classic Load Balancer, perché TCP non è comune come HTTP.

Creiamolo anche noi, in conseguenza del quale avremo già due bilanciatori di carico:

Bilanciamento del carico con AWS ELB

Componenti del bilanciamento del carico

Componenti comuni del bilanciamento del carico (comune a tutti i bilanciatori):

  • Politica di registrazione degli accessi

— i tuoi registri di accesso ELB. Per effettuare le impostazioni, puoi andare su Descrizione e selezionare il pulsante “Modifica attributi”:

Bilanciamento del carico con AWS ELB

Quindi specifichiamo S3Bucket - Archiviazione di oggetti Amazon:

Bilanciamento del carico con AWS ELB

  • schema

— bilanciatore interno o esterno. Il punto è se il tuo LoadBalancer deve ricevere indirizzi esterni per essere accessibile dall'esterno, o può essere il tuo bilanciatore di carico interno;

  • Gruppi di sicurezza

— controllo dell'accesso al bilanciatore. Essenzialmente si tratta di un firewall di alto livello.

Bilanciamento del carico con AWS ELB

Bilanciamento del carico con AWS ELB

  • Sottoreti

— sottoreti all'interno del tuo VPC (e, di conseguenza, zona di disponibilità). Le sottoreti vengono specificate durante la creazione. Se i VPC sono limitati dalla regione, le sottoreti sono limitate dalle zone di disponibilità. Quando si crea un sistema di bilanciamento del carico, è meglio crearlo in almeno due sottoreti (aiuta se si verificano problemi con una zona di disponibilità);

  • Gli ascoltatori

— i protocolli del tuo bilanciatore. Come accennato in precedenza, per Classic Load Balancer può essere HTTP, HTTPS, TCP e SSL, per Network Load Balancer - TCP, UDP e TLS, per Application Load Balancer - HTTP e HTTPS.

Esempio per Classic Load Balancer:

Bilanciamento del carico con AWS ELB

Ma nell'Application Load Balancer vediamo un'interfaccia leggermente diversa e una logica generalmente diversa:

Bilanciamento del carico con AWS ELB

Componenti del sistema di bilanciamento del carico v2 (ALB e NLB)

Ora diamo uno sguardo più da vicino ai bilanciatori della versione 2 Application Load Balancer e Network Load Balancer. Questi bilanciatori hanno le proprie caratteristiche dei componenti. Ad esempio, è apparso un concetto come gruppi target: istanze (e funzioni). Grazie a questo componente abbiamo la possibilità di specificare a quale dei gruppi target vogliamo indirizzare il traffico.

Bilanciamento del carico con AWS ELB

Bilanciamento del carico con AWS ELB

In termini semplici, in Gruppi target specifichiamo le istanze in cui arriverà il traffico. Se nello stesso Classic Load Balancer colleghi semplicemente immediatamente l'intensità al bilanciatore, nell'Application Load Balancer devi prima:

  • creare un bilanciatore del carico;
  • creare un gruppo target;
  • diretto tramite le porte richieste o le regole del bilanciamento del carico ai gruppi target richiesti;
  • in Gruppi target assegni le istanze.

Questa logica di funzionamento può sembrare più complicata, ma in realtà è più comoda.

Il componente successivo è Regole dell'ascoltatore (regole per il routing). Questo si applica solo ad Application Load Balancer. Se in Network Load Balancer crei semplicemente un Listener e invia il traffico a un gruppo target specifico, allora in Application Load Balancer tutto più divertente e conveniente.

Bilanciamento del carico con AWS ELB

Ora diciamo alcune parole sul componente successivo: IP elastico (indirizzi statici per NLB). Se le regole di routing Le regole del listener influivano solo sull'Application Load Balancer, l'IP elastico influiva solo sul Network Load Balancer.

Creiamo un bilanciatore del carico di rete:

Bilanciamento del carico con AWS ELB

Bilanciamento del carico con AWS ELB

E proprio durante il processo di creazione vedremo che ci viene data la possibilità di selezionare IP elastico:

Bilanciamento del carico con AWS ELB

L'IP elastico fornisce un singolo indirizzo IP che può essere associato a diverse istanze EC2 nel tempo. Se un'istanza EC2 ha un indirizzo IP elastico e tale istanza viene terminata o arrestata, puoi associare immediatamente una nuova istanza EC2 a un indirizzo IP elastico. Tuttavia, la tua attuale applicazione non smetterà di funzionare, poiché le applicazioni vedono ancora lo stesso indirizzo IP, anche se il vero EC2 è cambiato.

Qui un altro caso d'uso sul motivo per cui è necessario l'IP elastico. Guarda, vediamo 3 indirizzi IP, ma non rimarranno qui per sempre:

Bilanciamento del carico con AWS ELB

Amazon li cambia nel tempo, forse ogni 60 secondi (ma in pratica, ovviamente, meno spesso). Ciò significa che gli indirizzi IP possono cambiare. E nel caso di Network Load Balancer, puoi semplicemente associare un indirizzo IP e indicarlo nelle tue regole, policy, ecc.

Bilanciamento del carico con AWS ELB

Traccia conclusioni

ELB fornisce la distribuzione automatica del traffico in entrata su più destinazioni (contenitori, istanze Amazon EC2, indirizzi IP e funzioni Lambda). ELB è in grado di distribuire il traffico con carichi variabili sia all'interno di una singola zona di disponibilità che su più zone di disponibilità. L'utente può scegliere tra tre tipi di bilanciatori che forniscono elevata disponibilità, scalabilità automatica e buona protezione. Tutto ciò è importante per garantire la tolleranza agli errori delle tue applicazioni.

I principali vantaggi:

  • alta disponibilità. Il contratto di servizio presuppone una disponibilità del 99,99% per il sistema di bilanciamento del carico. Ad esempio, più zone di disponibilità garantiscono che il traffico venga elaborato solo da oggetti integri. Infatti, puoi bilanciare il carico nell'intera regione, reindirizzando il traffico verso obiettivi sani in diverse zone di disponibilità;
  • sicurezza. ELB funziona con Amazon VPC, fornendo varie funzionalità di sicurezza: gestione integrata dei certificati, autenticazione utente e decrittografia SSL/TLS. Tutti insieme forniscono una gestione centralizzata e flessibile delle impostazioni TLS;
  • elasticità. L'ELB può gestire cambiamenti improvvisi nel traffico di rete. Inoltre, la profonda integrazione con Auto Scaling fornisce all'applicazione risorse sufficienti se il carico cambia, senza richiedere un intervento manuale;
  • flessibilità. Puoi utilizzare gli indirizzi IP per instradare le richieste alle destinazioni delle tue applicazioni. Ciò fornisce flessibilità durante la virtualizzazione delle applicazioni di destinazione, offrendo così la possibilità di ospitare più applicazioni su una singola istanza. Poiché le applicazioni possono utilizzare una singola porta di rete e avere gruppi di sicurezza separati, la comunicazione tra le applicazioni risulta semplificata quando si dispone, ad esempio, di un'architettura basata su microservizi;
  • monitoraggio e audit. Puoi monitorare le applicazioni in tempo reale utilizzando le funzionalità di Amazon CloudWatch. Parliamo di metriche, log, tracciamento delle richieste. In termini semplici, sarai in grado di identificare i problemi e individuare i colli di bottiglia nelle prestazioni in modo abbastanza accurato;
  • bilanciamento del carico ibrido. La possibilità di bilanciare il carico tra le risorse locali e AWS utilizzando lo stesso sistema di bilanciamento del carico semplifica la migrazione o l'espansione delle applicazioni locali nel cloud. Anche la gestione dei guasti è semplificata utilizzando il cloud.

Se sei interessato ai dettagli, ecco un paio di link utili dal sito ufficiale di Amazon:

  1. Bilanciamento del carico elastico.
  2. Funzionalità di Elastic Load Balancing.

Fonte: habr.com

Aggiungi un commento