Informazioni sulla scalabilità della capacità delle istanze

Questa pagina descrive il comportamento dell'istanza di Memorystore for Redis Cluster durante la scalabilità.

Puoi scalare la capacità della tua istanza nei seguenti modi:

  • Puoi modificare il numero di shard per la tua istanza. Questa operazione è detta scalabilità orizzontale. Puoi scalare un'istanza orizzontalmente in uno dei seguenti modi:

    • Scale out: aumenta la capacità dell'istanza, che avrà a disposizione più memoria e potenza di elaborazione per gestire un volume maggiore di dati o traffico. La capacità dell'istanza è determinata dal numero di shard nell'istanza.

      Eseguendo lo scale out dell'istanza, la tua applicazione può gestire una maggiore domanda senza un peggioramento delle prestazioni. Per eseguire lo scale out di un'istanza, aggiungi shard all'istanza.

    • Scale in: riduci la capacità dell'istanza, diminuendo sia la potenza di elaborazione sia la quantità di memoria disponibile per l'archiviazione dei dati. Questa operazione si verifica quando le richieste di dati della tua applicazione diminuiscono e devi ridurre l'utilizzo delle risorse per risparmiare sui costi. Per eseguire lo scale in di un'istanza, riduci il numero di shard nell'istanza.

  • Puoi modificare il tipo di nodo per la tua istanza. Questa operazione è detta scalabilità verticale. Puoi scalare un'istanza verticalmente in uno dei seguenti modi:

    • Fare lo scale up: aumenta la capacità dell'istanza. La capacità dell'istanza è determinata dal tipo di nodo dell'istanza. Per eseguire lo scale up di un'istanza, modifica il tipo di nodo in un tipo di nodo più grande. Ad esempio, esegui lo scale up dell'istanza da un tipo di nodo redis-standard-small a un tipo di nodo redis-highmem-medium.
    • Fare lo scale down: riduci la capacità dell'istanza. Per eseguire lo scale down di un'istanza, modifica il tipo di nodo in un tipo di nodo più piccolo. Ad esempio, esegui lo scale down dell'istanza da un tipo di nodo redis-highmem-medium a un tipo di nodo redis-standard-small.

Impatto della scalabilità

Durante un'operazione di scalabilità, la disponibilità dell'istanza non viene compromessa. Tuttavia, quando modifichi il numero di shard nell'istanza, Memorystore for Redis Cluster ribilancia lo spazio delle chiavi dell'istanza. Ciò potrebbe causare un aumento della latenza durante l'operazione di scalabilità.

Inoltre, l'impatto della scalabilità verticale dell'istanza modificando il tipo di nodo è simile a quello di un'operazione di manutenzione.

Scenari di errore

Se si verifica un errore durante l'operazione di scalabilità, è probabile che sia dovuto a uno dei seguenti scenari:

  • Vuoi aggiornare il conteggio degli shard per la tua istanza, ma non hai memoria libera sufficiente per il tipo di nodo redis-shared-core-nano per la tua istanza.

    Per risolvere il problema, puoi eseguire lo scale up dell'istanza o liberare memoria dai nodi della tua istanza. Per liberare memoria:

    1. Connettiti a un'istanza di Memorystore for Redis Cluster.
    2. Per visualizzare i dettagli dell'istanza, inclusi l'indirizzo IP e il numero di porta, utilizza il gcloud redis clusters describe comando.
    3. Prendi nota dell'indirizzo IP e del numero di porta dell'istanza.
    4. Per ottenere informazioni sui nodi dell'istanza, utilizza il seguente comando:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      Sostituisci IP_ADDRESS e PORT_NUMBER con i valori che hai annotato nel passaggio precedente.

    5. Prendi nota dell'indirizzo IP e del numero di porta di un nodo che non ha spazio libero sufficiente. L'ID di questo nodo corrisponde a un ID visualizzato nell'errore.

    6. Per connetterti a questo nodo, utilizza il seguente comando:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      Sostituisci IP_ADDRESS e PORT_NUMBER con i valori che hai annotato nel passaggio precedente.

    7. Al prompt, inserisci il comando info memory.

      Nell'output vengono visualizzati i valori dei parametri used_memory e maxmemory. used_memory indica la quantità di memoria utilizzata dal nodo e maxmemory indica la quantità di memoria disponibile per il nodo.

    8. Dividi il valore del parametro used_memory per il valore del parametro maxmemory e verifica che il quoziente sia maggiore del 98%.

    9. Per liberare spazio per il nodo, elimina alcune delle chiavi del nodo.

    10. Inserisci di nuovo il comando info memory. Nell'output, il valore del parametro used_memory è inferiore.

    11. Dividi il valore del parametro used_memory per il valore del parametro maxmemory e verifica che il quoziente sia ora inferiore al 98%. In caso contrario, elimina altre chiavi.

    12. Per tutti gli altri nodi che non hanno spazio libero sufficiente, ripeti i passaggi da 4 a 11 di questa procedura.

  • Hai eseguito lo scale down a un conteggio degli shard inferiore che non ha la capacità di contenere tutte le chiavi che Memorystore for Redis Cluster archivia nell'istanza originale. Per risolvere il problema, esegui lo scale up a un conteggio degli shard maggiore in grado di contenere tutte le chiavi archiviate. Per ulteriori informazioni su come aumentare il numero di shard per l'istanza, consulta Scalare il conteggio degli shard.

  • Hai eseguito lo scale down a un tipo di nodo più piccolo che non ha la capacità di contenere tutti i dati che Memorystore for Redis Cluster archivia nel tipo di nodo originale. In questo caso, Memorystore for Redis Cluster ti fornisce un tipo di nodo consigliato per eseguire fare lo scale down verticale.

  • Hai aggiornato il tipo di nodo per la tua istanza e hai sovrascritto le impostazioni predefinite per il tipo di nodo originale oppure queste impostazioni sono già state sovrascritte. Tuttavia, il nuovo tipo di nodo scalato non supporta i valori per le impostazioni predefinite oppure le impostazioni non sono valide per il tipo di nodo. In questo caso, Memorystore for Redis Cluster restituisce un errore. Per risolvere il problema, modifica manualmente le impostazioni in modo che siano valide per il nuovo tipo di nodo.

  • Hai scalato l'istanza durante un periodo di elevata pressione di scrittura (ad esempio, durante il test di carico). Per risolvere il problema, esegui la scalabilità durante i periodi di traffico ridotto dell'istanza.

  • Hai uno slot che contiene una chiave di grandi dimensioni e vuoi eseguire la migrazione di questa chiave a un altro nodo. Tuttavia, questo nodo non ha memoria sufficiente per supportare la chiave. Non puoi aggiornare il cluster. Per risolvere il problema, riduci le dimensioni della chiave in modo che siano inferiori a 128 MB. Quindi, riprova l'operazione di aggiornamento.

  • Il numero di slot di proprietà di un nodo di un cluster non è noto, ma è noto solo l'intervallo di slot. Memorystore for Redis Cluster restituisce un messaggio di errore. In questo caso, riduci le dimensioni della chiave e riprova l'operazione di aggiornamento.

  • Hai aumentato la capacità del cluster eseguendo lo scale out a un conteggio degli shard inferiore. Tuttavia, Memorystore for Redis Cluster non ha memoria sufficiente per soddisfare questa richiesta. Per risolvere il problema, riduci la capacità del cluster eseguendo lo scale in al conteggio degli shard originale e più grande.

Best practice

Per scalare la capacità dell'istanza e aumentare la velocità e l'affidabilità della scalabilità dell'istanza, esegui la scalabilità durante i periodi di traffico ridotto, quando possibile. Per scoprire come monitorare il traffico dell'istanza, consulta Monitorare i cluster.