Pesquisa de site

Como configurar o Redis para alta disponibilidade com Sentinel no CentOS 8 - Parte 2


O Redis fornece alta disponibilidade por meio do sistema distribuído Redis Sentinel. O Sentinel ajuda a monitorar instâncias do Redis, detecta falhas e faz trocas de funções automaticamente, permitindo assim que uma implantação do Redis resista a qualquer tipo de falha.

Possui monitoramento de instâncias Redis (mestre e réplicas), suporta notificação de outros serviços/processos ou do administrador do sistema através de um script, failover automático para promover uma réplica a mestre quando o mestre fica inativo e fornece configuração para que os clientes descubram o mestre atual que oferece um determinado serviço.

Este artigo demonstra como configurar o Redis para alta disponibilidade com o Redis Sentinel no CentOS 8, incluindo configurar sentinelas, verificar o status da configuração e testar um Failover do Sentinel.

Pré-requisito:

  1. Como configurar a replicação do Redis (com modo cluster desabilitado) no CentOS 8 – Parte 1

Configuração do ambiente de teste

Master Server and Sentinel1: 10.42.0.247
Redis Replica1 and Sentinel2: 10.42.0.21
Redis Replica2 and Sentinel3: 10.42.0.34

De acordo com a documentação do Redis Sentinel, são necessárias pelo menos três instâncias do Sentinel para uma implantação robusta. Considerando nossa configuração acima, se o mestre falhar, Sentinels2 e Sentinel3 concordarão sobre a falha e poderão autorizar um failover, fazendo com que as operações do cliente possam continuar.

Etapa 1: iniciar e ativar o serviço Redis Sentinel

1. No CentOS 8, o serviço Redis Sentinel é instalado junto com o servidor Redis (o que já fizemos em configuração de replicação do Redis).

Para iniciar o serviço sentinela Redis e permitir que ele seja iniciado automaticamente na inicialização do sistema, use os seguintes comandos systemctl. Além disso, confirme se ele está funcionando verificando seu status (faça isso em todos os nós):

systemctl start redis-sentinel
systemctl enable redis-sentinel
systemctl status redis-sentinel

Etapa 2: configurar o Redis Sentinel em todos os nós Redis

2. Nesta seção, explicamos como configurar o Sentinel em todos os nossos nós. O serviço Sentinel tem um formato de configuração semelhante ao do servidor Redis. Para configurá-lo, use o arquivo de configuração autodocumentado /etc/redis-sentinel.conf.

Primeiro, crie um backup do arquivo original e abra-o para edição.

cp /etc/redis-sentinel.conf /etc/redis-sentinel.conf.orig
vi /etc/redis-sentinel.conf

3. Por padrão, o Sentinel escuta na porta 26379, verifique isso em todas as instâncias. Observe que você deve deixar o parâmetro bind comentado (ou definido como 0.0.0.0).

port 26379

4. Em seguida, diga ao Sentinel para monitorar nosso mestre e considerá-lo no estado “Objetivamente inativo ” somente se pelo menos 2 sentinelas do quórum concordarem. Você pode substituir “mymaster ” por um nome personalizado.

#On Master Server and Sentinel1
sentinel monitor mymaster 127.0.0.1 6379 2

#On Replica1 and Sentinel2
sentinel monitor mymaster 10.42.0.247 6379 2

#On Replica1 and Sentinel3
sentinel monitor mymaster 10.42.0.247 6379 2

Importante: A instrução sentinel monitor DEVE ser colocada antes da instrução sentinel auth-pass para evitar o erro “Não existe tal mestre com o nome especificado. ” ao reiniciar o serviço sentinela.

5. Se o mestre Redis a ser monitorado tiver uma senha definida (no nosso caso, o mestre tem), forneça a senha para que a instância do Sentinel possa se autenticar com a instância protegida.

 
sentinel auth-pass mymaster Securep@55Here

6. Em seguida, defina o número de milissegundos que o mestre (ou qualquer réplica ou sentinela anexada) deve ficar inacessível para considerá-lo no estado “Subjetivamente Inativo”.

A configuração a seguir significa que o master será considerado falho assim que não recebermos nenhuma resposta de nossos pings em 5 segundos (1 segundo equivale a 1000 milissegundos).

sentinel down-after-milliseconds mymaster 5000

7. Em seguida, defina o tempo limite de failover em milissegundos que define muitas coisas (leia a documentação do parâmetro no arquivo de configuração).

sentinel failover-timeout mymaster 180000

8. Em seguida, defina o número de réplicas que podem ser reconfiguradas para usar o novo mestre ao mesmo tempo após um failover. Como temos duas réplicas, definiremos uma réplica, pois a outra será promovida ao novo mestre.

sentinel parallel-syncs mymaster 1

Observe que os arquivos de configuração em Redis Replica1 e Sentinel2 e em Reddis Replica1 e Sentinel2 devem ser idênticos.

9. Em seguida, reinicie os serviços do Sentinel em todos os nós para aplicar as alterações recentes.

systemctl restart redis-sentinel

10. Em seguida, abra a porta 26379 no firewall em todos os nós para permitir que as instâncias do Sentinel comecem a se comunicar e recebam conexões dos outros Instâncias >Sentinel, usando o firewall-cmd.

firewall-cmd --zone=public --permanent --add-port=26379/tcp
firewall-cmd --reload

11. Todas as réplicas serão descobertas automaticamente. É importante ressaltar que o Sentinel atualizará a configuração automaticamente com informações adicionais sobre as réplicas. Você pode confirmar isso abrindo o arquivo de configuração do Sentinel para cada instância e examinando-o.

Por exemplo, ao olhar o final do arquivo de configuração mestre, você deverá ver as instruções known-sentinels e known-replica conforme mostrado na captura de tela a seguir.

Deve ser o mesmo caso em replica1 e replica2.

Observe que a configuração do Sentinel também é reescrita/atualizada sempre que uma réplica é promovida ao status mestre durante um failover e sempre que um novo Sentinel é descoberto na configuração.

Etapa 3: verifique o status de configuração do Redis Sentinel

12. Agora verifique o status/informações do Sentinel no mestre, usando o comando info sentinel como segue.

redis-cli -p 26379 info sentinel

A partir da saída do comando conforme visto na imagem a seguir, temos duas réplicas/escravos e três sentinelas.

13. Para mostrar informações detalhadas sobre o master (chamado mymaster), use o comando sentinel master.

redis-cli -p 26379 sentinel master mymaster

14. Para mostrar informações detalhadas sobre os slaves e sentinels, use o comando sentinel slaves e sentinel comando sentinelas respectivamente.

redis-cli -p 26379 sentinel slaves mymaster
redis-cli -p 26379 sentinel sentinels mymaster

15. Em seguida, pergunte o endereço do mestre pelo nome das instâncias escravas usando o comando sentinel get-master-addr-by-name como segue.

A saída deve ser o endereço IP e a porta da instância mestre atual:

redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

Etapa 4: testar o failover do Sentinel

16. Por fim, vamos testar o failover automático em nossa configuração do Sentinel. No mestre Redis/Sentinel, faça o mestre Redis (executando na porta 6379) dormir por 60 segundos . Em seguida, consulte o endereço do mestre atual nas réplicas/escravos da seguinte maneira.

redis-cli -p 6379
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379>  debug sleep 60
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster
redis-cli -p 26379 sentinel get-master-addr-by-name mymaster

A partir da saída da consulta, o novo mestre agora é replica/slave2 com endereço IP 10.42.0.34 conforme visto na captura de tela a seguir.

Você pode obter mais informações na documentação do Redis Sentinel. Mas se você tiver alguma opinião ou dúvida para compartilhar, o formulário de feedback abaixo é a sua porta de entrada para nós.

Na próxima e última parte desta série, veremos como configurar um Redis Cluster no CentOS 8. Será um artigo independente dos dois primeiros.