使用Docker Compose搭建Redis哨兵架构

news2025/3/13 8:46:33

搭建Redis哨兵(sentinel)

之前我们通过深入理解REDIS哨兵原理了解了Redis哨兵(sentinel)的原理,今天我们手动部署一个哨兵架构。要在Docker中搭建Redis哨兵(sentinel)架构,需要Redis的主从实例以及哨兵实例。之前我们已经使用Docker Compose搭建Redis主从复制过了,下面我们通过Docker Compose创建一个Redis哨兵架构。

图片

3. 创建docker-compose.yml文件,内容如下

  version: '3'
  services:
    redis-master:
      image: redis:latest
      container_name: redis-master
      ports:
        - "6379:6379"
      command: redis-server

    redis-slave1:
      image: redis:latest
      container_name: redis-slave1
      ports:
        - "6380:6379"
      command: redis-server --slaveof redis-master 6379

    redis-slave2:
      image: redis:latest
      container_name: redis-slave2
      ports:
        - "6381:6379"
      command: redis-server --slaveof redis-master 6379

    redis-sentinel1:
      image: redis:latest
      container_name: redis-sentinel1
      ports:
        - "26379:26379"
      command: redis-sentinel /etc/redis-config/sentinel.conf
      volumes:
        - "./sentinel1/conf/sentinel.conf:/etc/redis-config/sentinel.conf"
      depends_on:
        - redis-master
        - redis-slave1
        - redis-slave2

    redis-sentinel2:
      image: redis:latest
      container_name: redis-sentinel2
      ports:
        - "26380:26379"
      command: redis-sentinel /etc/redis-config/sentinel.conf
      volumes:
        - "./sentinel2/conf/sentinel.conf:/etc/redis-config/sentinel.conf"
      depends_on:
        - redis-master
        - redis-slave1
        - redis-slave2

    redis-sentinel3:
      image: redis:latest
      container_name: redis-sentinel3
      ports:
        - "26381:26379"
      command: redis-sentinel /etc/redis-config/sentinel.conf
      volumes:
        - "./sentinel3/conf/sentinel.conf:/etc/redis-config/sentinel.conf"
      depends_on:
        - redis-master
        - redis-slave1
        - redis-slave2

    在这个示例中,我们有一个名为redis-master的Redis主节点,两个redis-slave的Redis从节点,以及3个redis-sentinel的Redis哨兵实例。

4. 创建一个名为sentinel.conf的配置文件,其中包含有关哨兵的配置信息。并将配置文件分别放到sentinel的conf目录下

sentinel monitor mymaster redis-master 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel resolve-hostnames yes

这个配置文件告诉哨兵监视名为mymaster的主节点,并在主节点不可用时触发故障转移。

下面是最终目录结构:

图片

5. 确保在创建docker-compose.yml文件和sentinel.conf配置文件之后,使用以下命令启动容器:

docker-compose up -d

图片

docker ps查看创建了一个Redis哨兵架构,包括一个主节点、一个从节点和一个哨兵实例。

图片

 

  1.  我们创建一个文件夹用于存放相关数据及配置文件。

    /opt/docker/redis/sentinel
  2. 在文件下分别创建Redis及sentinel示例的目录,我这里为了简单省略了Redis实例的配置。并给与目录读写权限。

验证故障转移主从切换

1. 首先我们看下Redis主从是否正常,进入容器:

docker exec -it redis-master redis-cli

图片

  输入info我们看下主从状态:

图片

2. 停止redis-master实例

docker stop redis-master

3. 观察sentinel状态,可以看到主从切换到172.18.0.2这个实例了。

图片

  这里我们看下Redis实例的IP,172.18.0.2reids-slave1的IP。

    

图片

    

4. 然后我们进入redis-slave1容器查看状态

docker exec -it redis-slave1 redis-cli

    输入info我们看下主从状态:可以看到主从已经同步了。

图片

至此Redis哨兵我们已经搭建好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1455545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)

文章目录 一、索引概述二、索引结构三、结构 - B-Tree四、结构 - BTree五、结构 - Hash六、索引分类七、索引语法1.案例代码 八、SQL性能分析1.查看SQl执行频率2.慢查询日志3.PROFILES详情4.EXPLAIN执行计划 九、 索引使用规则十、SQL 提示十一、覆盖索引十二、前缀索引十三、单…

Qt的基本操作

文章目录 1. Qt Hello World 程序1.1 通过图形化界面的方式1.2 通过代码的方式实现 2. Qt 的编码问题3. 使用输入框实现hello world4. 使用按钮实现hello world5. Qt 编程注意事项6. 查询文档的方式7. 认识Qt坐标系 1. Qt Hello World 程序 1.1 通过图形化界面的方式 我们先讲…

抖音关键词搜索爬虫,抖音API数据接口,抖音商品详情数据采集

抖音商品API接口抖音关键词搜索抖音直播间小黄车抖店商品数据采集 除了微博,小红书,抖音也是一个巨大的流量池。 除了评论,其实关键词搜索视频是更为常见的一个需求,于是上周末抽空开发了下,完成了 mvp。

鸿蒙新手入门-环境准备问题解析

Node.js版本与API配套关系 由于SDK的部分工具依赖Node.js运行时,推荐使用配套API版本的Node.js,保证工程的兼容性。 匹配关系见下表: API LevelNode.js支持范围API Level≤914.x(≥14.19.1)、16.xAPI Level>914.…

Graph + LLM图数据库技术如何助力行业大语言模型应用落地

随着 AI 人工智能技术的迅猛发展和自然语言处理领域的研究日益深入,如何构建强大的大语言模型对于企业来说愈发重要,尤其是在特定行业领域中。 图数据库作为处理复杂数据结构的有力工具,为企业构建行业大语言模型提供了强大的支持。本文将探…

AI 文生图提示词分类(合集 · 第一季)

一、时间和季节 Time and Season 1、时间描述 Time Description 比如,日出、黄昏、夜晚、清晨 / Sunrise, Sunset, Night, Early Morning 2、季节变化 Seasonal Changes 比如,春天、夏天、秋天、冬天 / Spring, Summer, Autumn, Winter 二、场景描述 Sce…

无人机技术,无人机动力系统知识,电机、电调、桨叶技术详解

无人机动力系统中的电机、电调和桨叶技术都是非常重要的部分,以下是对这些技术的详解: 无人机电机 在无人机动力系统中,电机是将电能转化为机械能的关键部件。其主要作用是产生旋转力矩,驱动螺旋桨的旋转,从而实现无…

【软考中级备考笔记】数据的表示和校验码

2024/2/18 – 数据的表示和校验码 天气:阴雨 春节假期结束后第一个工作日,开始备考中级软件工程师。 希望在今年5月底的软考中取得中级证书 视频地址:https://www.bilibili.com/video/BV1Qc411G7fB 1. 计算机的总体架构 从下图中可以看出&am…

【漏洞复现-通达OA】通达OA身份认证绕过漏洞

一、漏洞简介 通达OA(Office Anywhere网络智能办公系统)是中国通达公司的一套协同办公自动化软件。通达OA 2013-通达OA2017存在一个认证绕过漏洞,利用该漏洞可以实现任意用户登录。攻击者可以通过构造恶意攻击代码,成功登录系统管理员账户,继而在系统后台上传恶意文件控制…

论UI的糟糕设计:以百度网盘为例

上面这一排鼠标一经过就会弹出来(不是点才弹出来),然后挡住你的各种操作, 弹出来时你就必须等它消失,卡一下才能操作。 在用户顺畅地操作内容时,经常就卡一下、卡一下、卡一下…… 1、比如鼠标从下到上&am…

【点云】生成有凹凸的平面

文章目录 前言高斯函数原理代码保存 测试测试1 :领域曲率代码测试2:高斯曲率代码 加上噪点测试1测试2改进 前言 尝试用一些数据生成有凹凸面的点云。 我们姑且把z轴当成有凹凸的缺陷,x轴和y轴共同组成一个平面。 高斯函数 原理 高斯函数wi…

搭建游戏服务器需要高防御的服务器吗?

随着网络技术的不断发展,游戏行业也迎来了前所未有的发展机遇。然而随着游戏用户的不断增加,游戏服务器的安全问题也日益突出。一些攻击者可能会对游戏服务器进行攻击,例如DDoS攻击、CC攻击等,导致服务器无法正常运行,…

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB(不使用Homebr…

嵌入式第十七天!(文件IO)

文件IO: 标准IO和文件IO的区别: 1. 标准IO是库函数,是对系统调用的封装 2. 文件IO是系统调用,是Linux内核中的函数接口 3. 标准IO是有缓存的 4. 文件IO是没有缓存的 1. 操作步骤: 打开 -> 读/写 -> 关闭 2. 打开…

PyCharm - Script parameters (脚本参数)

PyCharm - Script parameters [脚本参数] References Run -> Edit Configurations… -> Run/Debug Configurations -> Configuration -> Script parameters 命令行: python display_yolo_log.py ./person_training_log/person_train_log_DIMM40_stdout…

Github 2024-02-12 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-02-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Rust项目3Python项目3JavaScript项目1TypeScript项目1C项目1C项目1PowerShell项目1非开发语言项目1 SubQuery…

NoSQL 数据库有哪些类型?

NoSQL 数据库主要可以分为下面四种类型: 键值:键值数据库是一种较简单的数据库,其中每个项目都包含键和值。这是极为灵活的 NoSQL 数据库类型,因为应用可以完全控制 value 字段中存储的内容,没有任何限制。Redis 和 D…

[AIGC] 利用 chatgpt 深入理解 Java 虚拟机(JVM)

Java 虚拟机(JVM)是 Java 编程语言的核心运行环境,它负责解释和执行 Java 字节码。它是 Java 程序能够跨平台运行的关键,因为不同的操作系统和硬件平台都有自己的指令集和体系结构,而 JVM 则提供了一个统一的运行环境&…

springsecurity记住我登录时访问无权限接口,跳转登录界面

贴一下springsecurity无权限时异常处理的逻辑 未登录状态:如果用户尝试访问需要认证的资源但未登录,即未经过认证,在这种情况下应该跳转到登录页面或者返回登录提示,让用户进行身份验证。通过调用 AuthenticationEntryPoint 可以统…

BufferedImage 这个类在jdk17中使用哪个import导入

在Java开发中,BufferedImage 类是用于处理图像数据的一个类。在JDK 17中,BufferedImage 类属于 java.awt.image 包。因此,要在你的Java程序中使用 BufferedImage 类,你需要通过以下方式导入该类: import java.awt.ima…