O Redis (Remote Dictionary Server) é um servidor de banco de dados/estrutura de dados de chave-valor muito popular e amplamente utilizado, de código aberto, rápido, distribuído e eficiente em memória.
Ele oferece um conjunto rico de recursos que o tornam eficaz para uma ampla gama de casos de uso: como banco de dados, camada de cache, corretor de mensagens ou fila; aplicável em aplicativos da web, aplicativos de chat e mensagens, jogos, análise de dados em tempo real e muito mais.
Ele suporta estruturas de dados flexíveis, replicação assíncrona mestre-escravo para escalar o desempenho de leitura e proteger contra perda de dados, sharding do lado do cliente para escalar o desempenho de gravação, dois tipos de persistência para escrever dados em memória no disco em um formato compacto, clusterização e particionamento. Ele também apresenta failovers automáticos para implantação de alta disponibilidade via Redis Sentinel, scripting Lua, transações, e muito mais.
Sendo um banco de dados NO SQL ou não relacional, o Redis oferece alguns benefícios de desempenho sobre sistemas de banco de dados tradicionais (como MySQL/MariaDB, PostgreSQL, etc.), porque todos os seus dados residem ou são armazenados na memória, tornando-os facilmente acessíveis a um aplicativo, enquanto bancos de dados tradicionais precisam gravar todos os dados em ou ler do disco ou de uma fonte externa.
O Redis tornou-se uma escolha cada vez mais prevalente para o armazenamento em cache, o que permite o reúso de dados em cache (armazenados no espaço de memória principal de uma aplicação) em vez de sempre consultar um banco de dados para dados usados com frequência. Assim, é um excelente companheiro do RDBMS (Sistemas de Gerenciamento de Banco de Dados Relacional) para melhorar o desempenho da aplicação.
Nesta série de tutoriais de três partes sobre o Redis, abordaremos como configurar e usar algumas das principais características do Redis, que são a replicação, alta disponibilidade usando o Redis Sentinel e Redis Cluster. Os artigos são:
Este guia mostra como configurar a Replicação do Redis (com Modo de Cluster Desativado) no CentOS 8 Linux, incluindo como instalar o Redis, configurar o mestre e as réplicas, e testar a replicação.
Importante: Um Cluster Redis (ou seja, um Cluster de Replicação) com o modo de cluster desativado possui um único grupo de nós (por exemplo, um mestre e uma ou duas réplicas), enquanto um cluster Redis com o modo de cluster ativado pode consistir em dois ou mais grupos de nós (por exemplo, três mestres, cada um com escravos, ou dois).
Pré-requisitos:
Configuração do Ambiente de Teste
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34

Com a configuração acima (que tem um único nó primário/mestre de leitura/escrita e 2 nós réplicas somente de leitura), temos um único grupo de nós que contém todos os dados do cluster em cada nó. Assim que um escravo se conecta a um mestre, ele recebe uma cópia inicial do banco de dados completo e quaisquer dados que existiam anteriormente no escravo serão descartados.
Além disso, um cliente só pode escrever no mestre, mas ler de qualquer nó no cluster. E como as gravações são realizadas no mestre, elas são propagadas para todos os escravos conectados para atualizar os conjuntos de dados do escravo em tempo real.
Passo 1: Instalando o Redis no CentOS 8
1. Para começar, faça login em todos os nós do CentOS 8 via SSH, depois instale o pacote Redis em todos os nós (mestre e réplicas) usando o gerenciador de pacotes DNF conforme mostrado.
# dnf install @redis
2. Após a conclusão da instalação do pacote Redis, inicie o serviço do Redis, habilite-o para iniciar automaticamente em cada inicialização do sistema e verifique se está em execução da seguinte forma.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. Você também pode confirmar que o servidor Redis está em execução verificando as portas de escuta usando o comando ss, conforme mostrado abaixo.
# ss -ltpn | grep redis-server

Passo 2: Configurando o Servidor Mestre do Redis
4. O Redis é configurado usando o arquivo de configuração /etc/redis.conf, um arquivo de configuração de exemplo auto-documentado. Primeiro, crie um backup do arquivo original e, em seguida, abra-o para edição usando seu editor de linha de comando de escolha command-line editor of choice.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. Por padrão, uma instância do Redis é configurada para ouvir e aceitar conexões na interface loopback, usando a diretiva bind. Para se comunicar com as réplicas, o mestre deve ser configurado para ouvir no endereço de loopback IPv4 e em seu endereço IP LAN, ou seja, 10.42.0.247.
bind 127.0.0.1 10.42.0.247
6. Em seguida, defina o parâmetro protected-mode como no
para permitir a comunicação com as réplicas, conforme mostrado.
protected-mode no
Além disso, o Redis ouve na porta 6379, que é configurada usando a diretiva port
. Esta é a porta de dados para se comunicar com APIs de aplicativos ou clientes CLI.
port 6379

7. Para opcionalmente proteger as comunicações master-replica, podemos proteger o mestre usando a diretiva requirepass, para que os clientes/réplicas tenham que fornecer uma senha de autenticação antes de executar quaisquer comandos ou iniciar um processo de sincronização de replicação, caso contrário o mestre recusará a solicitação do cliente/réplica (lembre-se de definir uma senha segura).
Vamos usar a seguinte opção para fins de demonstração, para mostrar como funciona.
requirepass Securep@55Here

8. Além disso, os logs do Redis são armazenados no arquivo /var/log/redis/redis.log, isso é configurado usando a diretiva logfile e o nível de verbosidade padrão do servidor é notice, definido usando o parâmetro loglevel.
loglevel notice logfile /var/log/redis/redis.log

9. Como o systemd é o gerenciador de sistema e serviço padrão no CentOS 8, você pode configurar o Redis para interagir com a árvore de supervisão do systemd definindo o parâmetro supervised como systemd.
supervised systemd

10. Após fazer todas as configurações necessárias, salve o arquivo e feche-o. Em seguida, reinicie o serviço do Redis para aplicar as novas alterações.
# systemctl daemon-reload # systemctl restart redis
11. Para acessar o servidor Redis, precisamos usar o redis-cli (uma interface de linha de comando para o redis-server). Por padrão, ele se conecta ao servidor no localhost (em 127.0.0.1 porta 6379). Observe que, como o servidor é protegido contra clientes usando uma senha, a execução de um comando antes da autenticação deve falhar.
Use o comando auth para fornecer a senha de autenticação, conforme mostrado na captura de tela a seguir.
# redis-cli 127.0.0.1:6379> client list 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> client list

12. Para se conectar a um replica (após configurá-los conforme descrito na próxima seção), use as opções -h
e -p
para especificar o endereço IP/nome do host da réplica e a porta, respectivamente (observe que a porta 6379 deve estar aberta no firewall da réplica).
# redis-cli -h 10.42.0.21 -p 6379
13. Em seguida, abra a porta de dados do servidor Redis no firewall para permitir conexões de entrada para o mestre e, posteriormente, recarregue as regras do firewall usando o comando firewall-cmd conforme mostrado.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
Passo 3: Configurando Servidores Réplica/Escravo do Redis
14. Para configurar rapidamente uma instância Redis como réplica na hora, use o utilitário redis-cli e chame o comando REPLICAOF conforme mostrado.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

15. Para tornar uma conexão de replicação permanente, é necessário fazer as seguintes alterações no arquivo de configuração. Comece fazendo backup do arquivo original e, em seguida, abra-o para edição.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16. Para permitir que os clientes se conectem à réplica para ler dados, adicione o endereço IP da réplica à diretiva bind.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Configurando uma Instância do Redis como Réplica
17. Para configurar uma instância do Redis como uma réplica, use o parâmetro replicaof e defina o endereço IP do nó mestre (ou nome do host) e a porta como valores.
replicaof 10.42.0.247 6379
Configurando a Réplica para Autenticar-se no Mestre
18. Em seguida, como nossa instância mestre está protegida usando uma senha, precisamos definir a senha na configuração da réplica para permitir que ela se autentique no mestre, usando o parâmetro masterauth.
masterauth Securep@55Here
19. Além disso, quando uma réplica perde a conexão com o mestre, ou quando a replicação está em andamento, a réplica é configurada para responder às solicitações do cliente, possivelmente com dados “desatualizados”. Mas se for a primeira sincronização, então o conjunto de dados pode estar vazio. Esse comportamento é controlado pelo parâmetro “replica-serve-stale-data”.
E, desde o Redis 2.6, por padrão as réplicas são somente leitura, isso é controlado pelo parâmetro “replica-read-only”. Você pode fazer outros ajustes na configuração da réplica para atender às necessidades de sua aplicação.
20. Depois de fazer todas as alterações necessárias, reinicie o serviço do Redis em todas as réplicas.
# systemctl restart redis
21. Além disso, abra a porta 6379 no firewall para permitir conexões do mestre e dos clientes às réplicas, e recarregue as regras do firewall.
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
Passo 4: Verificar o Status da Replicação Mestre-Réplica
22. Uma vez que a configuração de replicação mestre-réplica estiver completa, podemos verificar se a configuração está funcionando corretamente da seguinte maneira.
No mestre, execute os seguintes comandos.
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> info replication

23. Além disso, verifique o status da replicação nas réplicas/escravos da seguinte maneira.
# redis-cli 127.0.0.1:6379> info replication


23. Agora vamos testar a replicação definindo um par “chave-valor” na instância mestre e verificar se os dados estão sincronizados nas réplicas.
No mestre, faça o seguinte:
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> set domain 'www.tecmint.com'

24. Em seguida, verifique se os dados foram sincronizados nas réplicas conforme mostrado.
# redis-cli 127.0.0.1:6379> get domain

Protegendo a Instância Principal Contra o Risco de Perder Alguns Escritos
25. O Redis possui um recurso que permite a uma instância principal limitar o risco de perder alguns escritos, caso não haja réplicas suficientes disponíveis, para um número especificado de segundos.
Isso significa que um mestre pode parar de aceitar escritos se houver menos de N réplicas conectadas, com um atraso menor ou igual a M segundos, controlado pelas opções min-replicas-to-write e min-replicas-max-lag, respectivamente.
Para configurá-los, descomente-os e defina os valores de acordo com os requisitos do seu ambiente em /etc/redis.conf, como mostrado na captura de tela a seguir. Essa configuração significa que, a partir do último ping para as réplicas, após 10 segundos, se houver menos de 2 réplicas online, o mestre deixará de aceitar escritos.
min-replicas-to-write 2 min-replicas-max-lag 10

Você pode encontrar mais opções no restante do arquivo de configuração do /etc/redis.conf e para mais detalhes, leia sobre replicação na documentação do Redis.
No próximo artigo, abordaremos como configurar o Redis para alta disponibilidade com Sentinel no CentOS 8. Até lá, continue conectado e lembre-se de compartilhar seus pensamentos e perguntas usando o formulário de comentários abaixo, que está disponível para que você entre em contato conosco.
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/