Como criar um banco de dados Redis altamente disponível com o monitoramento do Sentinel

POSTADO POR Zevenet | 10 de junho de 2019

Visão geral

Redis é um armazenamento de estrutura de dados na memória de código aberto que pode ser usado como um banco de dados do agente de mensagens, do cache e do valor-chave. Ele suporta várias estruturas de dados: hashes, listas, conjuntos, conjuntos classificados, bitmaps, índices geoespaciais, hiperloglogs, etc.

O que torna o Redis único é que ele pode ser considerado tanto uma loja quanto um cache. Ele é projetado de forma que os dados sejam modificados e / ou lidos na memória principal do computador.

Entre outros recursos, o Redis oferece alta disponibilidade, via Redis Sentinelae particionamento automático, via Cluster Redis. Além disso, o Redis possui um mecanismo de replicação que permite que as instâncias escravas sejam cópias exatas de instâncias mestras. O escravo se reconectará automaticamente ao mestre toda vez que o link se romper, e seu objetivo será ser uma cópia exata dele.

Como o Redis Sentinel fornece alta disponibilidade para o Redis, ele pode lidar com falhas automaticamente sem qualquer intervenção humana em muitos casos, mas também fornece outras tarefas, como monitoramento, notificações e atua como um provedor de configuração para clientes.

Mas, o que acontece quando o Sentinel detecta um servidor Redis como inativo? Vamos descobrir neste artigo como criar um serviço virtual completo e altamente disponível para o Redis.

Por favor, leve em consideração que esta configuração também pode ser feita mesmo que seu servidor Redis não esteja usando o Sentinel para monitoramento.

Ambiente de balanceamento de carga Redis

O cenário que queremos alcançar neste artigo é mostrado no diagrama abaixo.

O Redis Sentinel verifica o estado de todos os nós Redis e altera a função do servidor Redis assim que um erro é detectado.

O balanceador de carga verifica o estado também, mas faz periodicamente a cada alguns segundos. Pode haver casos em que o Sentinel detecta o problema, mas o balanceador de carga pode levar alguns segundos para ser percebido. Isso pode levar ao balanceamento enviando solicitações para o mestre errado, que é o que acabou de falhar, mas foi comutado pelo Sentinel.

Zevenet oferece uma maneira de resolver esse problema, o farm L4 realiza verificações periodicamente. Por outro lado, há também o fluxo passado para o back-end que não contém verificação anterior. Quando o guardião da fazenda percebe que o back-end não está respondendo, ele dispara o alarme, indicando que o fluxo não deve ser assim.

Tendo isto em conta, temos por um lado as verificações e por outro os pedidos. Se a verificação falhar, o fluxo será enviado imediatamente para outro nó. Mesmo as petições em andamento são redirecionadas para outro nó online. Isso será explicado com mais detalhes na configuração.

Configuração de balanceamento de carga do Redis

Antes de configurar o farm, precisamos ter um IP virtual. Para isso, vá para Rede> Interfaces Virtuais. Então clique em Ação> Criar Interface Virtual. Em seguida, selecione Interface pai, Nome da Interface Virtual ea sua Endereço IP:

Então, para o servidor virtual Redis, precisamos criar um farm L4xNAT. Para isso, vá para LSLB> Fazendas, e depois clique em Açao Social e Criar fazenda.

Quando os parâmetros iniciais estiverem definidos, clique em Create. Em seguida, vá para o Avançado guia e verifique se o tipo de protocolo é TCP.

Em seguida, vá para Serviços. Backends e Farm Guardian serão configurados aqui para verificação de integridade avançada. Primeiro encontre o Backends seção e clique em Ações> Adicionar back-end como é mostrado abaixo:

Monitoramento de Redis e verificação de integridade avançada

Finalmente, as verificações do Farm Guardian são necessárias para garantir que estamos sempre usando o nó on-line, conforme explicado anteriormente. Para isso, precisamos configurar o seguinte como o comando Farm Guardian:

check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3

Onde HOST e PORT será substituído pelo endereço IP e pela porta de cada servidor Redis do backend. O comando replicação de informações obterá as informações do servidor Redis para verificar qual mestre está ativo, somente as conexões serão redirecionadas para o servidor se o responsável pela função for apresentado, assim que o Sentinel alterar a função, o balanceador de carga detectará a alteração e o Redis servidor será marcado como inativo. A bandeira -t é o número de segundos que o Farm Guardian aguardará por uma resposta do servidor Redis e, em seguida, se o tempo limite for atingido sem responder, o servidor Redis será marcado como inativo. Por outro lado, assim que a integridade do servidor Redis for restaurada, ela se tornará novamente ativa.

Mas antes de modificar o Guardião da Fazenda para esta fazenda em particular, vá para Monitorização> Farmguardian e depois clique em Ação> Criar Farmguardian.

Escolha um nome descritivo para o novo verificador de integridade do Redis Sentinel, por exemplo, check_redis_master como no exemplo, agora escolha check_tcp no arquivado Farmguardian para copiar e clique em Create como mostrado abaixo.

Finalmente, copie o comando acima mencionado no Command parâmetro e faça a configuração como mostrado abaixo.

Clique em Enviar.

Agora, selecione essa nova verificação de integridade avançada do Farm Guardian no serviço virtual Redis. Volte para LSLB> Fazendas, para a fazenda criada com nome RedisFarm, Serviços aba. Finalmente, selecione o check_redis_master comando apenas criado sob Verificações de integridade para back-end.

Clique em Atualizar a fazenda e agora o Redis estará totalmente disponível.

Referências

https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial

Compartilhar no:

Documentação sob os termos da Licença de Documentação Livre GNU.

Esse artigo foi útil?

Artigos Relacionados