使用docker创建redis实例、主从复制、哨兵集群

单机模式

     

1 拉取镜像
       docker pull redis:7.2.1

2 新建redis映射配置文件夹data和conf
   $ mkdir -p /mydata/redis/data
   $ mkdir -p /mydata/redis/conf

3 切换到redis配置文件映射目录/mydata/redis/conf
   cd /mydata/redis/conf

4 编辑配置文件
  vim redis.conf

  输入一下内容:
  protected-mode no                ----关闭保护模式,可以远程访问
  appendonly yes                      -----持久化
  requirepass 123456                 -----登录密码

5 启动redis容器
  docker run --name redis-7.2.1 -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:7.2.1 redis-server /etc/redis/redis.conf

主从复制

     1 准备2台虚拟机,ip分别是:192.168.56.102,192.168.56.103

        其中102做master节点,103作为slave节点

     2 102上操作如下:

          a  拉取镜像
              docker pull redis:7.2.1
          b  新建redis映射配置文件夹data和conf
              mkdir -p /mydata/redis/data
              mkdir -p /mydata/redis/conf
          c  切换到redis配置文件映射目录/mydata/redis/conf
              cd /mydata/redis/conf
          d 编辑配置文件
             vim redis.conf
                  输入一下内容:
                  protected-mode no                ----关闭保护模式,可以远程访问
                  appendonly yes                      -----持久化
                  requirepass 123456                 -----登录密码
          e 启动redis容器
                  docker run --name redis-master -p 6379:6379 -v /mydata/redis/data:/data -v                 /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:7.2.1 redis-server                 /etc/redis/redis.conf

       3  103上操作如下

        a  拉取镜像
                docker pull redis:7.2.1
        b  新建redis映射配置文件夹data和conf
                mkdir -p /mydata/redis/data
                mkdir -p /mydata/redis/conf
        c  切换到redis配置文件映射目录/mydata/redis/conf
                cd /mydata/redis/conf
        d 编辑配置文件
                vim redis.conf
                   输入一下内容:
                    protected-mode no                ----关闭保护模式,可以远程访问
                    appendonly yes                      -----持久化
                    requirepass 123456                 -----登录密码
                    replicaof 192.168.56.102 6379   ---同步102数据
                    masterauth 123456                  ---102登录密码
                   replica-read-only yes                ---只读
        e 启动redis容器
                     docker run --name redis-slave -p 6379:6379 -v /mydata/redis/data:/data -v                 /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis:7.2.1 redis-server                 /etc/redis/redis.conf

        4  再次在102上的redis查看集群信息
           docker exec -it redis-master /bin/bash
           redis-cli 
           auth 123456
           info replication

    看到如下信息,表示主从集群已经搭建好了使用docker创建redis实例、主从复制、哨兵集群_第1张图片

哨兵模式

       在以上主从复制的基础上,完成哨兵模式搭建

准备三台虚拟机

        192.168.56.102,192.168.56.103,192.168.56.104,其中102做redis主备的 master 103是slave 104做sentinel

102 上的操作

        同上主从模式搭建,只是在第四步配置redis配置文件时,加入以下:

        masterauth 123456      ------这是因为,当master节点down之后再次重启,会从新的master节点同步数据,需要密码验证

      其他不变

103 上操作:

        同上主从复制

104 上操作

        a   拉取镜像
                docker pull redis:7.2.1

        b  新建redis映射配置文件夹data和conf
                mkdir -p /mydata/redis/conf

        c 切换到redis配置文件映射目录/mydata/redis/conf
                cd /mydata/redis/conf

         d 编辑配置文件
                    vim redis.conf

                输入一下内容:                

port 26379

 # 设定密码认证
requirepass 123456

 # 配置哨兵的监控参数
 # 格式:sentinel monitor
# master-name是为这个被监控的master起的名字
# ip是被监控的master的IP或主机名。因为Docker容器之间可以使用容器名访问,
# redis-port是被监控节点所监听的端口号
# quorom设定了当几个哨兵判定这个节点失效后,才认为这个节点真的失效了
  sentinel monitor redis_102 192.168.56.102 6379 1            

  # 连接主节点的密码
  # 格式:sentinel auth-pass
  sentinel auth-pass redis_102 123456


  # master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
  # 格式:sentinel down-after-milliseconds
   sentinel down-after-milliseconds redis_102 30000

        e 启动sentinel实例
                docker run -p 26379:26379 --name sentinel-1 \
                -v /mydata/redis/sentinel.conf:/etc/redis/sentinel.conf \
                -d redis:7.2.1 redis-sentinel /etc/redis/sentinel.conf

验证主从功能和哨兵模式

        在master上设置数据,

         使用docker创建redis实例、主从复制、哨兵集群_第2张图片

        在slave上可以看到对应的值

        

           当停掉master节点,在sentinel上日志

            使用docker创建redis实例、主从复制、哨兵集群_第3张图片

          当再次重启102节点时

        

        这里在sentinel上检测到102再次上线

创作不易,如果觉得有用,点赞、收藏、关注!

你可能感兴趣的:(docker搭建各项中间件操作,docker,redis,容器)