Replicação mestre-escravo Redis, sentinela e cluster

Um, cluster Redis

1. Replicação mestre-escravo

A replicação mestre-escravo é a base do Redis de alta disponibilidade. O Sentinel e os clusters alcançam alta disponibilidade com base na replicação mestre-escravo. A replicação mestre-escravo implementa principalmente backup de dados em várias máquinas, bem como balanceamento de carga e recuperação de falha simples para operações de leitura. Defeitos: a recuperação de falhas não pode ser automatizada; as operações de gravação não podem ser balanceadas; a capacidade de armazenamento é limitada por uma única máquina

2. Sentinela

Com base na replicação mestre-escravo, o Sentinel realiza a recuperação automática de falhas. Defeitos: as operações de gravação não podem ter a carga balanceada; a capacidade de armazenamento é limitada por uma única máquina; o Sentinel não pode fazer failover automaticamente do nó escravo. No cenário de separação de leitura e gravação, a falha do nó escravo fará com que o serviço de leitura fique indisponível e monitoramento adicional do nó escravo é necessário, operação do switch

3. Cluster

Por meio do clustering, o Redis resolve o problema de que as operações de gravação não podem ter balanceamento de carga e a capacidade de armazenamento é limitada por uma única máquina, e realiza uma solução de alta disponibilidade relativamente completa

Dois, redis

A replicação mestre-escravo refere-se à cópia dos dados de um servidor Redis para outros servidores Redis. O primeiro é chamado de nó mestre (mestre), o último é chamado de nó escravo (escravo); a replicação de dados é unilateral, apenas do nó mestre para o nó escravo

Por padrão, cada servidor Redis é o nó mestre; e um nó mestre pode ter vários nós escravos (ou nenhum nó escravo), mas um nó escravo só pode ter um nó mestre

1. O papel da replicação mestre-escravo

①Redundância de dados

A replicação mestre-escravo realiza backup dinâmico de dados, que é um método de redundância de dados além da persistência

②Falha recuperação

Quando o nó mestre tem um problema, o nó escravo pode fornecer serviços para obter uma recuperação rápida de falha; na verdade, é um tipo de redundância de serviço

③ Balanceamento de carga

Com base na replicação mestre-escravo, com a separação de leitura e gravação, o nó mestre pode fornecer o serviço de gravação e o nó escravo pode fornecer o serviço de leitura (ou seja, o aplicativo se conecta ao nó mestre ao gravar dados Redis , e o aplicativo se conecta ao nó escravo ao ler dados Redis), compartilhando a carga do servidor; especialmente no cenário de escrever menos e ler mais, compartilhar a carga de leitura por vários nós escravos pode aumentar significativamente a simultaneidade do servidor Redis

④ Pedra angular de alta disponibilidade

Além das funções acima, a replicação mestre-escravo também é a base para a implementação de sentinelas e clusters, portanto, a replicação mestre-escravo é a base para a alta disponibilidade do Redis

2. Processo de replicação mestre-escravo

① Se um processo da máquina escrava for iniciado, ele enviará um comando "comando de sincronização" para a máquina mestre para solicitar uma conexão síncrona

②Seja a primeira conexão ou reconexão, a máquina mestre iniciará um processo em segundo plano para salvar o instantâneo de dados no arquivo de dados (execute a operação rdb) e, ao mesmo tempo, a máquina mestre também gravará todos os comandos para modificar o dados e armazená-los em cache no arquivo de dados

③ Depois que o processo em segundo plano conclui a operação de cache, a máquina Master enviará o arquivo de dados para a máquina Slave, e a máquina Slave salvará o arquivo de dados no disco rígido e, em seguida, carregará na memória, e então a máquina Master irá realizar todas as operações que modificam os dados e enviá-los para a máquina escrava. Se o escravo falhar e causar o tempo de inatividade, ele se reconectará automaticamente após retornar ao normal.
④ Depois que a máquina mestre receber a conexão da máquina do lado escravo, ela enviará seu arquivo de dados completo para a máquina do lado escravo. Se Mater receber vários escravos ao mesmo tempo, sincronizar a solicitação, o mestre irá iniciar um processo em segundo plano para salvar o arquivo de dados e, em seguida, enviá-lo para todas as máquinas do lado escravo para garantir que todas as máquinas do lado escravo estejam normais

Três, replicação mestre-escravo Redis

1. Crie uma replicação mestre-escravo Redis

① Configuração de nó mestre

#Desligue o firewall

systemctl stop firewalld

setenforce 0

#Install Redis

yum install -y gcc gcc-c ++ make

cd / opt # Carregue o pacote compactado do redis para o diretório / opt

tar zxvf redis-5.0.7.tar.gz

cd /opt/redis-5.0.7/

fazer

make PREFIX = / usr / local / redis install

cd /opt/redis-5.0.7/utils

./install_server.sh # Em seguida, pressione Enter o tempo todo

Quando na etapa Selecione o caminho do executável do redis [/ usr / loca1 / bin / redis-server], digite / usr / local / redis / bin / redis-server

ln -s / usr / local / redis / bin / * / usr / local / bin / #Create soft connection

#Modify arquivo de configuração redis

vim /etc/redis/6379.conf
bind 0.0.0.0 # 70 line, comente o item bind ou modifique-o para 0.0.0.0, o padrão monitorando todas as placas de rede
daemonize linha sim # 137, abra o
arquivo de log daemon / var / linha log / redis_6379. log # 172, especifique o diretório do arquivo de log
dir / var / lib / redis / 6379 # 264 linha, especifique o diretório de trabalho
appendonly yes # 700 line, ative a função de persistência AOF

/etc/init.d/redis_6379 restart #Reinicie o serviço

② Modificar a configuração do nó escravo

# A configuração dos dois nós escravos é a mesma

Instale o redis como acima

#Modify arquivo de configuração redis

vim /etc/redis/6379.conf
bind 0.0.0.0 # 70 line, modifique o endereço de escuta para 0.0.0.0
daemonize yes # 137 line, abra o daemon
logfile /var/log/redis_6379.log # 172 line, especifique o log diretório de arquivos
dir / var / lib / redis / 6379 # 264 linha, especifique a
réplica do diretório de trabalho da linha 192.168.200.11 6379 # 287 linha, descomente e especifique o IP do nó mestre e a porta a serem sincronizados
appendonly yes # 700 line, habilite a função de persistência AOF

/etc/init.d/redis_6379 restart #Reinicie o serviço

③ Verifique o efeito mestre-escravo

#MasterLog View

tail -f /var/log/redis_6379.log
Insira a descrição da imagem aqui

#Master node view

redis-cli -h 192.168.200.11

INFO replicação
Insira a descrição da imagem aqui

Quatro, modo sentinela Redis

A função principal do Sentinel: Com base na replicação mestre-escravo, o Sentinel apresenta failover automático do nó mestre

1. Princípio do modo sentinela

É um sistema distribuído utilizado para monitorar cada servidor da estrutura mestre-escravo, quando ocorre uma falha, um novo mestre é selecionado através de um mecanismo de votação, e todos os escravos são conectados ao novo mestre. Portanto, o número de todo o cluster executando sentinelas não deve ser inferior a 3 nós

2. O papel do modo sentinela

① Monitoramento: O sentinela verificará constantemente se o nó mestre e o nó escravo estão operando normalmente

② Failover automático: quando o nó mestre não pode funcionar normalmente, o sentinela iniciará uma operação de failover automático. Ele atualizará um dos nós escravos do nó mestre com falha para o novo nó mestre e permitirá que os outros nós escravos mudem para replicar o novo nó mestre

③Notificação: O sentinela pode enviar o resultado do failover para o cliente

3. A composição da estrutura sentinela

①Nodo sentinela: O sistema sentinela consiste em um ou mais nós sentinela. O nó sentinela é um nó redis especial e não armazena dados

②Nó de dados: tanto o nó mestre quanto o nó escravo são nós de dados

O início da sentinela depende do modo mestre-escravo, portanto, você deve instalar o modo mestre-escravo antes de fazer o modo sentinela. Todos os nós precisam implantar o modo sentinela. O modo sentinela monitorará se todos os nós de trabalho do Redis estão normais. Quando o Mestre aparece Quando há um problema, porque outros nós perdem contato com o nó mestre, eles vão votar. Mais da metade dos votos vai pensar que há um problema com este Mestre, e então a sala de sentinela será notificada, e então um dos escravos será selecionado como o novo mestre.
Atenção especial é necessária para ser objetivo. Off-line é um conceito disponível apenas para o nó mestre; se o nó escravo e o nó sentinela falharem, após serem subjetivamente offline pela sentinela , não haverá operações objetivas off-line e de failover subsequentes
Insira a descrição da imagem aqui

4. Configure o modo sentinela

① Configure o modo sentinela

#Todos os nós são configurados da mesma forma

vim /opt/redis-5.0.7/sentinel.conf

protegido-modo não # linha 17, feche a
porta de modo protegido 26379 # 21 linha, Redis sentinela da porta de escuta padrão
daemonize sim # linha 26, especifique sentinela como o
arquivo de log de inicialização em segundo plano "/var/log/sentinel.log" linha # 36, especifique o caminho de armazenamento de log
dir “/ var / lib / redis / 6379” linha # 65, especifique o caminho de armazenamento do banco de dados
monitor sentinela mymaster 192.168.200.11 6379 2 # 84 linha, modifique o nó sentinela designado para monitorar o nó mestre 192.168.200.10: 6379, este O nome do nó mestre é mymaster, e o significado dos últimos 2 está relacionado ao julgamento de falha do nó mestre: pelo menos 2 nós sentinela são obrigados a concordar em determinar a falha do nó mestre e a
sentinela de failover para baixo após milissegundos mymaster 30000 # 113 linha, julgamento O período de tempo em que o servidor está inativo, o padrão é 30000 milissegundos (30 segundos)
sentinela failover-timeout mymaster 180000 # 146 linha, o tempo máximo de tempo limite do nó com falha é 180000 (180 segundos)

#Após alterar uma configuração, ela pode ser transmitida para outros servidores através do comando scp

scp /opt/redis-5.0.7/sentinel.conf [email protected]: /opt/redis-5.0.7/sentinel.conf

scp /opt/redis-5.0.7/sentinel.conf [email protected]: /opt/redis-5.0.7/sentinel.conf

② Inicie o modo sentinela

# Inicie o Master primeiro, depois inicie o Slave

cd /opt/redis-5.0.7/ #First mude para o diretório redis para começar

redis-sentinel sentinel.conf & # & refere-se à inicialização em segundo plano
Insira a descrição da imagem aqui

Cinco, modo de cluster Redis

O cluster é composto por vários nós (Nó) e os dados do Redis são distribuídos entre esses nós. Os nós no cluster são divididos em nós mestres e nós escravos

Apenas o nó mestre é responsável pela manutenção das solicitações de leitura e gravação e informações do cluster; o nó escravo apenas copia os dados e as informações de status do nó mestre

1. O papel dos clusters

① Partição de dados: partição de dados (ou fragmentação de dados) é a função central do cluster

O cluster dispersa os dados em vários nós. Por um lado, ele rompe a limitação do tamanho da memória da máquina única do Redis e a capacidade de armazenamento é bastante aumentada; por outro lado, cada nó mestre pode fornecer serviços externos de leitura e gravação , o que melhora muito a capacidade de resposta do cluster

A limitação do tamanho da memória autônoma do Redis é mencionada na introdução da persistência e da replicação mestre-escravo; por exemplo, se a memória autônoma for muito grande, a operação de bifurcação de bgsave e bgrewriteaof pode causar o bloqueio do processo principal e pode ser possível quando o host é comutado no ambiente mestre-escravo. Como resultado, o nó escravo não pode fornecer serviços por um longo tempo, e o buffer de replicação do nó mestre pode estourar durante a fase de replicação completa

② Alta disponibilidade

O cluster oferece suporte à replicação mestre-escravo e failover automático do nó mestre (semelhante ao sentinela); quando qualquer nó falha, o cluster ainda pode fornecer serviços externos

2. Fragmentação de dados do cluster Redis

O cluster Redis introduz o conceito de slots de hash. O
cluster Redis tem 16384 slots de hash (numerados de 0-16383)
. Cada nó no cluster é responsável por uma parte do slot de hash.
Após a verificação de CRC16, cada chave leva o restante de 16384 para decidir qual colocar. Espere o slot, por meio desse valor, para encontrar o nó correspondente ao slot correspondente e, em seguida, pule automaticamente para o nó correspondente para as operações de acesso

#Quando houver três nós, o redis dividirá o slot hash em três partes. Quando uma parte do slot hash estiver quebrada, todo o cluster ficará indisponível

3. Construir modo de cluster Redis

①Crie um diretório de cluster redis

cd / etc / redis

mkdir -p redis-clusyer / redis600 {1… 6}
Insira a descrição da imagem aqui

② Copie o arquivo para o diretório redis600

para i em {1… 6}

Faz

cp /opt/redis-5.0.7/redis.conf / etc / redis / redis-cluster / redis600 $ i

cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server / etc / redis / redis-cluster / redis600 $ i

feito
Insira a descrição da imagem aqui

③ Modifique o arquivo de configuração

cd / etc / redis / redis-cluster / redis6001 # 6 portas são diferentes

vim redis.conf
bind 0.0.0.0 # 69 line, escute todos os segmentos de rede
em modo protegido sem # 88 line, modifique, feche a
porta de modo protegido 6001 # 92 line, modifique, redis escute a porta,
daemonize yes # 136 line, como um processo separado Inicie o
cluster-enabled linha sim # 832, descomente, habilite a função do
cluster cluster-config-file nodes-6001.conf # 840 line, descomente, configuração do arquivo de nome do cluster
cluster-node-timeout 15000 # 846, descomente o tempo limite do cluster configurando
appendonly yes # 700 line, modificar, abrir persistência AOF

④ Inicie o serviço de nó redis

para d em {1… 6}
faça
cd / etc / redis / redis-cluster / redis600 $ d
redis-server redis.conf
concluído

ps -elf | grep redis #Ver processo
Insira a descrição da imagem aqui

⑤ Inicie o cluster

redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1

#As seis instâncias são divididas em três grupos, cada grupo tem um mestre e um escravo, a frente é o nó mestre e a parte de trás é o nó escravo. Você precisa inserir sim ao interagir abaixo para criá-lo.
--Replicas 1 significa que cada nó mestre tem 1 nó escravo
Insira a descrição da imagem aqui

⑥ Grupo de teste

redis-cli -o 6001 -c # -c salto entre nós

slots de cluster #Veja o intervalo de número do slot de hash do nó
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_51615030/article/details/114122248
Recomendado
Clasificación