Redis (Servidor de Dicionário Remoto) é um banco de dados/estrutura de dados de chave-valor em memória muito popular e amplamente utilizado, de código aberto, rápido, distribuído e eficiente.
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 aplicações 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, shard do lado do cliente para escalar o desempenho de gravação, dois tipos de persistência para gravar dados em memória em disco em um formato compacto, clustering e particionamento. Ele também possui 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 em relação aos sistemas de banco de dados tradicionais (como MySQL/MariaDB, PostgreSQL, etc.), porque todos os seus dados residem ou são armazenados em memória, tornando-os facilmente acessíveis a uma aplicação, enquanto os bancos de dados tradicionais têm que gravar todos os dados em disco ou ler de um disco ou fonte externa.
Redis tornou-se uma escolha cada vez mais prevalente para caching, o que permite a reutilização 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 frequentemente utilizados. Assim, é um companheiro fantástico de RDMS (Sistemas de Gerenciamento de Banco de Dados Relacionais) para melhorar, em última instância, o desempenho da aplicação.
Nesta série de tutoriais de três partes sobre Redis, abordaremos como configurar e usar algumas das principais funcionalidades do Redis, que são replicação, alta disponibilidade usando Redis Sentinel e Redis Cluster, os artigos são:
Este guia mostra como configurar a Replicação do Redis (com Modo Cluster Desativado) no Linux CentOS 8, 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 cluster desativado tem um único grupo de nós (por exemplo, um mestre e um ou dois réplicas), enquanto um cluster Redis com o modo 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 de réplica somente leitura), temos um único grupo de nós que contém todos os dados do cluster em cada nó. Uma vez que um escravo se conecta a um mestre, ele recebe uma cópia inicial do banco de dados completo e quaisquer dados que anteriormente existiam no escravo serão descartados.
Além disso, um cliente pode escrever apenas 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 e, em seguida, 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 Redis, habilite-o para iniciar automaticamente em cada inicialização do sistema e verifique se ele 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 Redis
4. O Redis é configurado usando o arquivo de configuração /etc/redis.conf, um arquivo de configuração de exemplo auto-documentado. Primeiro, faça um backup do arquivo original e depois abra-o para edição usando seu editor de linha de comando de preferência.
# 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 de vinculação. Para se comunicar com as réplicas, o mestre deve ser configurado para ouvir no endereço de loopback IPv4 e no endereço IP de sua 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
O Redis também ouve na porta 6379, que é definida usando a diretiva port
. Esta é a porta de dados para se comunicar com APIs de aplicativos ou clientes CLI.
port 6379

7. Para opcionalmente garantir as comunicações entre mestre e réplica, podemos proteger o mestre usando a diretiva requirepass, de modo que os clientes/réplicas tenham que enviar uma senha de autenticação antes de executar qualquer comando 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. Os logs do Redis são armazenados no arquivo /var/log/redis/redis.log, isso é definido usando a diretiva logfile e o nível de verbosidade do servidor padrão é notice, definido usando o parâmetro loglevel.
loglevel notice logfile /var/log/redis/redis.log

9. Como o systemd é o sistema e gerenciador de serviços 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 para 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 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). Note que, como o servidor está protegido contra clientes usando uma senha, executar um comando antes da autenticação deve falhar.
Use o comando auth para fornecer a senha de autenticação como 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 réplica (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 e a porta da réplica, 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 uma 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, você precisa 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 Redis como Réplica
17. Para configurar uma instância réplica do Redis, 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 no Mestre
18. Em seguida, como nossa instância mestre está protegida por 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 de 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 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 Algumas Gravações
25. O Redis possui um recurso que permite a uma instância principal limitar o risco de perder algumas gravações caso não haja réplicas suficientes disponíveis, para um número especificado de segundos.
Isso significa que uma instância principal pode parar de aceitar gravações se houver menos de N réplicas conectadas, com um atraso menor ou igual a M segundos, conforme controlado pelas opções min-replicas-to-write e min-replicas-max-lag respectivamente.
Para configurá-las, descomente-as e defina os valores de acordo com os requisitos de sua configuração em /etc/redis.conf, conforme 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, a instância principal deixará de aceitar gravações.
min-replicas-to-write 2 min-replicas-max-lag 10

Você pode encontrar mais opções no restante do arquivo de configuração /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á, mantenha-se informado e lembre-se de compartilhar suas ideias e perguntas usando nosso formulário de comentários abaixo, estamos aqui para ajudar.
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/