Informazioni sulla scalabilità della capacità delle istanze

Questa pagina descrive il comportamento dell'istanza Memorystore for Redis Cluster durante lo scaling.

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

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

    • Scale out: aumenta la capacità dell'istanza, che dispone di 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.

      Scalando l'istanza, l'applicazione può gestire una domanda maggiore senza un calo delle prestazioni. Per scalare orizzontalmente un'istanza, aggiungi shard all'istanza.

    • Riduzione dello scale: riduci la capacità della tua istanza, il che diminuisce sia la potenza di elaborazione sia la quantità di memoria disponibile per archiviare i dati. Ciò si verifica quando le richieste di dati della tua applicazione diminuiscono e devi ridurre l'utilizzo delle risorse per risparmiare sui costi. Per ridurre le dimensioni di un'istanza, diminuisci il numero di shard nell'istanza.

  • Puoi modificare il tipo di nodo per l'istanza. Si tratta di scalabilità verticale. Puoi scalare un'istanza verticalmente in uno dei seguenti modi:

    • Scalabilità verticale: aumenta la capacità dell'istanza. La capacità dell'istanza è determinata dal tipo di nodo dell'istanza. Per scalare un'istanza, cambia il tipo di nodo con un tipo di nodo più grande. Ad esempio, aumenta le dimensioni dell'istanza da un tipo di nodo redis-standard-small a un tipo di nodo redis-highmem-medium.
    • Scale down: riduci la capacità dell'istanza. Per ridurre le dimensioni di un'istanza, modifica il tipo di nodo in un tipo di nodo più piccolo. Ad esempio, ridimensiona la tua istanza da un tipo di nodo redis-highmem-medium a un tipo di nodo redis-standard-small.

Impatto dello scaling

Durante un'operazione di scalabilità, la disponibilità dell'istanza non viene interessata. 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 dello scalabilità verticale dell'istanza modificando il tipo di nodo è simile a quello che si verifica con un'operazione di manutenzione.

Scenari di errore

Se si verifica un errore durante l'operazione di scalabilità, il motivo è probabilmente uno dei seguenti scenari:

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

    Per risolvere il problema, puoi scalare la tua istanza o liberare memoria dai nodi dell'istanza. Per liberare memoria:

    1. Connettiti a un'istanza Memorystore for Redis Cluster.
    2. Per visualizzare i dettagli dell'istanza, inclusi l'indirizzo IP e il numero di porta, utilizza il comando gcloud redis clusters describe.
    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. Nel prompt, inserisci il comando info memory.

      Nell'output vengono visualizzati i valori dei parametri used_memory e maxmemory. used_memory è la quantità di memoria utilizzata dal nodo e maxmemory è 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 superiore al 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 up a un numero inferiore di shard che non hanno 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 numero maggiore di shard 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 a un tipo di nodo più piccolo che non ha la capacità di contenere tutti i dati archiviati da Memorystore for Redis Cluster nel tipo di nodo originale. In questo caso, Memorystore for Redis Cluster ti fornisce un tipo di nodo consigliato per fare lo scale down verticale.

  • Hai aggiornato il tipo di nodo per l'istanza e hai sovrascritto le impostazioni predefinite per il tipo di nodo originale o 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 lo scale durante i periodi di traffico ridotto delle istanze.

  • 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 dispone di memoria sufficiente per supportare la chiave. Di conseguenza, non puoi aggiornare il cluster. Per risolvere il problema, riduci le dimensioni della chiave e riprova l'operazione di aggiornamento.

  • Il numero di slot di proprietà di un nodo di un cluster non è noto, ma è nota solo la gamma 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 eseguito lo scale out a un numero inferiore di shard, ma Memorystore for Redis Cluster non ha memoria sufficiente per soddisfare questa richiesta. Per risolvere il problema, esegui fare lo scale in fino al conteggio di shard originale più elevato.

Best practice

Per aiutarti a scalare la capacità della tua istanza e per aumentare la velocità e l'affidabilità della scalabilità dell'istanza, esegui lo scale up durante i periodi di traffico ridotto, quando possibile. Per scoprire come monitorare il traffico delle istanze, consulta Monitorare i cluster.