- 创建一个redis 文件夹 在redis文件夹里面再创建几个文件
四个Conf配置文件夹分别对应三个redis容器和一个哨兵
四个data文件夹 存放数据
先进入两个从节点的文件夹进行配置
进入conf6380 文件夹 (conf6381同理)
vi redis.conf (编辑创建 redis.conf文件)
(port: 从节点的端口号)(192.168.56.10 6379: 主节点地址端口)
2. 创建两个redis容器(其中一个是本身虚拟机里就有的)一共三个 以配置文件(conf6380,conf6381,data6380,data6381)创建
命令: 创建一个redis 6380的容器 6381同理
docker run -id --name redis6380 -p 6380:6380 -v /usr/redis/conf6380/redis.conf:/redis.conf -v /usr/redis/data6380:/data --privileged=true ccee4cdf984f redis-server /redis.conf
--name redis6380 创建的容器名字
-v /usr/redis/conf6380/redis.conf:/redis.conf 配置刚才写的redis.conf 映射到容器的redis.conf
-v /usr/redis/data6380:/data 配置data6380映射到容器的 data6380
--privileged=true 设置权限
ccee4cdf984f reids镜像IMAGE ID
redis-server /redis.conf 执行redis-sentinel 让他以sentinel.conf配置文件执行
3.打开多个窗口进入到 redis redis6380 redis6381 当中
(redis6380 是容器的名字 -p 端口号) redis和redis6381
Role 查看角色
Master 主节点
Slave 从节点 connected已连接的意思反之是connect
4.都连接上之后进行测试在主节点中set 一个值 在从节点中gat出来 如果成功 一主二从搭建完成
5.搭建哨兵(我设置了一个哨兵)也可以设置多个但必须是奇数 公式(哨兵的个数/2+1)
进入conf26379 进行配置
Sentinel monitor pinmaomaster 192.168.56.10 6379 1
(Sentinel monitor pinmaomaster):Sentinel 去监控我的主节点 pinmaomaster是我自己给主节点取的名字 192.168.56.10是自己的ip地址 1:是选取的参数 如果你设置了三个哨兵 那起码要有两个哨兵任务主节点下线了 所以设置2 公式(哨兵的个数/2+1) 当前设置了一个哨兵 所以写1就行了
6.启动哨兵
指令
docker run -it --name sentinel26379 -p 26379:26379 -v /usr/redis/conf26379/sentinel.conf:/sentinel.conf -v /usr/redis/data26379:/data --privileged=true ccee4cdf984f redis-sentinel /sentinel.conf
docker run -it 在前台运行
--name sentinel26379 创建容器的名字
-p 26379:26379 端口映射26379 映射到这个容器的26379 前面的26379是主机的端口
-v /usr/redis/conf26379/sentinel.conf:/sentinel.conf 配置刚才写的sentinel.conf 映射到容器的sentinel.conf
-v /usr/redis/data26379:/data 配置data26379 映射到容器的 data
--privileged=true 设置权限
ccee4cdf984f redis的镜像的IMAGE ID
redis-sentinel /sentinel.conf 执行redis-sentinel 让他以sentinel.conf配置文件执行
执行之后
monitor master pinmaomaster 192.168.56.10 6379 quorum 1 开始监控主节点 192.168.56.10 6379 还能知道现在又那些从节点
从节点1 6380: +slave slave 172.17.0.1:6380 172.17.0.1 6380 @ pinmaomaster 192.168.56.10 6379
从节点2 6381: +slave slave 172.17.0.1:6380 172.17.0.1 6381 @ pinmaomaster 192.168.56.10 6379
7.进行测试
(docker stop redis)把主节点容器关闭(模拟宕机情况) 等待片刻(哨兵默认的配置是30s)
查看6380 和 6381 端口的redis role查看角色
可以看到6381的redis 已经变成master 主节点 下面的从节点有6380
再次启动6379端口的redis 等待片刻 role 查看角色
可以看到 他宕机后再次启动已经是一个从节点了 并且连接主节点6381
以上我们就完美实现了哨兵在Docker环境下的一个功能演示
8.下次启动sentinel哨兵 命令
Spring Boot 整合Redis哨兵模式
spring:
redis:
password: password
timeout: 5000
sentinel:
master: mymaster
nodes: 192.168.40.201:26379,192.168.40.201:36379,192.168.40.201:46379 # 哨兵的IP:Port列表
jedis: # 或lettuce
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0