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

server/2025/3/13 19:56:29/

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.ppmy.cn/server/174704.html

相关文章

【透视国家的三维棱镜:技术、制度与文化的解构与重构】

透视国家的三维棱镜:技术、制度与文化的解构与重构 一、技术层:文明的物质显影剂 技术作为生存密码 青铜器冶炼技术将部落联盟升级为商周王朝,蒸汽机将农耕文明扭转为工业文明,半导体技术正在重塑21世纪权力版图。技术是文明存续的…

高阶哈希算法

SHA-256简介 SHA-256 是 **SHA-2(Secure Hash Algorithm 2)**家族中的一种哈希算法,由美国国家安全局设计,并于 2001 年发布。它能够将任意长度的数据映射为一个固定长度256 位,即 32 字节的哈希值,通常以…

数据库---sqlite3

数据库: 数据库文件与普通文件区别: 1.普通文件对数据管理(增删改查)效率低 2.数据库对数据管理效率高,使用方便 常用数据库: 1.关系型数据库: 将复杂的数据结构简化为二维表格形式 大型:Oracle、DB2 中型:MySql、SQLServer …

第八课:Scrapy框架入门:工业级爬虫开发

在当今大数据时代,数据抓取已成为信息获取的重要手段。Scrapy作为一个基于Python的开源网络爬虫框架,凭借其高效、灵活的特性,在工业级爬虫开发中占据重要地位。本文将详细介绍Scrapy框架的基本架构、工作流程、关键组件(如Spider…

LangChain教程 - Agent -之 ZERO_SHOT_REACT_DESCRIPTION

在构建智能 AI 助手时,我们希望模型能够智能地调用工具,以便提供准确的信息。LangChain 提供了 AgentType.ZERO_SHOT_REACT_DESCRIPTION,它结合了 ReAct(Reasoning Acting)策略,使得 LLM 可以基于工具的描…

【Python】06、流程控制语句

文章目录 1.条件判断语句1.1 if 语句2. input 函数3.if-else 语句4.if-elif-else 语句 2.循环语句2.1 while语句2.2 while语句练习:2.3 循环嵌套2.4 break和continue 通过流程控制语句,可以改变程序的执行顺序,也可以让指定程序反复执行多次。…

计算机网络——路由器

一、路由器的作用 路由器(Router)是网络层(OSI第三层)的核心设备,承担着跨网络通信的关键任务,主要功能包括: 跨网络数据转发 基于IP地址,在不同网络间选择最优路径传输数据包&…

数字IC后端项目典型问题(2025.03.10数字后端项目问题记录)

小编发现今天广大学员发过来的问题都比较好,立即一顿输出分享给大家(每天都有好多种类的数字后端问题)。后续可能会经常通过这种方式来做分享。其实很多问题都是实际后端项目中经常遇到的典型问题。希望通过这种方式的分享能够帮助到更多需要…