使用 Docker Compose 部署 Redis Sentinel 高可用架构

news/2025/1/31 1:01:27/

在现代应用中,无法容忍系统中断或数据丢失。Redis 作为一种高性能的内存数据库,被广泛应用于缓存、会话管理等场景。然而,即使我们拥有可伸缩的 Redis Cluster 集群,也需要考虑在主节点故障时自动切换到从节点的机制。这时候 Redis Sentinel 就派上用场了。高可用性是分布式应用的核心需求之一。我们在之前的文章中介绍了redis cluster 3主3从集群的搭建,本文将为您介绍如何在现有的 Redis 3 主 3 从 Cluster 集群基础上,使用 Docker Compose 部署 Redis Sentinel,为您的应用构建一个强大的高可用性方案。

为什么要使用 Redis Sentinel?

在 Redis 中,Cluster 集群主要用于分布式数据存储和高可用性。它可以将数据分布在多个节点上,提供横向扩展和高性能。然而,Cluster 集群并不直接提供自动故障检测和转移功能,这就是为什么需要在 Cluster 集群的基础上创建 Sentinel 哨兵集群的原因。

Sentinel 哨兵集群用于实现高可用性和自动故障转移,它可以监控 Redis 主从复制架构中的主节点和从节点,并在主节点故障时自动将从节点提升为新的主节点。虽然 Cluster 集群本身可以提供数据的分布和冗余,但是当主节点发生故障时,需要一个机制来自动切换到备份节点,从而确保系统的可用性。

因此,将 Sentinel 哨兵集群与 Cluster 集群结合使用可以实现更高级别的高可用性。哨兵集群负责监控和管理主节点的故障转移,确保在主节点故障时能够自动切换到备份节点。Cluster 集群则负责分布数据和提供高性能。通过将这两种机制结合在一起,可以实现在数据分布和高可用性之间的平衡,从而构建出稳定和可靠的 Redis 部署。

部署

编写 Docker Compose 文件

在 redis-sentinel 文件夹中创建一个名为 docker-compose.yml 的文件,并定义 Sentinel 节点的容器配置

docker-compose.yml

version: '3.3'
services:redis-sentinel1:image: redis:latestnetwork_mode: 'host'container_name: redis-sentinel1command: redis-sentinel /etc/redis/sentinel.confvolumes:- ./sentinel1.conf:/etc/redis/sentinel.confredis-sentinel2:image: redis:latestnetwork_mode: 'host'container_name: redis-sentinel2command: redis-sentinel /etc/redis/sentinel.confvolumes:- ./sentinel2.conf:/etc/redis/sentinel.confredis-sentinel3:image: redis:latestnetwork_mode: 'host'container_name: redis-sentinel3command: redis-sentinel /etc/redis/sentinel.confvolumes:- ./sentinel3.conf:/etc/redis/sentinel.conf

配置 Sentinel

为每个 Sentinel 节点创建一个配置文件,例如 sentinel1.conf、sentinel2.conf 等。在配置文件中,您可以定义监视的主节点、故障判定超时等设置。

示例:
sentinel1.conf

port 26479
dir /tmp
sentinel monitor mymaster 192.168.10.108 6479 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster xj2022

启动 Sentinel 节点

在 redis-sentinel 文件夹中运行以下命令以启动 Sentinel 节点容器:

docker-compose up -d

这将在后台启动 Sentinel 容器,使其能够监视 Redis 主从复制集群。

总结

将 Redis Sentinel 部署在现有的 Redis 3 主 3 从 Cluster 集群上,能够为您的应用提供更高的可用性。通过 Docker Compose 的便捷性,您可以在短时间内实现自动故障转移的功能,确保主节点故障时系统能够自动切换到从节点,保障数据的完整性和应用的可用性。

使用 Docker Compose 部署 Redis Sentinel 高可用性方案,既能够提供更好的应用保障,又能够降低运维成本。将这种高可用性机制纳入到您的应用架构中,无疑会为您的业务带来更大的稳定性和可靠性。

参考链接

  • Redis Sentinel 官方文档:https://redis.io/topics/sentinel
  • Docker Compose 官方文档:https://docs.docker.com/compose/

http://www.ppmy.cn/news/1011040.html

相关文章

C++11实用技术(三)std::future、std::promise、std::packaged_task、async

C进阶系列目录 C operator关键字的使用(重载运算符、仿函数、类型转换操作符) C11实用技术(一)auto与decltype的使用 C11实用技术(二)std::function和bind绑定器 C11实用技术(三&#xff09…

K8S系列文章之 开源的堡垒机 jumpserver

一、jumpserver作为一款开源的堡垒机,不管是企业还是个人,我觉得都是比较合适的,而且使用也比较简单。 二、这里记录一下安装和使用过程。 1、安装,直接docker不是就行 version: 3 services:xbd-mysql:image: mysql:8.0.19restart…

vue diff 前后缀+最长递增子序列算法

文章目录 查找相同前后缀通过前后缀位置信息新增节点通过前后缀位置信息删除节点 中间部份 diff判断节点是否需要移动删除节点删除未查找到的节点删除多余节点 移动和新增节点最长递增子序列 求解最长递增子序列位置信息 查找相同前后缀 如上图所示,新旧 children 拥…

【麒麟系统安装HDP,报错处理】更新篇

麒麟系统安装HDP 麒麟系统安装HDP第一个版本超链接:1、软件版本介绍2、文件替换修改oc_check.py伪装麒麟系统成centos8yum_manager.pyscript.py以os_check.py为例伪装成centos 3 报错解决3.1 解决KeyError: HDP-3.1(所有机器)3.2 安装smartse…

UEditorPlus v3.3.0 图片上传压缩重构,UI优化,升级基础组件

UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…

【沁恒蓝牙mesh】CH58x系统时钟配置与计算

本文主要记录了【沁恒蓝牙mesh】CH58x系统时钟配置与计算 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥🎉 支持我&am…

Java spring boot 全解Camunda 7,从 0 到 1 构建工作流平台——第二节:Spring boot 简单集成

目录 1. 成果展示2. 环境准备3. 项目构建3.1 项目结构3.2 引入Camunda 依赖3.3 启动spring boot 程序3.4 启动 web app 程序 引言:当今技术发展迅猛,企业对于业务流程的高效管理和自动化需求也日益增长。在这个背景下,Spring Boot和Camunda7成…

python爬虫2:requests库-原理

python爬虫2:requests库-原理 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 目录结构 文章目录 python爬虫2:requests库-原理1. 概述2. re…