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