Sobre o escalonamento da capacidade da instância

Nesta página, descrevemos como o comportamento da instância do Memorystore for Redis Cluster durante o escalonamento.

É possível escalonar a capacidade da instância das seguintes maneiras:

  • Você pode mudar o número de fragmentos da instância. Isso é o escalonamento horizontal. É possível escalonar uma instância horizontalmente de uma das seguintes maneiras:

    • Escalonar horizontalmente: aumenta a capacidade da instância, o que oferece mais memória e poder de processamento para lidar com um volume maior de dados ou tráfego. A capacidade da instância é determinada pelo número de fragmentos nela.

      Ao escalonar horizontalmente a instância, o aplicativo pode lidar com um aumento na demanda sem degradação de desempenho. Para escalonar horizontalmente uma instância, adicione fragmentos a ela.

    • Reduzir escalonamento horizontal: reduz a capacidade da instância, o que diminui o poder de processamento e a quantidade de memória disponível para armazenar dados. Isso ocorre quando as demandas de dados do aplicativo diminuem e você precisa reduzir o uso de recursos para economizar custos. Para escalonar verticalmente uma instância, reduza o número de fragmentos nela.

  • É possível mudar o tipo de nó da instância. Isso é o escalonamento vertical. É possível escalonar uma instância verticalmente de uma das seguintes maneiras:

    • Escalonar verticalmente: aumenta a capacidade da instância. A capacidade da instância é determinada pelo tipo de nó dela. Para escalonar verticalmente uma instância, mude o tipo de nó para um maior. Por exemplo, escalone verticalmente a instância de um tipo de nó redis-standard-small para um tipo de nó redis-highmem-medium.
    • Reduzir escala vertical: reduz a capacidade da instância. Para escalonar verticalmente uma instância, mude o tipo de nó para um menor. Por exemplo, escalone verticalmente a instância de um tipo de nó redis-highmem-medium para um tipo de nó redis-standard-small.

Impacto do escalonamento

Durante uma operação de escalonamento, a disponibilidade da instância não é afetada. No entanto, quando você muda o número de fragmentos na instância, o Memorystore for Redis Cluster reequilibra o keyspace da instância. Isso pode causar aumento da latência durante a operação de escalonamento.

Além disso, o impacto do escalonamento vertical da instância mudando o tipo de nó é semelhante ao que acontece com uma operação de manutenção.

Cenários de falha

Se você encontrar um erro durante a operação de escalonamento, é provável que seja devido a um dos seguintes cenários:

  • Você quer atualizar a contagem de fragmentos da instância, mas não tem memória livre suficiente para o tipo de nó redis-shared-core-nano.

    Para resolver esse problema, você pode escalonar verticalmente a instância ou liberar memória dos nós de sua instância. Para liberar memória, faça o seguinte:

    1. Conecte-se a uma instância do Memorystore for Redis Cluster.
    2. Para receber detalhes sobre a instância, incluindo o endereço IP e o número da porta, use o comando gcloud redis clusters describe.
    3. Anote o endereço IP e o número da porta da instância.
    4. Para receber informações sobre os nós da instância, use o seguinte comando:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER cluster nodes
      

      Substitua IP_ADDRESS e PORT_NUMBER pelos valores que você anotou na etapa anterior.

    5. Anote o endereço IP e o número da porta de um nó que não tem espaço livre suficiente. O ID desse nó corresponde a um ID que aparece no erro.

    6. Para se conectar a esse nó, use o seguinte comando:

      redis-cli -h IP_ADDRESS -p PORT_NUMBER
      

      Substitua IP_ADDRESS e PORT_NUMBER pelos valores que você anotou na etapa anterior.

    7. No prompt, insira o comando info memory.

      Na saída, aparecem valores para os parâmetros used_memory e maxmemory. used_memory é a quantidade de memória que o nó usa e maxmemory é a quantidade de memória disponível para o nó.

    8. Divida o valor do parâmetro used_memory pelo valor do parâmetro maxmemory e verifique se o quociente é maior que 98%.

    9. Para liberar espaço para o nó, exclua algumas das chaves dele.

    10. Insira o comando info memory novamente. Na saída, o valor do parâmetro used_memory é menor.

    11. Divida o valor do parâmetro used_memory pelo valor do parâmetro maxmemory e verifique se o quociente agora é menor que 98%. Se não for, exclua mais chaves.

    12. Para outros nós que não têm espaço livre suficiente, repita as etapas de 4 a 11 deste procedimento.

  • Você escalonou para uma contagem de fragmentos menor que não tem capacidade para armazenar todas as chaves que o Memorystore for Redis Cluster armazena na instância original. Para resolver isso, escalone para uma contagem de fragmentos maior que possa armazenar todas as chaves armazenadas. Para mais informações sobre como aumentar o número de fragmentos da instância, consulte Escalonar a contagem de fragmentos.

  • Você escalonou para um tipo de nó menor que não tem capacidade para armazenar todos os dados que o Memorystore for Redis Cluster armazena no tipo de nó original. Se isso ocorrer, o Memorystore for Redis Cluster vai fornecer um tipo de nó recomendado para reduzir escala vertical.

  • Você atualizou o tipo de nó da instância e substituiu as configurações padrão do tipo de nó original ou essas configurações já foram substituídas. No entanto, o novo tipo de nó escalonado não oferece suporte aos valores das configurações padrão ou as configurações não são válidas para o tipo de nó. Se isso ocorrer, o Memorystore for Redis Cluster vai retornar um erro. Para resolver isso, modifique as configurações manualmente para que elas sejam válidas para o novo tipo de nó.

  • Você escalonou a instância durante um período de alta pressão de gravação (por exemplo, durante o teste de carga). Para resolver isso, escalone durante períodos de baixo tráfego de instâncias.

  • Você tem um slot que contém uma chave grande e quer migrar essa chave para outro nó. No entanto, esse nó não tem memória suficiente para oferecer suporte à chave. Não é possível atualizar o cluster. Para resolver isso, reduza o tamanho da chave para que ela seja menor que 128 MB. Em seguida, tente novamente a operação de atualização.

  • O número de slots que um nó de um cluster possui não é conhecido, mas apenas o intervalo de slots. O Memorystore for Redis Cluster retorna uma mensagem de erro. Se isso ocorrer, reduza o tamanho da chave e tente novamente a operação de atualização.

  • Você aumentou a capacidade do cluster escalonando horizontalmente para uma contagem de fragmentos menor. No entanto, o Memorystore for Redis Cluster não tem memória suficiente para acomodar essa solicitação. Para resolver isso, reduza a capacidade do cluster escalonando verticalmente para a contagem de fragmentos original e maior.

Práticas recomendadas

Para ajudar a escalonar a capacidade da instância e aumentar a velocidade e a confiabilidade do escalonamento, faça isso durante períodos de baixo tráfego, sempre que possível. Para saber como monitorar o tráfego da instância, consulte Monitorar clusters.