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)秘…

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

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

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

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

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

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

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()…

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

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

JVM原理(十一):JVM虚拟机六种必需对类进行初始化的情况

Java虚拟机把描述类的数据从Class文件加载到内存&#xff0c;并对数据进行校验、转换解析和初始化&#xff0c;最终形成可以被虚拟机直接使用的Java类型&#xff0c;这个过程被称作虚拟机的类加载机制。Java天生可以动态扩展的语言特性就是依赖运行期间动态加载和动态链接这个特…

104.二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,null,2] 输出…

每日两题 / 20. 有效的括号 155. 最小栈(LeetCode热题100)

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 遇到左括号入栈 遇到右括号判断栈顶是否为匹配的左括号 最后判断栈是否为空 func isValid(s string) bool {var stk []runefor _, value : range s {if value ( || value { || value [ {stk append(stk, value)}…

阿里巴巴图标库iconfont的使用方式

文章目录 什么是 iconfong创建一个自己的项目如何使用Unicode 使用方法Font class 使用方式Symbol 使用方式还有一种使用方式 在线链接&#xff08;不推荐&#xff0c;但可用于测试&#xff09; 什么是 iconfong Iconfont 是一种图标字体服务。它将各种图标设计转换为字体格式…

【设计模式】行为型-状态模式

在变幻的时光中&#xff0c;状态如诗篇般细腻流转。 文章目录 一、可调节的灯光二、状态模式三、状态模式的核心组件四、运用状态模式五、状态模式的应用场景六、小结推荐阅读 一、可调节的灯光 场景假设&#xff1a;我们有一个电灯&#xff0c;它可以被打开和关闭。用户可以…

snap和apt的区别简单了解

Linux中没有tree命令的时候提示安装的时候出现了两个命令&#xff0c;简单看了看两者有何区别&#xff08;一般用apt就可以了&#xff09;&#xff1a; sudo snap install tree 和 sudo apt install tree 这两个命令都是用来安装 tree 命令行工具的&#xff0c;但它们使用的是不…