Artigo Diretório
1 Breve descrição do redis
1.1 Tipos de dados suportados
O Redis oferece suporte a cinco tipos de dados: string (string), hash (hash), lista (lista), conjunto (coleção) e zset (conjunto classificado: conjunto ordenado).
Endereço de referência: https://www.runoob.com/redis/redis-data-types.html
1.2 Redis tem solução de alta disponibilidade
Ponto único de falha: altamente disponível, pelo menos, 3 nós, incluindo 1 mestre e 2 escravos. Quando o nó mestre para o serviço, um de todos os nós escravos será selecionado como o nó mestre. Quando o nó mestre não para o serviço, mas o status de monitoramento não responde devido a problemas de rede, o padrão é interrompido. Ao servir, haverá dois hosts, e haverá duas fontes de dados ao copiar dados do nó, causando problemas de sincronização de dados.
Solução: o Redis recomenda usar o modo sentinela para realizar a recuperação automática monitorando o mestre e o escravo. Quando o nó mestre parar o serviço, ele será rebaixado para o nó escravo. Quando o monitoramento e o serviço do nó mestre offline iniciar, o nó mestre offline entrará na fila automaticamente para o upgrade.
2 Construa um cluster redis
2.1 Definir o arquivo de inicialização do redis
- O método de inicialização é: docker-compose up -d
- O diretório do arquivo é: / usr / local / docker / redis /
- O nome do arquivo é: docker-compose.yml
- O conteúdo do arquivo é:
version: '3'
services:
master:
restart: always
container_name: redis-master
image: redis
ports:
- 6379:6379
slave1:
restart: always
container_name: redis-slave-1
image: redis
ports:
- 6380:6379
command: redis-server --slaveof redis-master 6379
slave2:
restart: always
container_name: redis-slave-2
image: redis
ports:
- 6381:6379
command: redis-server --slaveof redis-master 6379
2.2 Definir o arquivo de configuração do sentinela
- O diretório do arquivo é: / usr / local / docker / redis / sentinel /
- O nome do arquivo é:
sentinel1.conf、sentinel2.conf、sentinel3.conf
- O conteúdo do arquivo é: o conteúdo dos 3 arquivos é o mesmo
port 26379
dir /tmp
#自定义集群名,ip为主节点的ip,2为最小投票数
sentinel monitor mymaster 192.168.30.148 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
2.3 Definir o arquivo de inicialização do Sentinel
- O método de inicialização é: docker-compose up -d
- O diretório do arquivo é: / usr / local / docker / redis / sentinel /
- O nome do arquivo é: docker-compose.yml
- O conteúdo do arquivo é:
version: '3'
services:
sentinel1:
image: redis
container_name: sentinel1
ports:
- 26379:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
sentinel2:
image: redis
container_name: sentinel2
ports:
- 26380:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
sentinel3:
image: redis
container_name: sentinel3
ports:
- 26381:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
2.4 Se a verificação foi bem sucedida
2.4.1 Verifique se o redis foi iniciado com sucesso
Por meio da ferramenta redis desktop manager, digite o ip e a porta e verifique a conexão
2.4.2 Verifique se o sentinela foi iniciado com sucesso
Verificação de comando:
docker exec -it sentinel1 bash #进入容器
redis-cli -p 26379 #连接redis
sentinel master mymaster #查看监控节点信息