Suponha um cenário em que você tenha apenas uma instância do Redis em sua produção e ela falhe em algum momento devido a algum motivo. Seu aplicativo armazena dados em cache no armazenamento de dados do Redis e agora sua única fonte de dados está inativa. Uma maneira de controlar esses tipos de cenários é manter a arquitetura mestre-escravo onde os escravos podem replicar o nó mestre até que ele volte. Os clusters Redis oferecem suporte à alta disponibilidade até certo ponto com a abordagem de réplica mestre. O Redis Sentinel é outra abordagem que oferece uma maneira mais confiável de manter a alta disponibilidade das instâncias do Redis. Ele monitora o nó mestre do Redis quanto a falhas e aciona o processo de failover imediatamente, o que promoverá um nó escravo existente a um novo mestre.
Além disso, o Sentinel Redis atua como um intermediário onde os clientes se conectam e solicitam o endereço IP do nó mestre mais recente. Assim, o sentinela conectado fornece o endereço do nó mestre imediatamente.
Além disso, uma falha no nó mestre é confirmada se vários sentinelas concordarem que um determinado mestre não está acessível ou disponível. Isso conclui a fase de detecção de falhas e o processo de failover é iniciado imediatamente. Assim, o Redis sentinela pode ser visto como um sistema distribuído com propriedades específicas.
O acordo dos sentinelas é baseado em um valor de quorum que será discutido na seção seguinte.
Cujo valor
O valor de Quorum é o número máximo de sentinelas que precisa ser acordado quando o nó mestre está inativo. Esse valor é usado apenas para identificar uma falha no nó mestre. O processo de failover começa com a autorização de vários nós sentinela disponíveis para prosseguir com um sentinela selecionado como líder.
Recursos do Redis Sentinel
O sentinela é conhecido por fornecer um mecanismo de alta disponibilidade para o armazenamento de dados do Redis. Além disso, vários outros recursos podem ser listados.
- O Sentinel monitora continuamente o status dos nós mestre e escravo em seu sistema Redis.
- Sempre que houver uma falha ou algo errado com suas instâncias do Redis, o sentinela é capaz de notificar o administrador ou os aplicativos conectados usando a API do sentinela.
- A fase de failover é direcionada pelo sentinela promovendo uma réplica como o novo mestre. Réplicas restantes configuradas para usar o novo mestre. Finalmente, os clientes correspondentes serão notificados sobre o novo endereço do nó mestre.
- Além disso, o Sentinel Redis é um provedor de configuração para os clientes conectados em que os clientes podem solicitar o endereço da instância mestre atualmente disponível e, se ocorrer um colapso repentino, o Sentinel se compromete a enviar o novo endereço do nó mestre imediatamente.
Na próxima seção, configuraremos os sentinelas do Redis com instâncias de réplica mestre e usaremos a API do sentinela para monitorar os nós.
Configuração do Sentinela
Primeiro, criamos duas instâncias do Redis nas portas 7000 e 7001. A porta 7000 será o nó mestre e a outra replicará o mestre. Ambas as instâncias usam os seguintes arquivos de configuração, respectivamente:
Configuração do nó mestre
porta 7.000habilitado para cluster não
nós.conf do arquivo de configuração do cluster
cluster-node-timeout 5000
anexo sim
Configuração do nó escravo
porta 7001habilitado para cluster não
nós.conf do arquivo de configuração do cluster
cluster-node-timeout 5000
anexo sim
Ambas as instâncias começarão fornecendo o arquivo de configuração associado a cada uma. Podemos usar o seguinte comando para iniciar instâncias do Redis separadamente:
servidor redis redis.conf
Vamos nos conectar à instância do Redis iniciada na porta 7001 da seguinte forma:
redis-cli -p 7001
Agora, podemos fazer desta instância uma réplica do mestre que está rodando na porta 7000. O comando REPLICAOF pode ser usado da seguinte forma:
réplica de 127.0.0.1 7.000
Como esperado, a instância em execução na porta 7001 tornou-se o nó de réplica do mestre em execução na porta 7000.
Agora, estamos prontos para configurar três sentinelas do Redis para monitorar a instância mestre acima. Precisamos ter três arquivos de configuração para criar três instâncias sentinela nas portas 5000, 5001 e 5002, conforme mostrado a seguir.
Cada sentinela.conf arquivo se parece com o seguinte, exceto que o número da porta será alterado:
porta 5000masternode do monitor sentinela 127.0.0.1 7.000 dois
masternode sentinela inativo após milissegundos 5000
masternode de tempo limite de failover sentinela 60.000
Agora, é hora de executar as três sentinelas. Você pode usar o executável redis-sentinel junto com o caminho para sentinela.conf arquivo de configuração para criar uma instância sentinela. Caso contrário, ainda podemos chamar o executável do servidor redis especificando o caminho para sentinela.conf e a bandeira -sentinela .
Vamos iniciar cada sentinela usando o seguinte comando:
redis-server sentinel.conf --sentinela
A primeira sentinela foi iniciada na porta 5000. Da mesma forma, você também pode iniciar as outras duas instâncias.
Agora, nossa configuração do Sentinel Redis está funcionando conforme mostrado na ilustração a seguir:
Na seção a seguir, exploraremos mais sobre a API do Sentinel e como podemos utilizá-la para recuperar informações relacionadas ao nó mestre do Redis.
API Sentinel
O Redis fornece uma API Sentinel separada para monitorar mestres e réplicas associados, assinar notificações e modificar as configurações do Sentinel. Além disso, vários usos estão listados a seguir.
- Verifique o status das instâncias mestre e escrava do Redis monitoradas
- Detalhes sobre outros sentinelas
- Receba notificações em estilo push de sentinelas em caso de failover
O comando SENTINEL pode ser usado com seus subcomandos associados para consultar, atualizar ou definir sentinelas do Redis e nós monitorados.
Verifique o status do nó mestre
É muito importante monitorar ou verificar a integridade do nó mestre de tempos em tempos. O seguinte comando da API Sentinel pode ser usado para recuperar detalhes do mestre:
MESTRE SENTINELA < monitor_master_name >
monitor_master_name: O nome do nó mestre especificado no arquivo de configuração do sentinela que criamos na etapa anterior.
Vamos usar este comando para consultar o status do mestre em nossa configuração. No nosso caso, o nome do nó mestre é 'mestre'.
Nó mestre SENTINEL MASTER
Várias informações foram recuperadas e algumas delas são importantes, como num-slaves, flags e num-other-sentinels.
o bandeiras propriedade está definida para mestre o que significa que o mestre está de boa saúde. Sempre que o nó mestre está inativo, o s_down ou o_down bandeira será exibida. A propriedade num-outros-sentinelas é definido como 2, o que significa que a sentinela Redis já reconheceu as outras duas sentinelas para o nó mestre. Além disso, o num-slaves A propriedade exibe as réplicas disponíveis para o nó mestre. Nesse caso, é definido como 1, pois temos apenas uma réplica.
Obter informações sobre réplicas conectadas
Podemos verificar as réplicas conectadas ao nó mestre usando o seguinte subcomando SENTINEL:
RÉPLICAS SENTINELA < monitor_master_name >
Neste exemplo, o nome do mestre é ‘masternode’.
Masternode de réplicas SENTINEL
Conforme esperado, o Sentinel detectou o nó escravo em execução na porta 7001.
Obtenha informações sobre os Sentinelas Associados
Da mesma forma, podemos consultar os detalhes relacionados a outros sentinelas associados ao nó mestre atual usando o seguinte subcomando SENTINEL:
SENTINELA SENTINELA < master_node_name >
Neste caso, estaremos buscando as informações relacionadas ao nó mestre chamado 'masternode'.
Masternode Sentinelas SENTINEL
Obtenha o endereço do nó mestre
Conforme mencionado na seção anterior, o Sentinel Redis é um provedor de configuração para clientes conectados. Portanto, ele é capaz de fornecer o endereço IP e a porta do nó mestre em execução aos clientes solicitados. O seguinte subcomando da API do Sentinel pode ser usado para recuperar as informações mencionadas.
SENTINEL GET-MASTER-ADDR-BY-NAME < master_node_name >
Vamos executar o comando acima para nosso cenário da seguinte forma:
Sentinel get-master-addr-by-name masternode
Discutimos apenas alguns comandos da API Sentinel. Vários outros subcomandos estão disponíveis, como sentinela-failover, sentinela info-cache, sentinela mestres e etc. Além disso, muitos comandos também estão disponíveis para uso administrativo. Na seção a seguir, focaremos no processo de failover do Sentinel Redis.
Processo de failover do Sentinel
Como nosso sentinela está configurado, podemos testar a fase de failover. Vamos enviar nosso nó mestre para dormir por 300 segundos, o que simula uma falha no nó mestre.
depurar dorme 300
O nó mestre que está sendo executado na porta 7000 deve estar inacessível agora. Assim, os sentinelas associados notarão que o mestre não está disponível com o +desaceleração evento. Então, isso será definido como +odown onde 2 sentinelas confirmam que o nó mestre está inativo de acordo com o valor de quorum. Por fim, a fase de failover será iniciada e, idealmente, a réplica deve ser promovida para o novo mestre.
Vamos verificar o endereço IP do nó mestre e a porta novamente.
Sentinel get-master-addr-by-name masternode
Conforme esperado, a réplica anterior foi promovida para o novo mestre, o que significa que o processo de failover do sentinela foi bem-sucedido. Isso conclui a implantação e o teste de nossas três configurações de sentinela para um único par mestre-réplica.
Conclusão
O Redis sentinela é a abordagem mais confiável para garantir a alta disponibilidade de uma determinada instância de réplica mestre do Redis. Um sentinela é capaz de monitorar, notificar e iniciar o failover automático sem intervenção humana. Além disso, vários sentinelas concordam sobre o fato de que o nó mestre está inacessível e o valor de quorum é usado como o número máximo de sentinelas que precisam ser acordados ao verificar a disponibilidade da instância mestre. O Redis Sentinel oferece uma API fácil de usar para recuperar informações sobre a integridade do nó mestre e réplicas associadas e também executar tarefas administrativas.