目录
1.准备
2.授权
3.创建redis容器
4.创建sentinel容器
5.进入sentinel容器
6.常见问题&解决办法
6.1、redis集群slave节点的master ip地址和端口问题:
6.2 sentinel.conf文件配置信息
7.检查是否安装成功:
7.1进入master 节点,执行info replication
7.2 进入任意一个slave节点,执行info replicaiton
7.3进入任意一个sentinel节点
7.3.1执行 SENTINEL master mymaster
7.3.2 执行 SENTINEL slaves mymaster
7.3.3 执行SENTINEL sentinels mymaster
8.测试master 故障并转移
建议redis三个节点(一主二从),sentinel三个节点
在/home/dockergz/sentinelRedis/
目录下创建三个文件夹redis9379、redis9380、redis9381,每个文件夹下各包含两个文件,
redis.conf和sentinel.conf
给redis9379、redis9380、redis9381文件夹及其下面所有文件授权
执行
chmod 777 -R redis9379
chmod 777 -R redis9380
chmod 777 -R redis9381
因为重新选举master,要修改redis.conf和sentinel.conf配置文件,所以需要给这些文件分配读写权限
docker run -itd --name redis9379 -p 9379:6379
-v /home/dockergz/sentinelRedis/redis9379/redis.conf:/etc/redis/redis.conf
--network bridge redis redis-server /etc/redis/redis.conf
--requirepass "pwdtest"
docker run -itd --name sentinel26379 -p 26379:26379
-v /home/dockergz/sentinelRedis/redis9379/sentinel.conf:/etc/sentinelRedis/sentinel.conf
--network bridge docker.io/redis redis-sentinel /etc/sentinelRedis/sentinel.conf
--requirepass "pwdtest"
如果出现:bash: vim: command not found
解决方法如下:
(1)、apt-get update
(2)、apt-get install vim
slave 配置的 master ip地址和端口,必须是redis master启动后,通过 docker inspect 获取到的ip地址和端口,而不是宿主机的地址和宿主机的端口
因此 slave配置的master信息是:
replicaof 172.17.0.6 6379
而不是 replicaof 47.112.153.193 9379
sentinel.conf 中 sentinel monitor 配置是redis-master分配的地址和端口 172.17.0.6 6379
看到master下面有两个slave
看到slave的master ip地址和replicaof 172.17.0.6 6379 配置的一致
看到一个master的info和两个slave
看到两个slave的info及master的ip和端口
看到哨兵信息
进入redis master节点,执行redis-cli -a pwdtest -p 6379 DEBUG sleep 60,让主节点睡眠60秒
再执行 docker logs -f sentinel26379
发现主节点 先主观下线sdown->客观下线odown,然后进行选举,选举6380为master,并执行故障转移failover
说明sentinel哨兵集群是成功的。
附.进入redis-cli的方式
方式1:
docker exec -it redis9380 bash
redis-cli -a pwdtest -p 6380
方式2:
docker exec -it redis9380 bash
redis-cli -p 6380
AUTH pwdtest
参考:
Docker容器下Redis的主从配置以及Sentinel哨兵配置 - 灰信网(软件开发博客聚合)
https://www.cnblogs.com/yq055783/p/14496449.html