Modo Sentinel Redis para Alta Disponibilidade em Linux
O Modo Sentinel é a solução recomendada oficialmente pelo Redis para garantir alta disponibilidade (HA). Ele monitora os nós mestre e escravos do Redis, realizando uma transferência de falhas automática quando o nó mestre falha, assegurando a continuidade do serviço.
Antes de compreender o modo Sentinel, é essencial entender o conceito de replicação mestre-escravo.
Replicação Mestre-Escravo
Um nó mestre pode ter múltiplos nós escravos, mas cada nó escravo só pode ter um nó mestre. A replicação de dados é unidirectional, ocorrendo apenas do nó mestre para os nós escravos.
Configurando um Nó Escravo
Vamos demonstrar como configurar um nó escravo utilizando o arquivo de configuração, geralmente localizado em /etc/redis.conf.
- Copie o arquivo de configuração para o diretório home:
cp /etc/redis.conf ~/redis.conf
- Crie um novo arquivo de configuração para o nó escravo:
cp ~/redis.conf ~/redis-6380.conf
- Modifique o arquivo
redis-6380.confnas seguintes seções:
- Porta: Altere para a porta do nó escravo (ex: 6380)
- PID File: Atualize o nome do arquivo PID para incluir a nova porta
- Nome do Banco de Dados: Modifique
dbfilenameparadump-6380.rdb - Configuração de Replicação: Adicione a diretiva de replicação apontando para o nó mestre (porta 6379)
- Inicie o novo nó escravo:
redis-server ~/redis-6380.conf
- Conecte-se ao novo nó escravo com um cliente Redis:
redis-cli -p 6380
- Vreifique as informações de replicação:
INFO replication
A saída deve confirmar que este é um nó escravo com o nó mestre na porta 6379.
Configurando o Sentinel
Compreendida a configuração de nós escravos, vamos configurar uma arquitetura com um mestre e dois escravos (mestre: 6379, escravos: 6380, 6381) para demonstrar o modo Sentinel.
- Crie um arquivo de configuração para o Sentinel:
cat > ~/sentinel.conf << EOF
sentinel monitor principal 127.0.0.1 6379 1
EOF
- Inicie o nó Sentinel:
redis-sentinel ~/sentinel.conf
O Sentinel agora estará rodando na porta 26379, monitorando os nós mestre (6379) e escravos (6380, 6381).
Transferência de Falhas (Failover)
Após ativar o modo Sentinel, se o nó mestre falhar, ocorrerá automaticamente uma transferência de falha para eleger um novo mestre.
Vamos simular a falha do nó mestre:
redis-cli -p 6379 SHUTDOWN
Aguarde alguns segundos. O sistema detectará a falha e promoverá um dos escravos (6380 ou 6381) para o papel de mestre. Verifique os status dos nós:
redis-cli -p 6380 INFO replication
redis-cli -p 6381 INFO replication
A saída mostrará que um dos escravos foi promovido a mestre e o outro agora aponta para este novo mestre.
Vantagens e Desvantagens do Modo Sentinel
Vantagens:
- Alta Disponibilidade: Transferência automática de falhas com interrupção mínima do serviço
- Monitoramento Abrangente: Verificação contínua do estado de todos os nós
- Configuração Automática: Descoberta automática do mestre pelo cliente
- Suporte Oficial: Solução recomendada pela equipe do Redis
Desvantagens:
- Complexidade de Configuração: Requer múltiplos nós Sentinel
- Overhead de Performance: Comunicação e eleição entre nós Sentinel
- Risco de Split-Brain: Particionamento de rede pode causar múltipos mestres
- Escalabilidade Limitada: Não suporta divisão automática de dados (sharding)
O modo Sentinel é uma solução madura para alta disponibilidade do Redis, adequada para cenários com muitas operações de leitura, poucas de escrita e volume de dados moderado. Para necessidades de escala horizontal e grandes volumes de dados, considere o modo Redis Cluster.
Recomendações de Implantação:
- Utilize pelo menos 3 nós Sentinel, distribuídos em máquinas físicas distintas
- Mantenha um número ímpar de nós Sentinel (3, 5, 7)
- Realize testes periódicos do processo de transferência de falhas
- Monitore a saúde dos nós Sentinel e Redis