Nesta página, descrevemos como o cluster no Memorystore for Redis Cluster se comporta durante o escalonamento.
É possível escalonar a capacidade do cluster das seguintes maneiras:
É possível alterar o número de fragmentos do cluster. Isso é o escalonamento horizontal. É possível escalonar um cluster horizontalmente de uma das seguintes maneiras:
Escalonar horizontalmente: aumente a capacidade do cluster, o que dá a ele mais memória e capacidade de processamento para lidar com um volume maior de dados ou tráfego. A capacidade do cluster é determinada pelo número de fragmentos nele.
Ao escalonar horizontalmente o cluster, o aplicativo pode lidar com um aumento na demanda sem degradação do desempenho. Para escalonar um cluster horizontalmente, adicione fragmentos a ele.
Reduzir: diminua a capacidade do cluster, o que reduz 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 reduzir um cluster, diminua o número de fragmentos nele.
É possível mudar o tipo de nó do cluster. Isso é o escalonamento vertical. É possível escalonar um cluster verticalmente de uma das seguintes maneiras:
- Escalonar verticalmente: aumentar a capacidade do cluster. A capacidade do cluster é determinada pelo tipo de nó do cluster. Para escalonar um cluster verticalmente,
mude o tipo de nó para um maior. Por exemplo, faça o escalonamento vertical do cluster
de um tipo de nó
redis-standard-smallpara um tipo de nóredis-highmem-medium. Reduzir escala vertical: diminua a capacidade do cluster. Para reduzir um cluster, mude o tipo de nó para um menor. Por exemplo, reduza o cluster de um tipo de nó
redis-highmem-mediumpara um tipo de nóredis-standard-small.
- Escalonar verticalmente: aumentar a capacidade do cluster. A capacidade do cluster é determinada pelo tipo de nó do cluster. Para escalonar um cluster verticalmente,
mude o tipo de nó para um maior. Por exemplo, faça o escalonamento vertical do cluster
de um tipo de nó
Impacto do escalonamento
Durante uma operação de escalonamento, a disponibilidade do cluster não é afetada. No entanto, quando você muda o número de fragmentos no cluster, o Memorystore for Redis Cluster reequilibra o keyspace do cluster. Isso pode aumentar a latência durante a operação de escalonamento.
Além disso, o impacto do escalonamento vertical do cluster ao mudar 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 do cluster, mas não tem memória livre suficiente para o tipo de nó
redis-shared-core-nanodo cluster.Para resolver esse problema, dimensione o cluster ou libere memória dos nós do cluster. Para liberar memória, faça o seguinte:
- Conecte-se a um cluster.
- Para ver detalhes sobre o cluster, incluindo o endereço IP e o número da porta, use o comando
gcloud redis clusters describe. - Anote o endereço IP e o número da porta do cluster.
Para receber informações sobre os nós do cluster, 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.
Anote o endereço IP e o número da porta de um nó que não tenha espaço livre suficiente. O ID desse nó corresponde a um ID que aparece no erro.
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.
No prompt, digite o comando
info memory.Na saída, os valores dos parâmetros
used_memoryemaxmemoryaparecem.used_memoryé a quantidade de memória que o nó usa emaxmemoryé a quantidade de memória disponível para o nó.Divida o valor do parâmetro
used_memorypelo valor do parâmetromaxmemorye verifique se o quociente é maior que 98%.Para liberar espaço para o nó, exclua algumas das chaves dele.
Digite o comando
info memorynovamente. Na saída, o valor do parâmetroused_memoryé menor.Divida o valor do parâmetro
used_memorypelo valor do parâmetromaxmemorye verifique se o quociente agora é menor que 98%. Se não estiver, exclua mais chaves.Para outros nós que não têm espaço livre suficiente, repita as etapas 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 no cluster original. Para resolver isso, aumente o número de fragmentos para que ele possa armazenar todas as chaves. Para mais informações sobre como aumentar o número de fragmentos do cluster, 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 acontecer, o Memorystore for Redis Cluster vai fornecer um tipo de nó recomendado para reduzir escala vertical verticalmente.
Você atualizou o tipo de nó do cluster 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 é compatível com os 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 sejam válidas para o novo tipo de nó.
Você escalonou o cluster durante um período de alta pressão de gravação (por exemplo, durante o teste de carga). Para resolver isso, faça o escalonamento durante períodos de baixo tráfego no cluster.
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 aceitar a chave. Não é possível atualizar o cluster. Para resolver isso, reduza o tamanho da chave para menos de 128 MB. Em seguida, tente realizar a operação de atualização novamente.
O número do slot que um nó de um cluster possui não é conhecido, mas apenas o intervalo de slots é conhecido. 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 para a contagem de fragmentos original, que é maior.
Práticas recomendadas
Para ajudar a escalonar a capacidade do cluster, recomendamos as seguintes práticas recomendadas:
- Escolha quando escalonar: para aumentar a velocidade e a confiabilidade do escalonamento do cluster, faça isso durante períodos de baixo tráfego. Para saber como monitorar o tráfego do cluster, consulte Monitorar clusters.
- Tente novamente quando não for possível escalonar: a disponibilidade de recursos muda com frequência. Se não for possível escalonar o cluster devido a uma restrição temporária de recursos, tente escaloná-lo mais tarde.