Docker实现Redis主从,以及哨兵机制

Docker实现Redis主从,以及哨兵机制

目录

  • Docker实现Redis主从,以及哨兵机制
    • 准备Redis镜像
    • 创建Redis主节点配置文件
    • 启动Redis从节点
    • 确认主从连接
    • 哨兵主要功能
    • 配置哨兵文件
    • 创建Redis哨兵的Docker容器

要通过Docker实现Redis的主从(master-slave)复制,你可以通过运行多个Redis容器,并配置其中一个作为主节点(master),其余的作为从节点(slave)来实现。每个从节点都会复制主节点的数据。

以下是一个基本的步骤指南,展示如何使用Docker来设置Redis的主从复制:

准备Redis镜像

通过Docker Hub拉取官方的Redis镜像:

docker pull redis

创建Redis主节点配置文件

创建一个Redis配置文件(redis.conf),并在其中设置密码和其他配置。例如:

# redis.conf  
requirepass 0909  
# 其他配置...

然后,在启动Redis容器时使用这个配置文件,并命名为redis-master

docker run --name redis-master -d -p 6380:6379 -v /usr/local/etc/redis/redis.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf
  • 将宿主机的6380端口开放给主节点容器
  • 挂载宿主机的/usr/local/etc/redis/redis.conf作为Redis配置文件路径

注意:上面的命令假设你的Redis镜像使用/usr/local/etc/redis/redis.conf作为容器默认的配置文件路径。不同版本的Redis镜像可能会有略微区别

启动Redis从节点

创建从节点的配置文件redis-slave.conf,每个从节点都可以有各自的配置,我们将他和主节点放在同一目录下(/usr/local/etc/redis/)

# redis-slave.conf  
replicaof 10.0.4.11 6380  
masterauth 666  
# 其他配置...
  • replicaof:主节点的ip查看方式:

image-20240702184827391

然后,使用类似的命令启动从节点,但使用redis-slave.conf作为配置文件,名为redis-slave的从节点容器:

docker run --name redis-slave -d -p 6381:6379 -v /usr/local/etc/redis/redis-slave.conf:/usr/local/etc/redis/redis.conf redis redis-server /usr/local/etc/redis/redis.conf

确认主从连接

进入主节点

exec -it 容器id /bin/bash

正常启动redis

image-20240702185349655

输入指令info,没有问题

image-20240702185433175

进入从节点

exec -it 容器id /bin/bash

正常启动redis

image-20240702185529150

输入指令info,主节点redis-master状态为up,没有问题

image-20240702185620947

主从配置成功

哨兵主要功能

  1. 监控(Monitoring)
    • 哨兵会定期检查Redis主从节点的健康状态。如果发现任何节点不可用,哨兵会记录这个状态并尝试解决问题。
  2. 通知(Notification)
    • 如果哨兵检测到Redis服务器出现问题(比如主节点宕机),它会通知系统管理员或其他应用程序,便于及时处理。
  3. 自动故障转移(Automatic Failover)
    • 当主节点出现故障时,哨兵会自动选举一个从节点作为新的主节点,并通知其他从节点和客户端更新连接信息。这确保了即使主节点出问题,系统仍能继续正常运行。
  4. 配置提供者(Configuration Provider)
    • 哨兵可以提供当前的Redis主从节点配置给客户端,使客户端能够自动连接到新的主节点。

配置哨兵文件

哨兵的配置通常在一个名为 sentinel.conf 的文件中

# sentinel监控的主节点  mymaster为自定义名称
# 2表示哨兵数量阈值。它表示在进行故障转移之前,必须有多少个哨兵节点认为主服务器已经不可达
sentinel monitor mymaster 127.0.0.1 6379 2  # 如果master没有在30000毫秒内响应 PING,则认为master down  
sentinel down-after-milliseconds mymaster 30000  # 如果 sentinel 在该配置指定的时间内未能成功地与足够数量的 sentinel 节点或 master 节点进行通信,  
# 那么它将停止对其进行故障转移操作  
sentinel failover-timeout mymaster 180000  # 通知配置(可选)  
# sentinel notification-script mymaster /var/redis/notify-script.sh  # 客户端重新配置脚本(可选)  
# 当 master 发生变化时,可以通过这个脚本来自动调整客户端配置  
# sentinel client-reconfig-script mymaster /var/redis/reconfig-script.sh

创建Redis哨兵的Docker容器

docker run --name sentinel-1 -d \  --volume /usr/etc/redis/sentinel.conf:/usr/local/etc/redis/sentinel.conf \  redis redis-sentinel /usr/local/etc/redis/sentinel.conf

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

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

相关文章

汽车EDI: BMW EDI项目案例

宝马集团是全世界成功的汽车和摩托车制造商之一,旗下拥有BMW、MINI和Rolls-Royce三大品牌;同时提供汽车金融和高档出行服务。作为一家全球性公司,宝马集团在14个国家拥有31家生产和组装厂,销售网络遍及140多个国家和地区。 本文主…

什么是 Socks5 代理?了解和使用 SOCKS5 代理的终极指南

SOCKS5是什么以及它如何工作? 在网络和互联网协议领域,有多种工具和技术在确保安全高效的通信方面发挥着至关重要的作用。 SOCKS5 就是这样一个工具,它代表套接字安全版本 5。 在这篇博文中,我们将深入探讨 SOCKS5 的细节&…

CoAtNet(NeurIPS 2023, Google)论文解读

paper:CoAtNet: Marrying Convolution and Attention for All Data Sizes third-party implementation:https://github.com/huggingface/pytorch-image-models/blob/main/timm/models/maxxvit.py 背景 自AlexNet以来,ConvNets一直是计算机…

【基于R语言群体遗传学】-5-扩展到两个以上等位基因及多基因位点

我们现在继续对于群体遗传学进行统计建模,书接上回,我们讨论了孤雌生殖的物种违反哈代温伯格遗传比例的例子,那我们现在来看多于两个等位基因的情况的计算。 如果没有看过之前文章的同学,可以先去看一下之前的文章: …

开源租房项目

项目名称项目地址描述体验地址后端代码前端代码小程序端代码gitHubstart租房或房屋交易项目https://github.com/saysky/manland?tabreadme-ov-filePC端 管理端http://manland.liuyanzhao.com/有有无房适–房屋租赁管理平台https://github.com/LiuXIn011/rightHouse开源房屋管理…

非对称加密算法原理与应用1——秘钥的生成

作者:私语茶馆 1.前言 非对称算法有非常多的用途,实现license管控,数字签名,加密内容等等,由于涉及场景和标准非常多,因此实际使用过程中还是存在一定门槛,这里记录一下利用非对称算法RSA的应用关键点,并提供实现license管理的案例。预计拆分为以下几个章节: (1)秘…

Apipost接口测试工具的原理及应用详解(三)

本系列文章简介: 随着软件行业的快速发展,API(应用程序编程接口)作为不同软件组件之间通信的桥梁,其重要性日益凸显。API的质量直接关系到软件系统的稳定性、性能和用户体验。因此,对API进行严格的测试成为软件开发过程中不可或缺的一环。在众多API测试工具中,Apipost凭…

【分布式数据仓库Hive】HivQL的使用

目录 一、Hive的基本操作 1. 使用Hive创建数据库test 2. 检索数据库(模糊查看),检索形如’te*’的数据库 3. 查看数据库test详情 4. 删除数据库test 5. 创建一个学生数据库Stus,在其中创建一个内部表Student,表格…

ubuntu20.04在anaconda环境下不能使用catkin_make

ubuntu20.04在anaconda环境下不能直接使用catkin_make编译,报错显示需要安装python3-empy 这时候查询会发现该软件包已经安装了,但是是在ROS环境中,安装anaconda环境后python解释器的指向变了,所以需要在anaconda环境中再装pytho…

Unity udp通信详解

在Unity中实现UDP通信,需要使用C#的System.Net和System.Net.Sockets命名空间。UDP(用户数据报协议)是一种无连接的网络协议,它允许数据包在网络上发送和接收,但不保证数据包的到达顺序、完整性或可靠性。这使得UDP非常…

沃德校园助手丨校园跑腿-校园外卖-校园论坛三合一系统

校园跑腿项目其实由来已久,由于大学校园生活的特殊性,除了日常的课程学习之外,大学生的所有生活基本长期处于全模式形态下的校园封闭环境中,再加之当前大学生一部分学业繁忙,办事不便。另一部分自理能力较差&#xff0…

【kafka】可视化工具cmak(原kafka-manager)安装问题解决

众所周知(反正不管你知不知道),kafka-maneger更名了,现在叫cmak!原因是什么呢?据不可靠小道信息说,原kafka-manager这个名字涉及到kafka商标使用问题,应该是被律师函警告了&#xff…

如何批量创建、提取和重命名文件夹!!!

你是否还在一个一个手动创建文件名! 你是否还在一个一个手动提取文件名! 你是否还在一个一个手动修改文件名! 请随小生一起批量自动创建、提取、重命名! 1、批量创建文件夹 【案例】创建1日-31日共31个文件夹 【第一步】在A列…

Android SurfaceFlinger——动画播放流程(十六)

前两篇文章介绍了系统启动动画服务的启动和准备阶段,并且我们选择了自定义动画的分支,该分支的动画播放流程主要包含一下几个阶段: loadAnimation:解析 zip 包的动画数据。playAnimation:播放解析好的纹理数据。releaseAnimation:播放完毕释放资源。一、动画播放流程 1、…

Gradle学习-5 发布二进制插件

注:以下示例基于Gradle8.0 1、发布插件 复制一分 buildSrc,执行命令行,生成一个新目录 leon-gradle-plugin cp -rf buildSrc leon-gradle-plugin在 leon-gradle-plugin 目录下的 build.gradle 中引入maven plugins{// 引用 Groovy 插件&…

(五十二)第 8 章 动态存储管理(边界标识法)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strr…

Linux环境下的字节对齐现象

在Linux环境下&#xff0c;字节对齐是指数据在内存中的存储方式。字节对齐是为了提高内存访问的效率和性能。 在Linux中&#xff0c;默认情况下&#xff0c;结构体和数组的成员会进行字节对齐。具体的对齐方式可以通过编译器选项来控制。 在使用C语言编写程序时&#xff0c;可…

【Linux】线程——线程的概念、线程的特点、线程的优点和缺点、线程和进程、线程函数的使用

文章目录 Linux线程1. 线程的概念1.1 什么是线程 2. 线程的特点2.1 线程的优点2.2 线程的缺点2.4 线程和进程 3. 线程函数的使用pthread_create() 创建线程pthread_self() 获取线程IDpthread_exit() 线程终止pthread_cancel() 线程取消pthread_join() 线程等待pthread_detach()…

【第14章】MyBatis-Plus批量操作

文章目录 前言一、功能概览二、类结构说明1.MybatisBatch<?>2.MybatisBatch.Method<?>3. BatchMethod<?>4.使用步骤5.返回值说明 三、使用示例1. execute方法2. 示例一&#xff1a;实体类型数据3. 示例二&#xff1a;非实体类型数据4. 示例三&#xff1a;…

茗鹤 | 如何借助APS高级计划排程系统提高汽车整车制造的效率

在我们做了详尽的市场调研及头部汽车制造企业排程需求沟通后&#xff0c;我们发现尽管企业有很多的业务系统做支撑&#xff0c;在计划排程领域&#xff0c;所有的汽车制造总装厂仍旧使用人工“Excel”做排产规划&#xff0c;其中少部分也会借助MRP、第三方辅助排产工具。鉴于我…