13. Cluster Redis, replicação mestre-escravo, sentinela

1. Replicação mestre-escravo Redis

        A replicação mestre-escravo refere-se à cópia dos dados de um servidor redis (nó mestre-mestre) para outros servidores redis (nó escravo-escravo).Por padrão, cada servidor redis é um nó mestre, e cada nó mestre pode ter vários ou Existem não há nós escravos, mas um nó escravo só pode ter um nó mestre

1.1 O papel da replicação mestre-escravo

        Redundância de dados: a replicação mestre-escravo implementa backup dinâmico de dados, que é um método de redundância de dados diferente da persistência

        Recuperação de falhas: quando o nó mestre falha, o nó escravo pode fornecer serviços

        Balanceamento de carga: com base na replicação mestre-escravo com separação leitura-gravação, o nó mestre fornece serviços de gravação e os nós escravos fornecem serviços de leitura para compartilhar a carga do servidor

        A pedra angular da alta disponibilidade: a replicação mestre-escravo é a base para a implementação de sentinelas e clusters

1.2 Estrutura comum mestre-escravo

        Um mestre e um escravo: usado para failover do nó mestre do nó escravo, principalmente para segurança de dados e evitando o impacto da persistência no nó mestre

        Um mestre e vários escravos: principalmente para cenários com um grande número de leituras, as leituras são compartilhadas por vários nós, mas isso afeta a estabilidade do nó mestre e afeta a largura de banda

        Mestre-escravo em forma de árvore: Para aliviar o problema de alta pressão no nó mestre causado por um mestre e vários escravos, uma estrutura hierárquica é formada, mestre-escravo-escravo e depois mestre-escravo

1.3 Realize replicação mestre-escravo

        Copie várias cópias de redis.conf e modifique a configuração

92 prot 6379
158 pidfile /var/run/redis_6379.pid
171 arquivo de log "redis6379.log"
253 dbfilename dump6379.rdb

        Pode ser substituído em lotes por comandos

:%s/6379/6380/g  

        Inicie servidores diferentes e abra terminais diferentes para conectar-se a servidores diferentes

servidor redis redis6379.conf

redis-cli -p 6379

        Insira a replicação de informações para visualizar informações como a função do servidor atual

        Digite o comando no servidor para definir o serviço atual como o servidor escravo e quem é seu servidor mestre

salveof número da porta ip do servidor principal

2. redis sentinela

        Quando o servidor principal está inativo, para manter a implementação normal da função, precisamos de um sentinela para selecionar um servidor escravo para se tornar o servidor principal; (o sentinela também é um servidor redis separado, conectado ao servidor principal, e conectado ao escravo através do mestre)

        Para evitar que um único sentinela julgue mal o tempo de inatividade, também podemos usar vários sentinelas (deve ser um número ímpar), definir um parâmetro de votação e somente quando esse número de sentinelas pensar que o servidor mestre está inativo, o mestre- interruptor escravo

        O sentinel.conf do Sentinel deve ser definido da seguinte forma (remover comentários)

modo protegido não # Desligue o modo protegido, conveniente para testar
a porta 26379 #
Monitor sentinela da porta Sentinel mymaster 192.168.41.226 6379 1        

# 192.168.41.226: host ip 6379: porta 1: failover quando pelo menos alguns sentinelas acham que o host está offline

         Digite redis-sentinel sentinel6379.conf para iniciar o sentinela

3. Cluster Redis

        Clusters de cluster Redis são suportados em versões posteriores ao redis 3.0, o que significa que vários servidores mestres redis são conectados entre si para formar um cluster.

Isso resolve o problema de que, embora o modo sentinela possa atender à maioria dos requisitos, ele não pode lidar com um grande número de solicitações de gravação;

         Este também é um P2P clássico (descentralização)

3.1 Implementação do cluster redis

  • Crie um diretório redis-cluster em /usr/local/redis

  • Copie redis6379 para redis-cluster e nomeie-o redis8001.conf

  • 92 Modifique o número da porta em redis8001.conf

  • 158 modificar arquivo pid

  • 171 Modificar arquivos de log

  • 253 Modificar arquivo rdb

  • 699 Habilite aof e configure-o para sim

  • 703 especifique o nome do arquivo aof

  • 832 Habilite o cluster e configure-o para sim

  • 840 Especificar arquivo de configuração de nós

        Para facilitar a inicialização de vários servidores Redis, podemos escrever um script de inicialização, criar um arquivo start_all.sh em /user/local/redis e adicioná-lo ao arquivo

servidor redis redis-cluster/redis8001.conf
servidor redis redis-cluster/redis8002.conf
servidor redis redis-cluster/redis8003.conf
servidor redis redis-cluster/redis8004.conf
servidor redis redis-cluster/redis8005.conf
servidor redis redis-cluster/redis8006.conf
ps -ef|grep redis

        Salve e saia, adicione permissão de execução ao arquivo start_all.sh

chmod +x start_all.sh

         iniciar redis

./start_all

        criar cluster

redis-cli --cluster criar 192.168.74.130:8001 192.168.74.130:8002 192.168.74.130:8003 192.168.74.130:8004 192.168.74.130:8005 192.168.74.1 30:8006 --réplicas de cluster 1 

        Digite sim durante a criação 

        Para se conectar ao cluster redis, use -c

redis-cli -c -p 8001

        Crie um script de encerramento de cluster

#!/bin/bash
PORT=8001
ENDPORT=8006
while [ $((PORT <= ENDPORT)) != "0" ]; faça
   echo "Parando Redis $PORT"
   redis-cli -p $PORT shutdown
   PORT=$((PORT+1))
feito
echo "feito"
exit 0 

        Adicionar permissão de execução 

chmod +x stop_all.sh  

Acho que você gosta

Origin blog.csdn.net/LB_bei/article/details/132539003
Recomendado
Clasificación