基于Docker搭建Redis7.0主从哨兵集群高可用模式

2023-11-12

Docker搭建Redis主从哨兵模式

本文基于docker-compose、Redis7.0版本搭建Redis1主2从3哨兵高可用集群,不同版本redis配置文件略有差异,请参考官方文档Github地址Redis官网地址

如下图可以看出Sentinel的主要职责是监控redis集群状态然后告诉客户端,当master不可用时自动选举slave为master实现集群高可用,客户端最终操作的是redis服务
在这里插入图片描述

目录结构如下

redis-sentinel
├── redis
│   └── docker-compose.yml
└── sentinel
    ├── docker-compose.yml
    ├── sentinel1.conf
    ├── sentinel2.conf
    ├── sentinel3.conf
    └── sentinel.conf

一、主从搭建

1、在redis目录下创建docker-compose.yml,具体内容如下

########## 集群 DOCKER/NAT 支持 ##############
这里的slave-announce-ip、slave-announce-port是宿主机IP与端口,不设置的话哨兵模式下访问的是容器内IP端口,不能为外部应用提供服务

version: '3'
services:
  master:
    image: redis:7.0
    container_name: redis-master
    command: bash -c "redis-server  --requirepass 123456  --masterauth 123456 --protected-mode no --slave-announce-ip 192.168.0.110 --slave-announce-port 6379"
    ports:
      - 6379:6379
  slave1:
    image: redis:7.0
    container_name: redis-slave-1
    ports:
      - 6380:6379
    command:  bash -c "redis-server --slaveof redis-master 6379 --masterauth 123456  --requirepass 123456 --protected-mode no --slave-announce-ip 192.168.0.110 --slave-announce-port 6380"
  slave2:
    image: redis:7.0
    container_name: redis-slave-2
    ports:
      - 6381:6379
    command: bash -c "redis-server --slaveof redis-master 6379 --masterauth 123456 --requirepass 123456 --protected-mode no --slave-announce-ip 192.168.0.110 --slave-announce-port 6381"

2、启动并验证Redis主从是否创建成功

在终端redis目录下执行docker-compose up -d,docker ps可查看服务,docker exec -it redis-master bash 进入容器可查看redis主从信息,此时master负责写,slave只读
s

二、部署sentinel哨兵集群

在sentinel目录下创建docker-compose.yml、sentinel1.conf、sentinel2.conf、sentinel3.conf,具体内容如下

1、编写sentinel.conf配置文件

protected-mode no
port 26379
dir "/tmp"
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 192.168.0.110 6379 2
# 用于验证主节点和副本的密码
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes

2、将编sentinel.conf复制3份

sentinel1.conf
sentinel2.conf
sentinel3.conf

目前运行哨兵必须指定配置文件sentinel.conf,以下截图为官方说明
在这里插入图片描述

3、编写哨兵docker-compose.yml内容

version: '3'
services:
  sentinel1:
    image: redis:7.0
    container_name: redis-sentinel-1
    ports:
      - 26379:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf
  sentinel2:
    image: redis:7.0
    container_name: redis-sentinel-2
    ports:
    - 26380:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf
  sentinel3:
    image: redis:7.0
    container_name: redis-sentinel-3
    ports:
      - 26381:26379
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
    
networks:
  default:
    external:
      name: redis_default

哨兵和副本自动发现

Sentinel 使用 Redis 的 Pub/Sub 功能来发现监控master的其他Sentinel并与其他 Sentinel 保持连接,以便相互检查彼此的可用性并交换消息。因此,您不需要在运行的每个 Sentinel 实例中配置其他 Sentinel 地址信息。

同样,您也不需要配置master的slave节点列表,因为 Sentinel 会自动发现此列表以查询 Redis

4、启动并验证sentinel是否创建成功

在sentinel目录下执行docker-compose up -d,docker ps可查看服务,docker exec -it redis-sentinel-1 bash 进入容器可查看哨兵集群信息
在这里插入图片描述

# 最上面的是主节点IP端口与集群名称等信息
# num-slaves 表示有2个从节点
# num-other-sentinels 表示除此之外还有两个哨兵

5、集群高可用验证

停掉mysql-master服务,等待10秒,再次查看集群信息,发现mysql-salve-2升级成了master节点
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Docker搭建Redis7.0主从哨兵集群高可用模式 的相关文章

随机推荐

  • 【华为OD机试真题 JAVA】机器人走迷宫

    标题 机器人走迷宫 时间限制 1秒 内存限制 65536K 语言限制 不限 1 房间由X Y的方格组成 例如下图为6 4的大小 每一个方格以坐标 x y 描述 2 机器人固定从方格 0 0 出发 只能向东或者向北前进 出口固定为房间的最东北
  • js实现自动打开浏览器是如何实现的?

    原理 针对不同的系统 使用Node js的子进程 child process 模块的spawn方法 调用系统的命令打开浏览器 具体命令 mac open https blog csdn net wswq2505655377 win star
  • Pytorch 图像处理中常用的注意力机制的解析与代码详解

    说在前面的前言 什么是注意力机制 代码下载 注意力机制的实现方式 1 SENet的实现 2 CBAM的实现 3 ECA的实现 注意力机制的应用 说在前面的前言 注意力机制是一个非常有效的trick 注意力机制的实现方式有许多 我们一起来学习
  • 解决pip下载慢的几种方式,最后一种一劳永逸

    我们下载模块的话 如果直接pip安装 一般下载会非常慢 运气不好 直接下载超时 因为默认是使用国外的源进行下载 不知道方法的话 直接弄一天也是有可能的 如果将下载源修改为国内的 那速度直接起飞 方法一 一般来说 我们可以直接在安装模块的时候
  • 快充技术

    为了规范快充标准 USB IF USB标准化组织 不久前发布了USB PD 3 0的重要更新 旨在一统快速充电技术规范的PPS Programmable Power Supply 以实现对高通QC4 0 3 0 联发科PE3 0 2 0 华
  • linux shell 数字等于怎么判断

    在 Linux shell 中可以使用等号 来判断一个变量是否等于某个数字 举个例子 如果要判断变量 x 是否等于 5 可以使用以下代码 if x eq 5 then echo x is equal to 5 else echo x is
  • 数据挖掘-可挖掘的数据类型

    可挖掘的数据类型 1 数据库数据 数据库系统 也成数据库管理系统 DBMS 由一组内部相关的数据 称作数据库 和一组管理和存取数据的软件程序组成 关系数据库是表的汇集 每个表都被赋予一个唯一的名字 每个表都包含一组属性 列或字段 并且通常存
  • 【Linux】用户和权限

    文章目录 前言 什么是 root 用户 su 命令和 exit 命令 sudo 命令 为普通用户配置 sudo 认证 用户 用户组管理 什么是Linux 用户和用户组 用户组管理 用户管理 创建用户 删除用户 查看用户所属组 将指定用户添加
  • SOCK_RAW PF_PACKET IPv6带物理地址发送报文

    通过link layer发送IPv4 IPv6 例子如下 http www pdbuchan com rawsock rawsock html 发送ipv4 http www pdbuchan com rawsock tcp4 ll c 发
  • onedrive的多电脑同步妙用

    序言 很多时候 一些问题与想法 必须要有多个设备的背景 概述 通过两台电脑的日常使用思考 展现OneDrive这一同步利器 以及OneDrive的理念与意义 正文 背景 三月份由于一些原因 入手了一个主机 原来的笔记本一下子变成了键盘托 想
  • svn在idea中的使用

    idea在使用svn之前需要对svn进行一下设置 svn默认是需要你去指定客户机自己安装的svn客户端 但这要求我们当初安装时需要将安装svn的 exe那个程序选上 一般大家安装时都不会安装 idea默认集成的也有svn 我们只要简单设置一
  • 6.带你入门matlab 协方差和相关系数( matlab程序)

    1 简述 协方差 V cov X V cov X flag 同上 X为矩阵 相关系数 R corr X X为矩阵 协方差和相关系数函数的使用如下 代码及运行结果 协方差 clear all X1 rand 1 5 c1 cov X1 方差
  • 常用的文件操作命令-重定向-管道符-笔记

    文件操作命令 mkdir 文件名 创建目录 mkdir 文件名 文件名 连续创建目录 mkdir p 文件名 文件名 递归创建目录 touch 文件 创建文件 rm rf 强制且不提醒删除文件 rmdir 删除目录 mv 文件名 新文件名
  • 解决Debian 11系统缺少无线网卡固件rtl8192cfw.bin

    解决Debian 11系统缺少无线网卡固件rtl8192cfw bin 一 先简单介绍解决办法 rtlwifi rtl8192cfw bin 是无线网卡的固件 其实缺少它网卡也是可以用的 只是不知道是不是这个原因导致丢包频繁 在CSDN找到
  • java 前缀树的实现,敏感词的匹配和标记

    目录 一 前缀树的介绍和定义 1 前缀树的定义 2 前缀树的结构 二 前缀树的实现 1 向前缀树中增加词语 2 向前缀树中删除词语 3 对于使用前缀树进行词语标识 4 前缀树的实现代码 三 前缀树使用及测试 1 向前缀树上增加词语 2 根据
  • 【计算机视觉

    文章目录 一 检测相关 13篇 1 1 Polygon Intersection over Union Loss for Viewpoint Agnostic Monocular 3D Vehicle Detection 1 2 Radar
  • c++ 和cuda混合编程 VS2015 C++ 调用 cuda

    1 新建一个C 项目 2 右键添加一个cuda C C file 3 添加下面 lib 库 右键项目 gt 属性 gt 链接器 gt 输入 gt 附加依赖项目 cudart static lib kernel32 lib user32 li
  • S3C2440之PWM

    include uart h include stdlib h MS延时 void delay unsigned int time unsigned int i j for i 0 i
  • python通过ssl加密连接mysql

    目录 1 django程序的配置 2 pymysql连接数据库 3 DBUtils数据库连接池连接配置 我们在连接某些数据库时 需要提供ssl证书 如果是IT的数据库 那么可能会提供下载 如果是自己想做 可参考如下步骤 https dev
  • 基于Docker搭建Redis7.0主从哨兵集群高可用模式

    Docker搭建Redis主从哨兵模式 本文基于docker compose Redis7 0版本搭建Redis1主2从3哨兵高可用集群 不同版本redis配置文件略有差异 请参考官方文档Github地址与Redis官网地址 如下图可以看出