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

news/2024/12/23 1:10:42/

单机模式

     

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

    看到如下信息,表示主从集群已经搭建好了

哨兵模式

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

准备三台虚拟机

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

  # 连接主节点的密码
  # 格式:sentinel auth-pass <master-name> <password>
  sentinel auth-pass redis_102 123456


  # master在连续多长时间无法响应PING指令后,就会主观判定节点下线,默认是30秒
  # 格式:sentinel down-after-milliseconds <master-name> <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上设置数据,

         

        在slave上可以看到对应的值

        

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

            

          当再次重启102节点时

        

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

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


http://www.ppmy.cn/news/1150087.html

相关文章

自定义类型:结构体,枚举,联合 (1)

1 结构体的声明 1.1 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明 struct tag { member-list; }variable-list; 例如描述一个学生&#xff1a; struct是结构体关键字&#xff0c;不能省略。 …

各种业务场景调用API代理的API接口教程

API代理的API接口在各种业务场景中具有广泛的应用&#xff0c;本文将介绍哪些业务场景可以使用API代理的API接口&#xff0c;并提供详细的调用教程和代码演示&#xff0c;同时&#xff0c;我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用API…

SwinTransformer学习记录(一)之整体架构

SwinTransformer自问世以来&#xff0c;凭借其优秀的性能&#xff0c;受到无数研究者的青睐&#xff0c;因此作为一个通用的骨干网络&#xff0c;其再目标检测&#xff0c;语义分割&#xff0c;去噪等领域大杀四方&#xff0c;可谓是风光无限&#xff0c;今天&#xff0c;我们便…

常用linux解压命令

1. 超过4g的zip文件在linux下unzip失败。需要用7z压缩&#xff0c;然后用p7zip命令解压。 p7zip -d x.7z 2. gzip解压.gz文件 gzip -d a11.txt.gz 和 gunzip a1.txt.gz gunzip –c filename.gz > filename #解压缩保留源文件, 上述命令非常容易写错&#xff0c;最后导…

MNIST字符识别(C++)

构建网络 采用官方示例的的lenet网络 训练 相关文件都已编译好&#xff0c;下载后执行命令即可 .\caffe-bin.exe train --solver .\lenet_solver.prototxt 识别 #include <caffe/caffe.hpp>#include <opencv2/core/core.hpp> #include <opencv2/highgui/hi…

Springboot 多模块(A依赖B)集成mybatis , mybatis.mapper-locations 配置多个mapper路径配置

文章目录 一、问题概述二、问题分析 一、问题概述 最近在用SpringBoot 多模块 集成mybatis&#xff0c;模块A 依赖于模块B, 模块A 和模块B 各自有各自的业务逻辑和mapper 文件&#xff0c;模块A 的mapper xml 文件存放在resource 下的 mybatisMapper 文件夹&#xff0c;模块B …

Java学数据结构(4)——PriorityQueue(优先队列) 二叉堆(binary heap)

前言 数据结构与算法作为计算机科学的基础&#xff0c;是一个重点和难点&#xff0c;在实际编程中似乎看不它们的身影&#xff0c;但是它们有随处不在&#xff0c;如影随形。 本系列博客是《数据结构与算法分析—Java语言描述》的读书笔记&#xff0c;合集文章列表如下&#…

Ant Vue Table 合并单元格

项目开发中&#xff0c;有时候需要实现单元格合并的需求,这里记录一下在Ant Design Vue的实现。 <template><div><a-table bordered :data-source"dataSource" :columns"columns"></a-table></div> </template> <…