Redis哨兵集群搭建(Docker)

  1. 创建一个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


 


版权声明:本文为weixin_58401609原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。