前置环境,liunx centos 7 , 安装docker , 安装docker compose ,docker pull redis(我用的redis 6.2.* 最新版的。)
1, 首先随便自己找个目录先创建redis 机器目录
eg : /mnt/hgfs/lwb_share_dir/redis-1Master-2salve-3sentinnel
我目录创建在mnt 下,因为我得虚拟机下载软件包慢,所以我构建个共享文件夹和我得宿主机公用目录,这样就可以从宿主机器上下载软件包,虚拟机上用,
tips: 如果不会配置共享文件的同学可以全网搜下,非常简单!!
2,编写docker-compose.yml
version: '3'
services:
master:
image: redis
container_name: redis-master
command: redis-server
ports:
- 6379:6379
slave1:
image: redis
container_name: redis-slave1
ports:
- 6380:6380
command: redis-server --slaveof redis-master 6379
slave2:
image: redis
container_name: redis-slave2
ports:
- 6381:6381
command: redis-server --slaveof redis-master 6379[root@localhost redis-1Master-2salve-3sentinnel]
需要注意的是,从节点savle1 要执行 --slaveof redis-master 6379 就是让该从节点同步主节点容器名为redis-master 端口 6379 当然自己可以自定义名字,
从节点2同理 ;
这样运行 docker-compose - up -d
这样docker-compose ps -a 就可以查看是否启动成功了,启动成功 status Up 代表成功
验证是否主从同步:
我这里用redis manager 连接了主库redis-master ,r然后 创建了key test value 1122323 ,
在从库中查看是否能看到这个key -value
至此一主二从已经创建完了;
创建哨兵 ,
注意此处我遇到了坑:
我从官网上下载了 sentinel .conf
然后复制三份, 在当前文件夹./ sentinel (在构建主从redis 的 docker-compose.yml 同级创建的)如下图:
然后一顿改,如下图:,修改了<master-name> 改成了自己的容器名,redis-master,
ip 改成主节点内网的ip (怎么看 docker insepect redis-master 命令就可以看到)端口也一样,
最后一行的 SENTINEL master-reboot-down-after-period mymaster 0 没改
然后已启动,就报错 :如下
大概意思就是不识别 这一样配置。。。。。。。。。。。。。。。。
解决办法:
遇到这样的问题一定是我们的sentinel.conf 文件出错了,配错了,
于是我只做了我需要配的参数 重新了配置文件:
protected-mode no // 保护模式关闭
sentinel monitor mymaster 192.168.2.211 6379 2 // 当前哨兵监控的主节点,容器名称,ip 和端口,此处选择了默认是mymaster ,而不是redis-master !!!!!!
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1就这几行 ,其他的都删除了包括最后一行,
验证:
总结下,大家在配置的时候一定要有自己的主观思考,别人写的不一定都对,或者和你的环境不同,版本不同都会有这样那样的问题,建议大家不要放弃,总会配对,问题总会解决的!!!!