搭建Redis哨兵集群

停掉现有的redis集群

因为这篇文章我是在 搭建完redis主从集群之后写的,如果要是没有搭建过这些,可以直接略过。要是从我上一篇 搭建redis主从集群过来的,可以执行下。

docker compose down

查找下redis相关进程

ps -ef | grep redis

可以看到前面的 7001 7002 7003 这三个端口已经没有了

上传sentinel.conf 文件

sentinel announce-ip "192.168.200.128"
sentinel monitor sdemaster 192.168.200.128 7001 2
sentinel down-after-milliseconds sdemaster 5000
sentinel failover-timeout sdemaster 60000

这里面就是sentinel.conf 文件的内容。

端口号要改成自己的

说明

sentinel announce-ip "192.168.200.128" :声明当前sentinel的IP

sentinel monitor hmaster sdemaster 192.168.200.128 7001 2 :指定集群的主节点信息。

        sdemaster:主节点名称,自定义,任意写的。

        192.168.200.128 7001 :主节点的ip和端口

        2 :认定 master 下线时的 quorm 值

sentinel down-after-milliseconds sdemaster :声明master节点超时多久后被标记下线

sentinel failover-timeout sdemaster : 故障转移的超时时间

在虚拟机的 /home/sde/modules/redis 目录下创建 3个文件夹, s1 s2 s3

目录具体位置,要根据自己情况而定。

mkdir s1 s2 s3 

把sentinel.conf 文件分别拷贝到 上述的3个文件夹中。

for dir in s1 s2 s3; docp /home/sde/modules/redis/sentinel.conf /home/sde/modules/redis/$dir/
done

具体的目录要改成你自己的

查看s1

查看s2

查看s3

修改 docker-compose.yml 文件

version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002","--slaveof","192.168.200.128","7001"]r3:image: rediscontainer_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003","--slaveof","192.168.200.128","7001"]s1:image: rediscontainer_name: s1volumes:- /home/sde/modules/redis/s1:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27001"]s2:image: rediscontainer_name: s2volumes:- /home/sde/modules/redis/s2:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27002"]s3:image: rediscontainer_name: s3volumes:- /home/sde/modules/redis/s3:/etc/redisnetwork_mode: "host"entrypoint: ["redis-sentinel", "/etc/redis/sentinel.conf", "--port", "27003"]      

/home/sde/modules/redis 是我自己创建的目录,这个文件要根据你们自己的目录更改。

解读:

image:redis 执行使用的redis镜像

container_name:s1 指定容器的名称为s1

volumes 讲宿主机上的 /home/sde/modules/redis/s1 目录挂载到容器内的 /etc/redis 目录。

        作用:讲sentinel的配置文件 sentinel.conf 存储在宿主机上,方便持久化和修改。

        注意:确保宿主机上的 s1 目录已经存在 sentinel.conf 文件

network_mode:"host" 使用宿主机的网络模式,而不是docker默认桥接模式,这样容器可以直接使用宿主机的网络线,避免端口映射问题。

entrypoint 覆盖默认的容器启动命令,指定启动 Redis Sentinel 的方式

        redis-sentinel:Redis Sentinel 的启动方式。

        /home/sde/modules/redis/sentinel.conf 指定Sentinel的配置文件路径(挂载的宿主机路径)。

        --port 27001 指定sentinel监听的端口号为 27001

s2 s3 服务的配置依次类推。

启动集群

docker compose up -d

以s1为例,查看运行日志。

docker logs -f s1

s1

s2

s3

可以看到sentinel已经联系到了7001这个节点,并且与其它几个哨兵也建立了链接。哨兵信息如下:

  • 27001Sentinel IDb59bad2b0876679bf6155f9aaec3a0ad1f386b5b
  • 27002Sentinel IDbdc690efab03792689dc7ba1cb2fe92f973dc3d9
  • 27003Sentinel IDbb02acb3ffaa1ee4e542d79c8dbc1bc111d057c8

演示failover

接下来,我们演示一下当主节点故障时,哨兵是如何完成集群故障恢复(failover)的。

我们停止7001这个master节点,然后再启动模拟宕机重启:

docker stop r1 

稍微等待一段时间后,会发现sentinel节点触发了failover:可以使用 docker logs -f s1 等查看各个容器的日志:

启动 r1

docker start r1

看看 s1 日志

看看 r2 信息

docker exec -it r2 redis-cli -p 7002

可以看到 r2 成为了新的主节点

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

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

相关文章

MySQL中,聚集索引和非聚集索引到底有什么区别?

文章目录 1. 数据存储方式2. 索引结构3. 查询效率4. 索引数量5. 适用场景6. 示例说明7. 总结 在MySQL中,聚集索引和非聚集索引(也称二级索引)的区别主要体现在数据存储方式、索引结构和查询效率等方面。以下是详细对比: 1. 数据存…

看 MySQL InnoDB 和 BoltDB 的事务实现

BoltDB 事务实现 BoltDB 支持多读单写方式的并发级别 事务操作会锁表 它的 MVCC 为 2 个版本,当前版本和正在写的版本 多读:可以并发读当前版本 单写(串行写):写时拷贝当前 B 树,构建新 B 树&#xff…

08_JavaScript数据操作方法_数组

目录 一、创建一个数组 1.1 数组如何创建 字面量创建 构造函数创建 1.2 数组的长度 数组名.length 1.3 数组的索引 1.4 数组如何循环遍历 for 循环遍历 for in for of 二、数组的常用方法 (重点 面试) push 方法 unshift 方法 pop shif…

2025.3.25总结

工作:这两天工作都没啥产出,主要是工作状态不太好,周日晚上两点睡,周一晚上一点睡。熬夜伤身,但就是控制不住自己,睡前总要刷刷手机。本来想睡前看会书的,但这行为及其不稳定,抖音也…

《Python实战进阶》第33集:PyTorch 入门-动态计算图的优势

第33集:PyTorch 入门-动态计算图的优势 摘要 PyTorch 是一个灵活且强大的深度学习框架,其核心特性是动态计算图机制。本集将带您探索 PyTorch 的张量操作、自动求导系统以及动态计算图的特点与优势,并通过实战案例演示如何使用 PyTorch 实现…

初识哈希表

一、题意 给定一个整数数组 nums 和一个目标值 target,要求你在数组中找出和为目标值的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums [2, 7, …

23种设计模式-创建型模式-单例

文章目录 简介问题1. 确保一个类只有一个实例2. 为该实例提供全局访问点 解决方案示例重构前:重构后: 拓展volatile 在单例模式中的双重作用 总结 简介 单例是一种创建型设计模式,它可以确保一个类只有一个实例,同时为该实例提供…

python裁剪nc文件数据

问题描述: 若干个nc文件储存全球的1850-2014年月尺度的mrro数据(或其他数据),从1850-1到2014-12一共1980个月,要提取出最后35年1980.1~2014.12年也就是420个月的数据。 代码实现 def aaa(input_file,output_file,bianliang,start_index,en…

深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构

深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构 1. 引言 Spring Framework 是 Java 领域最流行的企业级开发框架之一,广泛用于 Web 开发、微服务架构、数据访问等场景。本文将深入解析 Spring Framework 5.1.8.RELEASE 的源码目录结构,帮助开…

数据清洗:基于python抽取jsonl文件数据字段

基于python抽取目录下所有“jsonl”格式文件。遍历文件内某个字段进行抽取并合并。 import os import json import time from tqdm import tqdm # 需要先安装:pip install tqdmdef process_files():# 设置目录路径dir_path r"D:\daku\关键词识别\1623-00000…

Windows 下使用 Docker 部署 Go 应用与 Nginx 详细教程

一、环境准备 1. 安装必要软件 Docker Desktop for Windows 下载地址:Docker Desktop: The #1 Containerization Tool for Developers | Docker 安装时勾选"使用 WSL 2 引擎"(推荐) WSL 2(Windows Subsystem for Li…

C# .net ai Agent AI视觉应用 写代码 改作业 识别屏幕 标注等

C# net deepseek RAG AI开发 全流程 介绍_c# 向量处理 deepseek-CSDN博客 视觉多模态大模型 通义千问2.5-VL-72B AI大模型能看懂图 看懂了后能干啥呢 如看懂图 让Agent 写代码 ,改作业,识别屏幕 标注等等。。。 据说是目前最好的免费图片识别框架 通…

Docker多阶段构建:告别臃肿镜像的终极方案

Docker多阶段构建:告别臃肿镜像的终极方案 你是否遇到过这样的问题:一个简单的应用,Docker镜像却高达1GB?编译工具、临时文件、开发依赖全被打包进去,导致镜像臃肿且不安全。 多阶段构建(Multi-stage Build) 就是为解决这一问题而生——它像搬家时“只带必需品”,让生…

大模型应用开发之大模型工作流程

一:大模型的问答工作流程 1.1: 分词和向量化 如上图所示,我们如果让大模型去回答问题,首先我们会输入一些文字给到大模型,大模型本质上是个数学模型,它是理解不了人类的整句话的,所以它会把我们的对应的句…

SpringMVC 请求处理

SpringMVC 请求处理深度解析:从原理到企业级应用实践 一、架构演进与核心组件协同 1.1 从传统Servlet到前端控制器模式 SpringMVC采用前端控制器架构模式,通过DispatcherServlet统一处理请求,相比传统Servlet的分散处理方式,实…

12届蓝桥杯—货物摆放

货物摆放 题目描述 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所…

Reactor/Epoll为什么可以高性能?

在 Reactor 模式中使用 epoll_wait 实现低 CPU 占用率的核心原理是 ​事件驱动的阻塞等待机制,而非忙等待。以下通过分步骤解析其工作原理和性能优势: void network_thread() {int epoll_fd epoll_create1(0);epoll_event events[MAX_EVENTS];// 添加U…

批量优化与压缩 PPT,减少 PPT 文件的大小

我们经常能够看到有些 PPT 文档明明没有多少内容,但是却占用了很大的空间,存储和传输非常的不方便,这时候通常是因为我们插入了一些图片/字体等资源文件,这些都可能会导致我们的 PPT 文档变得非常的庞大,今天就给大家介…

Java基础 3.22

1.break练习 //1-100之内的数求和&#xff0c;求当和第一次大于20的当前数i public class Break01 {public static void main(String[] args) {int n 0;int count 0;for (int i 1; i < 100; i) {count i;System.out.println("当前和为" count);if (count &g…

高性能MySQL笔记

高性能MySQL笔记 《高性能MySQL》第1章 MySQL架构**第一章核心知识点总结****多选题**多选题答案**答案与详解总结** 《高性能MySQL》第2章 可靠性程世界中的监控核心知识点多选题答案及解析重点巩固方向 《高性能MySQL》第3章 Performance Schema**第三章核心知识点总结****多…