使用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

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

哨兵模式

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

准备三台虚拟机

        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.hqwc.cn/news/131872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【网络安全】「漏洞原理」(二)SQL 注入漏洞之理论讲解

前言 严正声明&#xff1a;本博文所讨论的技术仅用于研究学习&#xff0c;旨在增强读者的信息安全意识&#xff0c;提高信息安全防护技能&#xff0c;严禁用于非法活动。任何个人、团体、组织不得用于非法目的&#xff0c;违法犯罪必将受到法律的严厉制裁。 【点击此处即可获…

龙讯旷腾:如何建立基于第一性原理的正向研发模式,原子级计算伴随的时间和空间尺度增长将带来的变革

2023年10月8-11日&#xff0c;由中国材料研究学会主办的第四届中国新材料产业发展大会在浙江温州隆重举行。来自全国各地的6000余名新材料专家、企业家、投资家、当地高等院校和企事业单位的代表以及51位两院院士出席了本次大会。龙讯旷腾总经理吕海峰特邀做“先进材料数字化研…

IntelliJ IDEA Maven 项目的依赖分析

在一个 maven 的项目中&#xff0c;我们需要知道我们的项目中使用的包可能有哪些冲突。 这个在 IntelliJ IDEA 中提供了贴心的查看。 选择 Maven 项目中的分析依赖。 随后&#xff0c;IntelliJ IDEA 将会打开一个依赖分析的标签页。 在这个标签页中&#xff0c;我们可以看到…

四维曲面如何画?matlab

clc; clear all [theta,phi]meshgrid(linspace(0,pi,50),linspace(0,2*pi,50)); zcos(theta); xsin(theta).*cos(phi); ysin(theta).*sin(phi); f-1*((x.*y).2(y.*z).2(z.*x).^2); surf(sin(theta).*cos(phi).*f,sin(theta).*sin(phi).*f,cos(theta).*f,f) 结果

Qt开发学习笔记02

将窗口设为提示框 Qt::ToolTipQt 数据库连接池 #ifndef SQLITE_H #define SQLITE_H#include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery> #include <QQueue> #include <QMutex> #include <QDebug> #include "../con…

【Redis实战】分布式锁

分布式锁 synchronized只能保证单个JVM内部的线程互斥&#xff0c;不能保证集群模式下的多个JVM的线程互斥。 分布式锁原理 每个JVM内部都有自己的锁监视器&#xff0c;但是跨JVM&#xff0c;就会有多个锁监视器&#xff0c;就会有多个线程获取到锁&#xff0c;不能实现多JV…

品牌低价的形式有哪些

线上产品五花八门&#xff0c;价格也有高低&#xff0c;但有时同一款商品&#xff0c;看似页面价一样&#xff0c;计算完促销信息后的到手价都会有所不同&#xff0c;有些店铺甚至会使用隐藏优惠券&#xff0c;如咨询客服领券、新人券等&#xff0c;而这些丰富的优惠方式&#…

NSSCTF做题(8)

[SWPUCTF 2022 新生赛]js_sign 看到了js代码 有一个base64编码&#xff0c;解密 最后发现这是一个加密方式 去掉空格之后得到了flag NSSCTF{youfindflagbytapcode} [MoeCTF 2022]baby_file 提示说有一个秘密看看你能不能找到 输入?filesecret 出现报错 输入php伪协议读取i…

VsCode同时编译多个C文件

VsCode默认只能编译单个C文件&#xff0c;想要编译多个文件&#xff0c;需要额外进行配置 第一种方法 ——> 通过手动指定要编译的文件 g -g .\C文件1 .\C文件2 -o 编译后exe名称 例如我将demo.c和extern.c同时编译得到haha.exe g -g .\demo.c .\extern.c -o haha 第二种…

Redis-集群

Redis-集群 主从复制和哨兵只能在主节点进行写数据&#xff0c;从节点读取数据&#xff0c;因此本质上&#xff0c;是进行了读写的分离&#xff0c;每个节点都保存了所有的数据&#xff0c;并不能实现一个很好的分布式效果。 1.哈希求余算法 假设有N台主机&#xff0c;对每台…

k8s 集群部署 kubesphere

一、最小化部署 kubesphere 1、在已有的 Kubernetes 集群上部署 KubeSphere&#xff0c;下载 YAML 文件: wget https://github.com/kubesphere/ks-installer/releases/download/v3.4.0/kubesphere-installer.yaml wget https://github.com/kubesphere/ks-installer/releases/…

stable diffusion艰难炼丹之路

文章目录 概要autoDL系统盘爆满autoDL python3.8切换python3.10dreambooth训练大模型完成后报错 概要 主要是通过autoDL服务器部署stable diffusion&#xff0c;通过dreambooth训练大模型。 问题&#xff1a; autoDL系统盘爆满autoDL python3.8切换python3.10dreambooth训练大…