Introdução
Neste laboratório, você aprenderá como gerenciar um cluster Redis. O laboratório se concentra em tarefas essenciais de gerenciamento de cluster, incluindo a inicialização de um cluster, adição de nós, verificação da integridade do cluster e resharding de slots.
Começaremos inicializando um cluster Redis usando o comando redis-cli --cluster, que automatiza a configuração inicial. Em seguida, você aprenderá a adicionar um novo nó usando CLUSTER MEET. Depois, você verificará a integridade do cluster com CLUSTER INFO. Finalmente, você fará o resharding de slots entre os nós usando CLUSTER SETSLOT para balancear o cluster.
Inicialize o Cluster Redis
Nesta etapa, você inicializará um cluster Redis usando o comando redis-cli --cluster create. Este comando simplifica o processo de configuração de um cluster Redis funcional.
O que é um Cluster Redis?
Um cluster Redis é uma configuração distribuída que divide automaticamente os dados em vários nós Redis. Isso permite que você dimensione sua implantação Redis horizontalmente e gerencie conjuntos de dados maiores do que uma única instância Redis pode lidar.
Por que usar redis-cli --cluster create?
O comando redis-cli --cluster create fornece uma maneira direta de criar, gerenciar e interagir com um cluster Redis. Ele automatiza a configuração inicial e a descoberta de nós, facilitando a criação do cluster.
Passos:
Iniciar Instâncias Redis:
Primeiro, você precisa configurar e iniciar várias instâncias Redis. Para este laboratório, usaremos seis instâncias em execução nas portas 7000 a 7005. Cada instância precisa ser configurada com
cluster-enabled yes.Para fazer isso, você pode usar os seguintes comandos para criar arquivos de configuração e iniciar as instâncias Redis. Observe que esses comandos são para fins de demonstração. O script de configuração já configurou e iniciou essas instâncias para você.
REDIS_CONF="/etc/redis/redis.conf" for port in 7000 7001 7002 7003 7004 7005; do CONF_FILE="/etc/redis/redis-${port}.conf" sudo cp "$REDIS_CONF" "$CONF_FILE" sudo sed -i "s/^port 6379/port ${port}/g" "$CONF_FILE" sudo sed -i "s/^#cluster-enabled yes/cluster-enabled yes/g" "$CONF_FILE" sudo sed -i "s/^#cluster-config-file nodes.conf/cluster-config-file nodes-${port}.conf/g" "$CONF_FILE" sudo sed -i "s/^#cluster-node-timeout 15000/cluster-node-timeout 15000/g" "$CONF_FILE" sudo sed -i "s/^#appendonly no/appendonly yes/g" "$CONF_FILE" sudo redis-server "$CONF_FILE" & done sleep 5Criar o Cluster:
Agora, use o comando
redis-cli --cluster createpara criar o cluster. Este comando requer os endereços IP e as portas dos nós iniciais.Abra seu terminal e execute o seguinte comando:
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1redis-cli --cluster create: Inicia o processo de criação do cluster.127.0.0.1:7000 127.0.0.1:7001 ... 127.0.0.1:7005: Os endereços e portas das instâncias Redis.--cluster-replicas 1: Especifica que cada nó mestre deve ter uma réplica.
Confirmar a Criação do Cluster:
A ferramenta
redis-clipedirá que você confirme a criação do cluster. Digiteyese pressione Enter.>>> Creating cluster >>> Performing hash slots allocation on 6 nodes... >>> Master[0] -> Slots 0 - 5460 >>> Master[1] -> Slots 5461 - 10922 >>> Master[2] -> Slots 10923 - 16383 >>> Adding replica node to Master[0] >>> Adding replica node to Master[1] >>> Adding replica node to Master[2] >>> M: 49a4928719291928192819281928192819281928 127.0.0.1:7000 slots:[0-5460] (5461 slots) master >>> M: 9281928192819281928192819281928192819281 127.0.0.1:7001 slots:[5461-10922] (5462 slots) master >>> M: 19281928192819281928192819281928192819281 127.0.0.1:7002 slots:[10923-16383] (5461 slots) master >>> S: 81928192819281928192819281928192819281928 127.0.0.1:7003 replicates 49a4928719291928192819281928192819281928 >>> S: 28192819281928192819281928192819281928192 127.0.0.1:7004 replicates 9281928192819281928192819281928192819281 >>> S: 928192819281928192819281928192819281928192 127.0.0.1:7005 replicates 19281928192819281928192819281928192819281 >>> Can I set the above configuration? (type 'yes' to accept): yes >>> Slots 0-5460 assigned to node 49a4928719291928192819281928192819281928 >>> Slots 5461-10922 assigned to node 9281928192819281928192819281928192819281 >>> Slots 10923-16383 assigned to node 19281928192819281928192819281928192819281 >>> Adding replica 81928192819281928192819281928192819281928 to 49a4928719291928192819281928192819281928 >>> Adding replica 28192819281928192819281928192819281928192 to 9281928192819281928192819281928192819281 >>> Adding replica 928192819281928192819281928192819281928192 to 19281928192819281928192819281928192819281 >>> [OK] All nodes agree about the cluster configuration. >>> >>> Check cluster info >>> >>> Nodes >>> M: 49a4928719291928192819281928192819281928 127.0.0.1:7000 slots:[0-5460] (5461 slots) master 1 additional replica(s) >>> M: 9281928192819281928192819281928192819281 127.0.0.1:7001 slots:[5461-10922] (5462 slots) master 1 additional replica(s) >>> M: 19281928192819281928192819281928192819281 127.0.0.1:7002 slots:[10923-16383] (5461 slots) master 1 additional replica(s) >>> S: 81928192819281928192819281928192819281928 127.0.0.1:7003 replicates 49a4928719291928192819281928192819281928 >>> S: 28192819281928192819281928192819281928192 127.0.0.1:7004 replicates 9281928192819281928192819281928192819281 >>> S: 928192819281928192819281928192819281928192 127.0.0.1:7005 replicates 19281928192819281928192819281928192819281 >>> [OK] All nodes agree about the cluster configuration. >>> All 16384 slots covered.Esta saída mostra a alocação de slots para cada nó mestre e a atribuição de réplicas.
Conectar ao Cluster:
Conecte-se ao cluster Redis usando
redis-cli. Isso permite que você execute comandos no cluster.redis-cli -h 127.0.0.1 -p 7000Sair do
redis-cli:Saia da sessão
redis-clipara garantir que o comando seja registrado.exit
Você inicializou com sucesso um cluster Redis. Nas próximas etapas, exploraremos como adicionar nós, verificar a integridade do cluster e fazer resharding de slots.
Adicione um Novo Nó ao Cluster
Nesta etapa, você aprenderá como adicionar um novo nó a um cluster Redis existente usando o comando CLUSTER MEET. Este comando é essencial para expandir a capacidade do seu cluster e garantir alta disponibilidade.
Entendendo CLUSTER MEET
O comando CLUSTER MEET introduz um novo nó Redis ao cluster. Quando um nó recebe este comando, ele tenta se conectar ao nó especificado e iniciar o processo de handshake para se tornar parte do cluster.
Pré-requisitos:
- Um cluster Redis inicializado conforme descrito na etapa anterior.
- Uma nova instância Redis em execução e configurada para fazer parte do cluster, mas ainda não conectada. Para este laboratório, assumiremos que você tem uma nova instância em execução na porta 7006. Esta instância deve ser iniciada com a opção de configuração
cluster-enabled yes. O script de configuração já configurou e iniciou esta instância para você.
Passos:
Conectar a um Nó Existente:
Conecte-se a um dos nós existentes no cluster usando
redis-cli. Não importa a qual nó você se conecta, pois o comandoCLUSTER MEETpropagará as informações por todo o cluster.redis-cli -h 127.0.0.1 -p 7000Usar o Comando
CLUSTER MEET:Agora que você está conectado a um nó no cluster, use o comando
CLUSTER MEETpara introduzir o novo nó (porta 7006).CLUSTER MEET 127.0.0.1 7006CLUSTER MEET: O comando para adicionar um novo nó.127.0.0.1: O endereço IP do novo nó.7006: O número da porta do novo nó.
Você deve ver a seguinte saída:
OKIsso indica que o comando foi enviado com sucesso.
Sair do
redis-cli:Saia da sessão
redis-clipara garantir que o comando seja registrado.exit
Você adicionou com sucesso um novo nó ao cluster Redis. Na próxima etapa, verificaremos a integridade do cluster.
Verifique a Saúde do Cluster
Nesta etapa, você aprenderá como verificar a integridade e o status do seu cluster Redis usando o comando CLUSTER INFO. Este comando fornece informações valiosas sobre o estado geral do cluster.
Entendendo CLUSTER INFO
O comando CLUSTER INFO retorna informações sobre o cluster Redis, que podem ser usadas para monitorar sua integridade e diagnosticar problemas.
Pré-requisitos:
- Um cluster Redis inicializado e com um novo nó adicionado conforme descrito nas etapas anteriores.
Passos:
Conectar a um Nó do Cluster:
Conecte-se a qualquer um dos nós no cluster usando
redis-cli.redis-cli -h 127.0.0.1 -p 7000Executar o Comando
CLUSTER INFO:Use o comando
CLUSTER INFOpara recuperar informações do cluster.CLUSTER INFOVocê deve ver uma saída semelhante à seguinte:
cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:7 cluster_size:3 cluster_current_epoch:7 cluster_my_epoch:7 ...Interpretando a Saída:
Aqui está uma análise de algumas métricas-chave:
cluster_state:ok: O cluster está em um estado íntegro.cluster_slots_assigned:16384: O número de slots atribuídos aos nós.cluster_slots_ok:16384: O número de slots funcionando corretamente.cluster_slots_pfail:0: O número de slots em um estado "potencialmente falho".cluster_slots_fail:0: O número de slots em um estado "falhando".cluster_known_nodes:7: O número total de nós que o nó atual conhece.cluster_size:3: O número de nós mestres no cluster.
Sair do
redis-cli:Saia da sessão
redis-clipara garantir que o comando seja registrado.exit
Você verificou com sucesso a integridade do seu cluster Redis usando o comando CLUSTER INFO.
Realocar Slots para o Novo Nó
Nesta etapa, você aprenderá como realocar slots em um cluster Redis usando o comando redis-cli --cluster reshard. Isso é importante para distribuir dados de forma uniforme, especialmente após adicionar novos nós.
Entendendo os Slots Redis e a Realocação (Resharding)
Um cluster Redis divide o espaço de chaves em 16384 slots. Cada nó mestre é responsável por um subconjunto desses slots. Quando você adiciona um novo nó, ele inicialmente não possui nenhum slot. A realocação move slots de nós existentes para o novo nó, balanceando os dados e a carga de trabalho.
Passos:
Conectar ao Cluster usando
redis-cli --cluster:Para realizar a operação de realocação, você usará o comando
redis-cli --cluster reshard. Este comando fornece uma maneira interativa de redistribuir slots em todo o cluster.Abra seu terminal e execute o seguinte comando:
redis-cli --cluster reshard 127.0.0.1:7000Este comando conecta-se ao cluster Redis através do nó em
127.0.0.1:7000e inicia o processo de realocação.Especificar o Número de Slots a Serem Movidos:
A ferramenta
redis-clisolicitará que você insira o número de slots que deseja mover. Para este exemplo, vamos mover 101 slots para o novo nó.How many slots do you want to move? (default: all)Insira
101e pressione Enter.Inserir o ID do Nó de Destino:
Em seguida, a ferramenta pedirá que você insira o ID do nó de destino, que é o novo nó que você adicionou na etapa anterior (porta 7006). Para encontrar o ID do nó, você pode usar o comando
CLUSTER NODESconforme mostrado nas etapas anteriores, ou pode usar o seguinte comando para obter o ID do nó diretamente:redis-cli -h 127.0.0.1 -p 7006 cluster nodes | grep myself | awk '{print $1}'Copie o ID do nó da saída. A ferramenta
redis-clisolicitará:What is the receiving node ID?Cole o ID do nó e pressione Enter.
Especificar os Nós de Origem:
A ferramenta pedirá que você especifique os nós de origem dos quais retirar os slots. Você pode inserir
allpara redistribuir slots de todos os nós mestres existentes.Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the hash slots. Type 'done' to stop entering IDs.Insira
alle pressione Enter.Confirmar o Plano de Realocação:
A ferramenta
redis-cliexibirá o plano de realocação e pedirá que você confirme.Do you want to proceed with the reshard plan? (type 'yes' to accept):Digite
yese pressione Enter para iniciar o processo de realocação.Aguardar a Conclusão da Realocação:
A ferramenta
redis-cliagora moverá os slots dos nós de origem para o nó de destino. Este processo pode levar algum tempo, dependendo da quantidade de dados no cluster. Você verá mensagens de progresso à medida que os slots forem movidos.Sair do
redis-cli:Assim que a realocação for concluída, saia da sessão
redis-cli.exit
Você agora realocou com sucesso os slots em seu cluster Redis usando o comando redis-cli --cluster reshard. Isso garante que os dados sejam distribuídos de forma mais uniforme em todo o cluster, incluindo o novo nó.
Resumo
Neste laboratório, você aprendeu como gerenciar um cluster Redis. Você começou inicializando um cluster usando redis-cli --cluster create, depois adicionou um novo nó com CLUSTER MEET. Você verificou a integridade do cluster usando CLUSTER INFO e, finalmente, realocou slots com redis-cli --cluster reshard para balancear o cluster. Essas são tarefas essenciais para gerenciar um cluster Redis e garantir sua escalabilidade e alta disponibilidade.


