Bilanciamento del carico di un livello - AWS OpsWorks

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à.

Bilanciamento del carico di un livello

Importante

Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post o tramite Premium AWS Support.

AWS OpsWorks Stacks offre due opzioni di bilanciamento del carico, Elastic Load Balancing e HAProxy, che vengono in genere utilizzate per bilanciare il carico tra le istanze di un livello di application server. Questo argomento descrive i vantaggi e le limitazioni di ciascuna opzione, in modo da permetterti di scegliere l'opzione più adatta quando devi aggiungere il bilanciamento del carico a un livello. In alcuni casi, è consigliabile utilizzare entrambe le opzioni.

Terminazione SSL

Il livello HAProxy integrato non gestisce la terminazione SSL; è necessario terminare SSL sui server. Il vantaggio di questo approccio è che il traffico rimane crittografato finché non raggiunge i server. Tuttavia, i server devono gestire la decrittografia e ciò aumenta il carico dei server. Inoltre, devi inserire i certificati SSL nei server di applicazioni, che risultano più accessibili agli utenti.

Con Elastic Load Balancing, puoi terminare il protocollo SSL sul sistema di bilanciamento del carico. Ciò riduce il carico sui server delle applicazioni, ma il traffico tra il sistema di bilanciamento del carico e il server non è crittografato. Elastic Load Balancing consente anche di terminare il protocollo SSL sul server, ma è piuttosto complicato da configurare.

Dimensionamento

Se il traffico in entrata supera la capacità di un sistema di bilanciamento del carico HAProxy, devi aumentare la relativa capacità manualmente.

Elastic Load Balancing si ridimensiona automaticamente per gestire il traffico in entrata. Per assicurarti che un load balancer Elastic Load Balancing abbia una capacità sufficiente per gestire il carico previsto quando è online per la prima volta, puoi preriscaldarlo.

Errore del sistema di bilanciamento del carico

Se l'istanza che ospita il server HAProxy ha esito negativo, l'intero sito potrebbe risultare offline finché non riavvii l'istanza.

Elastic Load Balancing è più resistente ai guasti rispetto a HAProxy. Ad esempio, effettua il provisioning dei nodi di bilanciamento del carico in ogni zona di disponibilità contenente istanze EC2 registrate. Se il servizio in una regione in una zona viene interrotto, gli altri nodi continuano a gestire il traffico in entrata. Per ulteriori informazioni, consulta Elastic Load Balancing Concepts.

Tempo di inattività

Entrambi i sistemi di bilanciamento del carico terminano una connessione se un server è inattivo per un periodo maggiore del valore del timeout di inattività specificato.

  • HAProxy — Il valore del timeout di inattività non ha un limite superiore.

  • Elastic Load Balancing: il valore di timeout di inattività predefinito è 60 secondi, con un massimo di 3600 secondi (60 minuti).

Il limite di inattività di Elastic Load Balancing è sufficiente per la maggior parte degli scopi. Ti consigliamo di usare HAProxy se necessiti di un timeout di inattività più lungo. Per esempio:

  • Una connessione HTTP di lunga durata utilizzata per le notifiche push.

  • Un'interfaccia di amministrazione che puoi utilizzare per eseguire attività che potrebbero richiedere più di 60 minuti.

Mappatura basata su URL

Potresti aver bisogno di utilizzare un sistema di bilanciamento del carico che inoltri una richiesta in entrata a un determinato server in base all'URL della richiesta. Ad esempio, supponiamo che tu abbia un gruppo di dieci server di applicazioni che supportano un'applicazione di commercio online. Otto server gestiscono il catalogo e due server gestiscono i pagamenti. Vuoi indirizzare tutte le richieste HTTP relative ai pagamenti ai server dei pagamenti, in base all'URL della richiesta. In questo caso, puoi indirizzare tutti gli URL che includono "payment (pagamento)" o "checkout (completamento transazione)" a uno dei server dei pagamenti.

Con HAProxy puoi utilizzare la mappatura basata su URL per indirizzare a server specifici gli URL contenenti una stringa specificata. Per utilizzare la mappatura basata su URL con AWS OpsWorks Stacks, è necessario creare un file di configurazione HAProxy personalizzato sovrascrivendo il modello nel ricettario integrato. haproxy-default.erb haproxy Per ulteriori informazioni, consulta il manuale di configurazione di HAProxy e Utilizzo di modelli personalizzati . Non puoi utilizzare la mappatura basata su URL per le richieste HTTPS. Una richiesta HTTPS è crittografata e pertanto HAProxy non è in grado di esaminare l'URL della richiesta.

Elastic Load Balancing ha un supporto limitato per la mappatura degli URL. Per ulteriori informazioni, consulta Configurazioni del listener per Elastic Load Balancing.

Raccomandazione: consigliamo di utilizzare Elastic Load Balancing per il bilanciamento del carico a meno che non si abbiano requisiti che possono essere gestiti solo da HAProxy. In tal caso, l'approccio migliore potrebbe essere quello di combinare le due cose utilizzando Elastic Load Balancing come sistema di bilanciamento del carico front-end che distribuisce il traffico in entrata a un set di server HAProxy. Per farlo:

  • Configurare un'istanza HAProxy in ciascuna delle zone di disponibilità dello stack per distribuire le richieste ai server di applicazioni della zona.

  • Assegna le istanze HAProxy a un sistema di bilanciamento del carico Elastic Load Balancing, che quindi distribuisce le richieste in entrata ai sistemi di bilanciamento del carico HAProxy.

Grazie a questo approccio, puoi utilizzare la mappatura basata su URL di HAProxy per distribuire diversi tipi di richieste ai server di applicazioni appropriati. Tuttavia, se uno dei server HAProxy va offline, il sito continuerà a funzionare perché il sistema di bilanciamento del carico Elastic Load Balancing distribuisce automaticamente il traffico in entrata ai server HAProxy integri. Si noti che è necessario utilizzare Elastic Load Balancing come load balancer front-end; un server HAProxy non può distribuire richieste ad altri server HAProxy.