Docker搭建Redis哨兵模式【一主两从三哨兵】

Docker搭建Redis哨兵模式

系统: CentOS 7

Dockder 版本:

VMware虚拟机

  • 网络适配器

    • 网络连接
      • 桥接模式:直接连接物理网络
  • 查看IP命令

    ip addr
    
image-20250307230151495

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一、哨兵模式概述

1. 官方文档与关联博客

  • 官方文档:https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel
  • 关联博客:Redis 主从复制,在后续配置从节点时会用到。

2. 极简概括

Redis 哨兵模式是一种自动监控 Redis 主节点是否故障的方案。当主节点出现故障时,Redis 会依据投票数自动将从库切换为主库,这个过程被称为仲裁。

3. 解决的问题

在传统的主从复制架构模式下,若 Redis 主节点挂掉,从节点没有任何补偿操作,在无人工干预的情况下,整个缓存链路的写功能将会丧失。而哨兵模式引入了哨兵看守机制,能够实现对主机的检测以及自动将从机切换为主机的功能。

4. 适用场景

适用于需要 7 * 24 小时 高可用,并且公司愿意投入相关运维成本的服务端应用。需要注意的是,作为哨兵节点的 Redis 实例,将无法提供缓存服务,只能作为哨兵使用,而且通常要求哨兵数量为奇数个。

5. 优点

  • 降低运维成本:拥有强大的高可用机制,能够在一定程度上降低运维成本。
  • 自动恢复机制:当主节点挂掉后,哨兵会自动从从节点中选出一个作为新的主节点,继续对外提供服务,无需人工值守。

6. 缺点

  • 场景限制:小型公司可能不需要使用 Redis,中型公司也不一定会用到 Redis 主从架构,更不用说使用哨兵这种严谨的运维策略。
  • 资金问题:Redis 哨兵模式需要部署多个服务器,这对于公司来说是一笔不小的支出,存在一定的资金门槛。
  • 延迟问题:当主节点挂掉时,虽然可以实现自动切换,但多个哨兵判断 Redis 主节点客观下线的过程需要一定时间,尽管这个时间可以调整,但在此期间 Redis 的写操作会失效。因此,为了解决这个问题,出现了集群策略。
  • 数据丢失问题:Redis 主从复制采用异步复制方式,哨兵模式只是增加了自动化的切换功能,不像 MySQL 有 redo log 机制,无法保证数据 100% 不丢失。
  • 脑裂问题:在某些情况下,会引发脑裂问题(后续会详细说明)。

7. 误区说明

需要明确的是,哨兵和集群是两个不同的概念,它们之间没有关联。哨兵模式是主从复制架构的高可用优化方案,而不是集群部署的高可用方案。

8. 访问流程变化

在传统模式下,编程语言客户端直接访问 Redis 主节点或从节点。而在哨兵模式下,客户端访问的是哨兵节点(通常由奇数个哨兵组成一个哨兵集群,奇数个哨兵便于进行投票),然后由哨兵节点告知客户端应该访问哪个主节点或从节点,从而区分读写操作。

二、实操(1 主 + 2 从 + 3 哨)

1. 选择 3 个哨兵的理由

如同一个小区至少需要 2 个保安轮班倒一样,为了确保对 Redis 主节点的可靠监控,需要多个哨兵。同时,由于哨兵有类似投票的机制,使用奇数个哨兵可以避免出现投票平局的情况,因此选择 3 个哨兵是比较合适的。

2. 环境决策

本次部署采用 3 个哨兵 + 1 个 Master + 2 个 Slave 的架构,共需要 6 台服务器。考虑到 Docker 方案在拉取镜像时可能会遇到网络限制(国内网络环境可能导致镜像拉不下来,且本地没有可用镜像),因此弃用 Docker 方案。

3. 运行环境

  • 操作系统:CentOS 7.6
  • 内存分配:每个系统分配 1G 内存,Linux 系统可以轻松启动这些 Redis 实例,总共占用内存 6GB,设备可以承受。但需要注意的是,磁盘占用相对较高,特别是在开机时。
  • 远程连接配置:每个 Redis 实例都已经配置好了远程连接功能,包括防火墙设置、远程连接权限配置以及保护模式的调整。

4. IP 分配

主机名服务器配置服务器IP网关地址端口号备注
redis-master2核CPU、1G内存、300G磁盘192.168.2.100192.168.2.16379主节点
redis-slave12核CPU、1G内存、300G磁盘192.168.2.101192.168.2.16379从节点1
redis-slave22核CPU、1G内存、300G磁盘192.168.2.102192.168.2.16379从节点2
redis-sentinel12核CPU、1G内存、300G磁盘192.168.2.103192.168.2.126379哨兵1
redis-sentinel22核CPU、1G内存、300G磁盘192.168.2.104192.168.2.126379哨兵2
redis-sentinel32核CPU、1G内存、300G磁盘192.168.2.105192.168.2.126379哨兵3

网络拓扑结构如下:

                  	 192.168.2.103【哨兵1】                       192.168.2.101【从1】/                      \                      //                         \                    //                           \                  /
192.168.2.xxx  -->-> 192.168.2.104【哨兵2】  ---> 192.168.2.100【主】\                           /                  \\                        /                    \\                     /                      \  192.168.2.105【哨兵3】                       192.168.2.102【从2】

5.hosts

# vim /etc/hosts192.168.2.100 redis-master
192.168.2.101 redis-slave1
192.168.2.102 redis-slave2
192.168.2.103 redis-sentinel1
192.168.2.104 redis-sentinel2
192.168.2.105 redis-sentinel3

6. 主要配置说明

初始化配置
创建目录mk

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

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

相关文章

关于统计建模大赛的选题

文章目录 0.大赛主题1.量化分析和风险管理2.金融市场预测与统计建模3.投资与机器学习相关4.大数据和医疗5.智能制造相关的6.教育行业 0.大赛主题 统计创新应用数据引领未来:这个主题其实很宽泛,没有什么明确的这个要求,所以只要是和我们的统…

Docker 学习笔记:从入门到部署,实战演练全流程!

📌 开篇:为什么要学 Docker? 还在为环境不一致、部署麻烦、依赖冲突头疼吗?Docker 让一切变得简单!作为现代开发和运维的神器,Docker 让我们可以用 一句命令 解决 “在我电脑上能跑” 的问题。今天&#x…

ThinkPhp 5 安装阿里云内容安全(绿化)

composer require alibabacloud/green-20220302 首先要把php5(不支持php7)的执行文件设置到PATH环境变量 此外还要先执行composer update php5.5和php5.6的区别 5.5认为 <? 开头的也是php文件&#xff0c;包括 <?php 5.6认为 <? 开头的不是php文件&#xff0c;只…

使用NVM工具管理Node版本

Date: 2025.03.10 14:53:55 author: lijianzhan NVM&#xff08;Node Version Manager&#xff09;用于在同一个系统上管理多个 Node.js 版本,NVM 允许你安装、使用和切换不同的 Node.js 版本。这对于前端工作人员来说可以更方便的管理和维护不同nodejs版本的项目。 &#xff0…

Vue主流的状态保存框架对比

一、Vuex 4&#xff08;官方传统方案&#xff09; 优点&#xff1a; 官方背书&#xff1a;Vue 官方长期维护&#xff0c;成熟稳定。结构化清晰&#xff1a;通过 state/mutations/actions/getters 强制约定代码结构&#xff0c;适合大型团队协作。插件生态&#xff1a;支持中间…

AIGC视频生成模型:慕尼黑大学、NVIDIA等的Video LDMs模型

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍慕尼黑大学携手 NVIDIA 等共同推出视频生成模型 Video LDMs。NVIDIA 在 AI 领域的卓越成就家喻户晓&#xff0c;而慕尼黑大学同样不容小觑&#xff0c;…

NVIDIA k8s-device-plugin源码分析与安装部署

在《kubernetes Device Plugin原理与源码分析》一文中&#xff0c;我们从源码层面了解了kubelet侧关于device plugin逻辑的实现逻辑&#xff0c;本文以nvidia管理GPU的开源github项目k8s-device-plugin为例&#xff0c;来看看设备插件侧的实现示例。 一、Kubernetes Device Pl…

C++ 数据结构详解及学习规划

C++数据结构详解及学习规划 一、C++常用数据结构详解与示例 以下是C++中核心数据结构的分类及具体实现示例: 1. 线性数据结构 a. 数组(Array) • 定义:存储固定大小、同类型元素的连续内存结构。 • 特点:快速随机访问(O(1)),但插入/删除效率低(O(n))。 • 应用场…

如何使用Postman,通过Mock的方式测试我们的API

这篇文章将教会大家如何利用 postman&#xff0c;通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧&#xff0c;可以在没有依赖项的情况下进行单元测试。通常情况下&#xff0c;Mock 与其他方法的主要区别就是&#xff0c;用于取代代码依赖项的模拟对…

如何检查电脑的硬盘健康状况?

检查硬盘健康状况可以使用多种工具和方法。以下是一些常用的工具和步骤&#xff1a; Windows系统&#xff1a; 使用Windows内置工具&#xff1a; 磁盘检查&#xff1a;可以通过命令提示符&#xff08;cmd&#xff09;使用chkdsk命令来检查硬盘错误。例如&#xff0c;输入chkd…

JavaWeb中提供的对cookie的操作

JavaWeb中提供的对cookie的操作 简介服务端创建Cookie对象&#xff0c;然后将Cookie添加到HTTP响应结果中读取请求端浏览器的Cookie设置/读取Cookie在客户端的有效期URL编码/解码 简介 Servlet API为Servlet访问Cookie提供了简单易用的接口。javax.servlet.http.Cookie类用来表…

Android中AIDL和HIDL的区别

在Android中&#xff0c;AIDL&#xff08;Android Interface Definition Language&#xff09; 和 HIDL&#xff08;HAL Interface Definition Language&#xff09; 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC&#xff08;进程间通信&#xff0…

学习计划:第四阶段(第十周)

目录 第四阶段&#xff1a;特殊方法与高级特性 第 10 周&#xff1a;综合复习与实践 周一 周二 周三 周四 周五 总结 一、项目设计与实现 二、问题与解决 三、学习成果 四、后续展望 第四阶段&#xff1a;特殊方法与高级特性 第 10 周&#xff1a;综合复习与实践 …

ROS2学习笔记2

前言 本篇文章属于ROS2humble的学习笔记&#xff0c;来源于B站鱼香ROSup主。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 《ROS 2机器人开发从入门到实践》课程介绍_哔哩哔哩_bilibili …

vue3中接收props的两种写法

在 Vue 3 中&#xff0c;接收 props 有两种主要的写法&#xff0c;分别是运行时声明和基于类型的声明。下面为你详细介绍这两种写法。 1. 运行时声明 运行时声明是 Vue 2 中就已经存在的方式&#xff0c;在 Vue 3 中依然可以使用。这种方式通过在组件中使用 defineProps 宏来…

用android studio模拟器,模拟安卓手机访问网页,使用Chrome 开发者工具查看控制台信息

web 网页项目在安卓手机打开时出现问题&#xff0c;想要查看控制台调试信息。记录一下使用android studio 模拟器访问的方式。 步骤如下&#xff1a; 1.安装android studio&#xff0c;新增虚拟设备&#xff08;VDM- virtual device manager) 点击Virtual Device Manager后会…

《打造视频同步字幕播放网页:从0到1的技术指南》

《打造视频同步字幕播放网页&#xff1a;从0到1的技术指南》 为什么要制作视频同步字幕播放网页 在数字化信息飞速传播的当下&#xff0c;视频已然成为内容输出与获取的核心载体&#xff0c;其在教育、娱乐、宣传推广等诸多领域发挥着举足轻重的作用 。制作一个视频同步字幕播…

spring-boot-starter和spring-boot-starter-web的关联

maven的作用是方便jar包的管理&#xff0c;所以每一个依赖都是对应着相应的一个或者一些jar包&#xff0c;从网上看到很多对spring-boot-starter的描述就是“这是Spring Boot的核心启动器&#xff0c;包含了自动配置、日志和YAML。”没看太明白&#xff0c;所参与的项目上也一直…

数智读书笔记系列015 探索思维黑箱:《心智社会:从细胞到人工智能,人类思维的优雅解读》读书笔记

引言 《The Society of Mind》&#xff08;《心智社会》&#xff09;的作者马文・明斯基&#xff08;Marvin Minsky&#xff09;&#xff0c;是人工智能领域的先驱和奠基者之一 &#xff0c;1969 年获得图灵奖&#xff0c;被广泛认为是对人工智能领域影响最大的科学家之一。他…

Vue 项目中,.env文件怎么用?

在 Vue 项目中&#xff0c;.env 文件用于存储环境变量&#xff0c;不同的环境&#xff08;如开发环境、测试环境、生产环境&#xff09;可以使用不同的 .env 文件来管理对应的配置信息。以下是关于 Vue 项目中 .env 文件的详细使用方法&#xff1a; 1. 项目创建 确保你已经使…