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à.
Scelta delle dimensioni dei nodi
La dimensione del nodo selezionata per il ElastiCache cluster influisce su costi, prestazioni e tolleranza ai guasti.
Dimensione del nodo (Valkey e Redis OSS)
Per informazioni sui vantaggi dei processori Graviton, vedere Processore AWS Graviton
Rispondere alle seguenti domande può aiutarti a determinare il tipo minimo di nodo necessario per l'implementazione di Valkey o Redis OSS:
-
Si prevedono carichi di lavoro legati al velocità di trasmissione effettiva con più connessioni client?
Se questo è il caso e utilizzi Valkey o Redis OSS dalla versione 5.0.6 alla 7.1, puoi ottenere un throughput e una latenza migliori con la funzionalità avanzata. I/O Le CPU disponibili scaricano le connessioni client dal motore. Se utilizzi Valkey, o Redis OSS dalla versione 7.0.4 alla 7.1, oltre a Enhanced, ottieni un'ulteriore accelerazione grazie al I/O multiplexing avanzato I/O, in cui ogni I/O thread di rete dedicato convoglia i comandi da più client nel motore, sfruttando la sua capacità di elaborare in modo efficiente i comandi in batch. A partire ElastiCache da Redis OSS v7.1 e Valkey 7.2, la funzionalità threads avanzata gestisce anche la logica del livello di presentazione. I/O Ciò significa che i I/O thread avanzati non solo leggono l'input del client, ma lo analizzano anche nel formato di comando binario del motore, che viene quindi inoltrato al thread principale per l'esecuzione, garantendo un aumento delle prestazioni. Per ulteriori informazioni, consulta il post del blog
e la pagina delle versioni supportate. -
Si dispone di carichi di lavoro che accedono regolarmente a una piccola percentuale dei dati?
Se questo è il caso e utilizzi la versione 6.2 o successiva del motore Redis OSS, puoi sfruttare il tiering dei dati scegliendo il tipo di nodo r6gd. Con il tiering di dati, i dati utilizzati meno di recente vengono archiviati su SSD. Quando vengono recuperati, è previsto un piccolo costo di latenza, bilanciato dai risparmi sui costi. Per ulteriori informazioni, consulta Suddivisione dei dati su più livelli ElastiCache.
Per ulteriori informazioni, consulta Tipi di nodi supportati.
-
Di quanta memoria in totale necessiti per i tuoi dati?
Per ottenere una stima generale, prendere la dimensione degli elementi che si desidera memorizzare nella cache. Moltiplicare questa dimensione per il numero degli elementi da conservare nella cache contemporaneamente. Per ottenere una stima veritiera delle dimensioni degli elementi, serializza gli elementi della cache e contane i caratteri. Poi dividi questo numero per il numero delle partizioni nel cluster.
Per ulteriori informazioni, consulta Tipi di nodi supportati.
-
Valkey e Redis OSS utilizzano un processo di salvataggio forkless per il failover, lo snapshot, la sincronizzazione e la promozione di una replica tra le operazioni primarie. Questo processo richiede meno memoria disponibile perché le scritture vengono gestite senza biforcare il processo.
Per ulteriori informazioni, consulta gli argomenti seguenti:
-
Quant'è consistente il carico di lavoro in scrittura della tua applicazione?
Le applicazioni caratterizzate da elevata attività di scrittura possono richiedere molta più memoria disponibile, non occupata dai dati, per acquisire snapshot o per il failover. Ogni volta che viene svolto il processo
BGSAVE, è necessario disporre di memoria sufficiente che non viene utilizzata dai dati per contenere tutte le scritture che avvengono durante il processoBGSAVEEsempi sono quando si esegue uno snapshot, quando si sincronizza un cluster primario con una replica in un cluster e quando si abilita la caratteristica AOF (Append-only File). Un altro è quando si promuove una replica a primaria (se è stata Multi-AZ abilitata). Il caso peggiore è quando tutti i tuoi dati vengono riscritti durante il processo. In questo caso, è necessaria una dimensione di istanza di nodo con il doppio della memoria necessaria per i soli dati.Per informazioni più dettagliate, consulta Assicurarsi di disporre di memoria sufficiente per creare un'istantanea OSS Valkey o Redis.
-
L'implementazione sarà un cluster Valkey o Redis OSS (modalità cluster disattivata) autonomo o un cluster Valkey o Redis OSS (modalità cluster abilitata) con più frammenti?
Cluster Valkey o Redis OSS (modalità cluster disattivata)
Se stai implementando un cluster Valkey o Redis OSS (modalità cluster disabilitata), il tipo di nodo deve essere in grado di contenere tutti i tuoi dati più l'overhead necessario, come descritto nel punto precedente.
Si supponga, ad esempio, di stimare che la dimensione totale di tutti gli articoli sia di 12 GB. In questo caso, puoi utilizzare un
cache.m5.xlargenodo con 12,93 GB di memoria o uncache.r5.largenodo con 13,07 GB di memoria. Tuttavia, potrebbe occorrere più memoria per le operazioni diBGSAVE. Se l'applicazione è pesante da scrivere, raddoppiare i requisiti di memoria fino ad almeno 24 GB. Pertanto, usa acache.m5.2xlargecon 26,04 GB di memoria o acache.r5.xlargecon 26,32 GB di memoria.Valkey o Redis OSS (modalità cluster abilitata) con più frammenti
Se stai implementando un cluster Valkey o Redis OSS (modalità cluster abilitata) con più shard, il tipo di nodo deve essere in grado di contenere byte di dati.
bytes-for-data-and-overhead / number-of-shardsSe, ad esempio, stimi in 12 GB la dimensione totale di tutti gli elementi e disponi di due partizioni. In questo caso, puoi utilizzare un
cache.m5.largenodo con 6,38 GB di memoria (12 GB/2). Tuttavia, potrebbe occorrere più memoria per le operazioni diBGSAVE. Se l'applicazione è pesante da scrivere, raddoppiare i requisiti di memoria fino ad almeno 12 GB per partizioni. Pertanto, usa acache.m5.xlargecon 12,93 GB di memoria o acache.r5.largecon 13,07 GB di memoria. -
Stai usando Local Zones?
Le zone locali consentono di collocare risorse come un ElastiCache cluster in più posizioni vicino agli utenti. Tuttavia, quando si sceglie la dimensione del nodo, tenere presente che le dimensioni dei nodi disponibili sono limitate alle seguenti al momento, indipendentemente dai requisiti di capacità:
-
Generazione attuale:
Tipi di nodi M5:
cache.m5.large,cache.m5.xlarge,cache.m5.2xlarge,cache.m5.4xlarge,cache.m5.12xlarge,cache.m5.24xlargeTipi di nodi R5:
cache.r5.large,cache.r5.xlarge,cache.r5.2xlarge,cache.r5.4xlarge,cache.r5.12xlarge,cache.r5.24xlargeTipi di nodo T3:
cache.t3.micro,cache.t3.small,cache.t3.medium
-
Mentre il cluster è in esecuzione, puoi monitorare l'utilizzo della memoria, l'utilizzo del processore, gli accessi alla cache e gli errori nella cache su cui vengono pubblicate. CloudWatch È possibile notare che il cluster non ha la frequenza di accessi desiderata o che le chiavi vengono espulse troppo spesso. In questi casi, puoi scegliere una dimensione di nodi diversa con specifiche di memoria e CPU maggiori.
Quando monitorate l'utilizzo della CPU, ricordate che Valkey e Redis OSS sono a thread singolo. Pertanto, moltiplica l'utilizzo della CPU segnalato per il numero di core CPU per ottenere l'effettivo utilizzo. Ad esempio, una CPU a quattro core che riporta un tasso di utilizzo del 20% è in realtà l'unico core Redis OSS in esecuzione con un utilizzo dell'80%.
Dimensione del nodo (Memcached)
I cluster Memcached possono contenere uno o più nodi, tra i quali ripartire i propri dati. Per questo motivo, le esigenze di memoria del cluster e la memoria di un nodo sono correlate, ma non corrispondenti. La necessaria capacità di memoria del cluster può contare su pochi nodi grandi o molti nodi piccoli. Inoltre, in base alle mutevoli esigenze, è possibile aggiungere nodi al cluster o rimuoverli in qualunque momento, pagando solo ciò che occorre.
La capacità di memoria totale del cluster viene calcolata moltiplicando il numero di nodi nel cluster per la capacità di RAM di ciascun nodo, al netto del carico operativo del sistema. La capacità di un nodo dipende dalla sua tipologia.
cluster_capacity = number_of_nodes * (node_capacity - system_overhead)
Il numero dei suoi nodi è un fattore determinante per la disponibilità di un cluster che esegue Memcached. Il fallimento di un solo nodo può influire sulla disponibilità dell'applicazione e sul carico sul database back-end. In tal caso, ElastiCache fornisce un sostituto per un nodo guasto e questo viene ripopolato. Per ridurre questo potenziale impatto sulla disponibilità, basta distribuire la memoria e la capacità di calcolo su più nodi a capacità ridotta, anziché su meno nodi ad ampia capacità.
Se, ad esempio, occorrono 35 GB di memoria cache, è possibile impostare una qualsiasi delle seguenti configurazioni:
-
11 nodi
cache.t2.medium, ciascuno con 3,22 GB di memoria e 2 thread = 35,42 GB e 22 thread. -
6 nodi
cache.m4.large, ciascuno con 6,42 GB di memoria e 2 thread = 38,52 GB e 12 thread. -
3 nodi
cache.r4.large, ciascuno con 12,3 GB di memoria e 2 thread = 36,90 GB e 6 thread. -
3 nodi
cache.m4.xlarge, ciascuno con 14,28 GB di memoria e 4 thread = 42,84 GB e 12 thread.
| Tipo di nodo | Memoria (in GB) | Core | Costo orario* | Nodi necessari | Memoria totale (in GiB) | Core totali | Costo mensile |
|---|---|---|---|---|---|---|---|
| cache.t2.medium | 3.22 | 2 | 0,068 $ | 11 | 35,42 | 22 | 538,56 $ |
| cache.m4.large | 6,42 | 2 | 0,156 $ | 6 | 38,52 | 12 | 673,92 $ |
| cache.m4.xlarge | 14,28 | 4 | 0,311 $ | 3 | 42,84 | 12 | 671,76 $ |
| cache.m5.xlarge | 12,93 | 4 | 0,311 $ | 3 | 38,81 | 12 | 671,76 $ |
| cache.m6g.large | 6,85 | 2 | $0,147 | 6 | 41,1 | 12 | $635 |
| cache.r4.large | 12.3 | 2 | 0,228 $ | 3 | 36,9 | 6 | 492,48 $ |
| cache.r5.large | 13,07 | 2 | 0,216 $ | 3 | 39,22 | 6 | 466,56 $ |
| cache.r6g.large | 13,07 | 2 | 0,205$ | 3 | 42,12 | 6 | $442 |
| * Costo orario per nodo dall’8 ottobre 2020. | |||||||
| † Costo mensile al 100% di utilizzo per 30 giorni (720 ore). |
Ognuna di queste opzioni offre una disponibilità di memoria simile, ma capacità e costi di elaborazione diversi. Per confrontare i costi delle tue opzioni specifiche, consulta Amazon ElastiCache Pricing
Nel caso dei cluster che eseguono Memcached, parte della memoria disponibile su ciascun nodo viene utilizzata per la gestione della connessione. Per ulteriori informazioni, consulta Sovraccarico delle connessioni Memcached
L'utilizzo di più nodi richiede la distribuzione delle chiavi tra gli stessi. Ogni nodo dispone del proprio endpoint. Per una facile gestione degli endpoint, puoi utilizzare ElastiCache la funzione Auto Discovery, che consente ai programmi client di identificare automaticamente tutti i nodi di un cluster. Per ulteriori informazioni, consulta Identifica automaticamente i nodi del cluster (Memcached).
In alcuni casi, è possibile non essere sicuri di quanta capacità è necessaria. In caso affermativo, per i test consigliamo di iniziare con un cache.m5.large nodo. Quindi monitora l'utilizzo della memoria, l'utilizzo della CPU e il tasso di successo della cache con le ElastiCache metriche pubblicate su Amazon. CloudWatch Per ulteriori informazioni sulle CloudWatch metriche per ElastiCache, consulta. Monitoraggio dell'utilizzo con CloudWatch Metrics Per carichi di lavoro di produzione particolarmente consistenti, i nodi R5 garantiscono le prestazioni e il valore di costo della RAM migliori.
Se il cluster non garantisce l'hit rate desiderato, basta aggiungere più nodi, aumentando così la memoria totale in esso disponibile.
Se il cluster risulta vincolato dalla CPU ma, comunque, con un hit rate sufficiente, prova a configurare un nuovo cluster con un tipo di nodo che garantisca maggiore potenza di calcolo.