docker-compose安装redis-主从+哨兵(3台虚拟机一主两从)

一、部署架构

  1. 主从结构
    • 主节点‌:部署于192.168.56.100
    • 从节点‌:部署于192.168.56.101和192.168.56.103
  2. 哨兵结构
    • 每台服务器部署一个哨兵实例,形成三哨兵集群。
ipredis节点名称sentinel节点名称
192.168.56.100redis-masterredis-sentinel
192.168.56.101redis-slave1redis-sentinel
192.168.56.103redis-slave2redis-sentinel

二、配置文件准备

创建conf目录保存redis.conf和sentinel.conf文件

创建data目录保存appendonly.aof、dump.rdbredis.log文件

1.主节点Redis配置(redis-master.conf

# 任何都可以连接redis
bind 0.0.0.0
# 配置master密码
requirepass 123456
# 宕机后成为从要连接master的密码
masterauth 123456
# 开启持久化
appendonly yes

2.从节点Redis配置(redis-slave.conf

# 指向主节点IP和端口
replicaof 192.168.56.100 6379
# 任何都可以连接redis
bind 0.0.0.0
# 从节点密码
requirepass 123456
# 主节点密码
masterauth 123456
# 开启持久化
appendonly yes

3.哨兵配置(sentinel.conf 

port 26379
# 监控主节点,2为最小投票数
sentinel monitor mymaster 192.168.56.100 6379 2
# 主节点密码
sentinel auth-pass mymaster 123456
# 6秒无响应判定主节点下线              
sentinel down-after-milliseconds mymaster 6000
# 控制同时进行同步的从节点数量为 1  
sentinel parallel-syncs mymaster 1
# 故障转移超时时间              
sentinel failover-timeout mymaster 6000   

三、Docker-Compose文件编写

在三台服务器分别配置docker-compose

#version: '3'
services:   
  redis:
    image: redis:6.2.14 # redis镜像版本
    container_name: redis-master # 容器名称
    ports:
     # 指定宿主机端口与容器端口映射关系
      - 6379:6379
    volumes:
      # 映射配置文件目录
      - ./redis/conf/redis-master.conf:/usr/local/etc/redis/redis.conf
      # 映射数据目录
      - ./redis/data:/usr/local/etc/redis/data
    restart: always # 容器开机自启
    privileged: true # 获取宿主机root权限
    command: redis-server /usr/local/etc/redis/redis.conf # 指定配置文件启动redis-server进程
    networks:
      - my-network

  sentinel:
    image: redis:6.2.14
    container_name: redis-sentinel
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    ports:
      - "26379:26379"
    volumes:
      - ./redis/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf
    restart: always
    networks:
      - my-network

networks:
  my-network:
    #external: true
    name: my-network
    driver: bridge

*从节点需将redis-master.conf替换为redis-slave.conf,并调整container_name
*
sentinel内容不变

四、部署步骤

1.启动服务

docker-compose up -d  # 每台服务器执行

2.验证部署

  • 主从同步检查‌:
docker exec -it redis-master redis-cli -a 123456 info replication

查看roleconnected_slaves字段

  • 哨兵状态检查‌:
docker exec -it redis-sentinel redis-cli -p 26379 sentinel master mymaster

或者

进入哨兵容器:

docker exec -it redis-sentinel /bin/bash

连接哨兵:

redis-cli -p 26379
info

五、测试主从和故障转移

进入redis容器:

docker exec -it redis-master /bin/bash
redis-cli
auth 123456

1.测试主从复制

  • master节点创建一个键值对:

  • 从节点查看key是否存在:

 

主从复制正常!!!

    2. 测试故障转移

    我们把master(192.168.56.100)停掉,查看一个哨兵的日志:

    docker stop redis-master
    docker logs -f redis-sentinel

    故障转移成功!!!

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

    如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

    相关文章

    vue+element 实现蛇形时间轴 拐弯时间轴

    公司业务需要做一个如图效果 分享给有需要的人 有更好的意见欢迎交流 核心代码如下 <div style"display: flex; position: relative"><div style"width: 89%; margin: auto; padding: 10px 0"><div v-for"(item, index) in experien…

    DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程

    DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。‌为了解决这一问题&#xff0c;DeepSeek团队已经暂停了API服务充值&#xff0c;以避免对用户造成业务影响。目前&#xff0c;存量充值金额仍可继续调用&#xff0c;但充值功能暂时不可用‌。 DeepSe…

    动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南

    目录 一、典型案例&#xff1a;系统发布后的GC雪崩事件 &#xff08;一&#xff09;故障现象 1. 刚刚启动时 GC 次数较多 2. 堆内存锯齿状波动 3. GC日志特征&#xff1a;Allocation Failure &#xff08;二&#xff09;问题定位 二、原理深度解析&#xff1a;JVM内存弹…

    OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()

    操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将彩色图像转换为灰度图像。它是数字印刷、风格化的黑白照片渲染&#xff0c;以及许多单通道图像处理应用中的基本工具。 cv::decolor 是 OpenCV…

    STM32 ADC模数转换

    目录 ADC简介逐次逼近型ADCSTM32的ADC输入通道规则组的转换模式单次转换、非扫描模式连续转换、非扫描模式单次转换、扫描模式连续转换、扫描模式间断模式 数据对齐转换时间校准代码软件触发单次转换非扫描模式 ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模…

    Facebook 的历史与发展:从校园网站到全球社交平台

    引言 Facebook&#xff0c;这个全球最大的社交网络平台之一&#xff0c;其发展历程充满了创新和变革。从最初的校园网站到如今的全球社交平台&#xff0c;Facebook 不仅改变了人们的沟通方式&#xff0c;也重塑了信息传播和社交互动的模式。 起源&#xff1a;校园内的点子 Fa…

    自然语言转SQL之Vanna.ai:AI集成数据库

    自然语言转SQL之Vanna.ai&#xff1a;AI集成数据库 一、Vanna.ai是什么二、落地步骤&#xff1a;实现三层需求2.1 官方示例看效果2.2 对接自己的数据库2.3 完全本地化之路 三、构建自己的产品3.1 提问转SQL3.2 执行SQL查询实例2 要实现的功能就是&#xff1a;用中文语言同数据库…

    Android 平台架构系统启动流程详解

    目录 一、平台架构模块 1.1 Linux 内核 1.2 硬件抽象层 (HAL) 1.3 Android 运行时 1.4 原生 C/C 库 1.5 Java API 框架 1.6 系统应用 二、系统启动流程 2.1 Bootloader阶段 2.2 内核启动 2.3 Init进程&#xff08;PID 1&#xff09; 2.4 Zygote与System Serv…

    QT 作业 C++ day5

    作业 代码 MyQThread.h class MyThread : public QThread {Q_OBJECT public:MyThread(QObject *parent nullptr); protected:void run() override; signals://向ui界面发送的 "复制进度" 的信号void copy_process_signal(int index); public slots:// "复…

    24、如何在C++中创建和管理线程?【中高频】 -

    创建线程对象&#xff1a; //无参构造&#xff0c;该线程对象没有关联任何线程函数&#xff0c;也就是它没有启动任何线程:thread t1;//... t1 thread(func, 10);//移动构造&#xff08;调用移动赋值函数&#xff09;t1.join();//含参构造thread t1(func1, 1, 10);//thread 提…

    【Altium】22.11版本后如何导出Gerber镜像层

    1、 文档目标 解决 22.11 版本后如何导出 Gerber 镜像层的问题 2、 问题场景 Gerber 导出旧版本&#xff0c;在 AD 22.11 之前的 Gerber 导出中是存在镜像层的选择。 图 1 软件更新至 AD22.11 及之后版本&#xff0c;在 Gerber 导出设置中无法选择层镜像进行导出。 图 2 3、…

    配置 Thunderbird 以使用 QQ 邮箱

    配置 Thunderbird 以使用 QQ 邮箱 本片文章的操作系统为 windws 10 &#xff0c;thunder bird 客户端版本为 128.7.1esr(64位)。注意到其他文章的图片中 thunder bird 的 ui 界面和我这个不一样&#xff0c;导致看起来不太方便&#xff0c;所以这里写一篇博客。不同版本的 thu…

    wxWidgets GUI 跨平台 入门学习笔记

    准备 参考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…

    DeepSeek系列模型技术报告的阅读笔记

    DeepSeek系列模型技术报告的阅读笔记 之前仔细阅读了DeepSeek系列模型的主要技术方面内容与发展脉络&#xff0c;以下是DeepSeek系列模型技术报告的笔记&#xff0c;有错误的地方欢迎指正&#xff01; 文章目录 DeepSeek系列模型技术报告的阅读笔记GQADeepseek MoEAbstractIn…

    海思Hi3516DV300交叉编译opencv

    OpenCV是一个开源的跨平台计算机视觉库&#xff0c;支持C、Python等多种语言&#xff0c;适用于图像处理、目标检测、机器学习等任务。其核心由C编写&#xff0c;高效轻量&#xff0c;提供实时视觉处理功能&#xff0c;广泛应用于工业自动化、医疗影像等领域。 1 环境准备 1…

    React + React-intl @3.xx + TypeScript

    声明&#xff1a;此篇文章使用的版本是 "react-intl": "^3.12.0"。 因为react-intl3.xx版本相较于react-intl2.xx版本差别较大&#xff0c;有些API是break change, 所以这篇文章的实现方式&#xff0c;不适用于react-intl2.xx版本。 一: 安装react-intl np…

    (二 十 二)趣学设计模式 之 备忘录模式!

    目录 一、 啥是备忘录模式&#xff1f;二、 为什么要用备忘录模式&#xff1f;三、 备忘录模式的实现方式四、 备忘录模式的优缺点五、 备忘录模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;…

    20250307确认荣品PRO-RK3566开发板在Android13下的以太网络共享功能

    20250307确认荣品PRO-RK3566开发板在Android13下的以太网络共享功能 2025/3/7 13:56 缘起&#xff1a;我司地面站需要实现“太网络共享功能”功能。电脑PC要像连接WIFI热点一样连接在Android设备/平板电脑上来实现上网功能/数据传输。 Android设备/平板电脑通过4G/WIFI来上网。…

    HMC7043和HMC7044芯片配置使用

    一,HMC7043芯片 MC7043独特的特性是对14个通道分别进行独立灵活的相位管理。所有14个通道均支持频率和相位调整。这些输出还可针对50 Ω或100 Ω内部和外部端接选项进行编程。HMC7043器件具有RF SYNC功能,支持确定性同步多个HMC7043器件,即确保所有时钟输出从同一时钟沿开始…

    RSA的理解运用与Pycharm组装Cryptodome库

    1、RSA的来源 RSA通常指基于RSA算法的密码系统&#xff0c;令我没想到的是&#xff0c;其名字的来源竟然不是某个含有特别意义的单词缩写而成&#xff08;比如PHP&#xff1a;Hypertext Preprocessor(超文本预处理器)&#xff09;&#xff0c;而是由1977年提出该算法的三个歪果…