当前位置: 首页 > news >正文

Redis(43)Redis哨兵(Sentinel)是什么?

Redis Sentinel(哨兵)是一种用于管理 Redis 实例的高可用性解决方案。它提供了监控、通知和自动故障转移等功能,确保 Redis 服务在发生故障时能够自动恢复,提供高可用性和可靠性。以下是详细介绍 Redis Sentinel 的功能及其代码示例。

Redis Sentinel 的功能

  1. 监控(Monitoring)

    • Sentinel 会持续监控主节点和从节点的运行状态,检查它们是否正常工作。
  2. 通知(Notification)

    • 如果 Sentinel 检测到某个节点发生故障,它会通过 API 向系统管理员或其他应用程序发送通知。
  3. 自动故障转移(Automatic Failover)

    • 如果主节点发生故障,Sentinel 会将其中一个从节点提升为新的主节点,并将其他从节点指向新的主节点。
  4. 配置提供者(Configuration Provider)

    • Sentinel 允许客户端应用程序查询当前 Redis 集群的状态信息,以便客户端能够始终连接到正确的主节点。

Sentinel 配置示例

1. 配置 Redis 实例

配置主从架构的 Redis 实例。

主节点配置(master.conf)

port 6379
bind 127.0.0.1
dir /var/lib/redis
appendonly yes

从节点配置(slave.conf)

port 6380
bind 127.0.0.1
dir /var/lib/redis
appendonly yes
slaveof 127.0.0.1 6379

启动主从节点:

redis-server master.conf
redis-server slave.conf
2. 配置和启动 Sentinel

创建 Sentinel 配置文件(sentinel.conf):

port 26379
dir /tmp
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 60000

启动 Sentinel:

redis-sentinel sentinel.conf
3. Java 代码示例:使用 Jedis 连接带有 Sentinel 的 Redis 集群

以下 Java 代码展示了如何使用 Jedis 库连接和操作带有 Sentinel 的 Redis 集群。

import redis.clients.jedis.JedisSentinelPool;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.HostAndPort;import java.util.HashSet;
import java.util.Set;public class RedisSentinelExample {public static void main(String[] args) {// 定义 Sentinel 节点Set<String> sentinels = new HashSet<>();sentinels.add("127.0.0.1:26379");// 创建 JedisSentinelPool 对象JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels);try (Jedis jedis = pool.getResource()) {// 操作 Redisjedis.set("key", "value");String value = jedis.get("key");System.out.println("Get key: " + value);} finally {// 关闭连接池pool.close();}}
}

详细解释

  1. 监控

    • Sentinel 持续监控主节点和从节点的运行状态。配置文件中的 sentinel monitor mymaster 127.0.0.1 6379 2 表示 Sentinel 监控的主节点是 127.0.0.1:6379,并且至少需要 2 个 Sentinel 同意主节点失效,才会进行故障转移。
  2. 通知

    • sentinel down-after-milliseconds mymaster 5000 配置了 Sentinel 判断主节点失效的时间阈值(毫秒)。超出这个时间后,Sentinel 会认为主节点失效并发送通知。
  3. 自动故障转移

    • sentinel failover-timeout mymaster 60000 配置了 Sentinel 进行故障转移的超时时间。故障转移过程中,Sentinel 会将其中一个从节点提升为新的主节点,并将其他从节点指向新的主节点。
  4. 配置提供者

    • 客户端应用程序(如 Java 代码中的 JedisSentinelPool)可以通过 Sentinel 获取当前主节点的信息,并确保连接的是正确的主节点。

故障转移的示例

为了测试自动故障转移,您可以强制关闭 Redis 主节点,观察 Sentinel 的行为。

# 停止 Redis 主节点
redis-cli -p 6379 shutdown

此时,Sentinel 会检测到主节点失效,并自动提升从节点为新的主节点,然后重新配置集群。

总结

Redis Sentinel 提供了一种高可用性解决方案,通过监控、通知、自动故障转移和配置提供等功能,确保 Redis 服务的可靠性。通过配置 Sentinel 和使用 Jedis 库,客户端应用程序可以方便地连接和操作带有 Sentinel 的 Redis 集群,从而实现高可用性和自动故障恢复。


文章转载自:

http://08JrbDqF.xrwbc.cn
http://YyiryVVE.xrwbc.cn
http://paJomQv0.xrwbc.cn
http://xRUGTJAf.xrwbc.cn
http://0VPsbv8I.xrwbc.cn
http://6EvkDoFf.xrwbc.cn
http://6htS6K5C.xrwbc.cn
http://nDpiWm9M.xrwbc.cn
http://fMsMCIvv.xrwbc.cn
http://3L3adozT.xrwbc.cn
http://hJGjnhyf.xrwbc.cn
http://9O4ihOa1.xrwbc.cn
http://baUbXKaV.xrwbc.cn
http://6PNoNtUT.xrwbc.cn
http://CXM3xJZz.xrwbc.cn
http://aNi0VNyr.xrwbc.cn
http://9Zg09Emx.xrwbc.cn
http://mAyquiWy.xrwbc.cn
http://HHIpVvLV.xrwbc.cn
http://w2e7WvSb.xrwbc.cn
http://hOgZCie1.xrwbc.cn
http://T1Agw3PV.xrwbc.cn
http://XaaHou3O.xrwbc.cn
http://P3Maz1xo.xrwbc.cn
http://aVmH8Uti.xrwbc.cn
http://y8Yldn4g.xrwbc.cn
http://R8cUqvp5.xrwbc.cn
http://eEg6bvpx.xrwbc.cn
http://ck0v3VzC.xrwbc.cn
http://3f9FBWGf.xrwbc.cn
http://www.dtcms.com/a/366948.html

相关文章:

  • 【连载 7/9】大模型应用:大模型应用:(七)大模型使用工具(29页)【附全文阅读】
  • 从 GPT 到 LLaMA:解密 LLM 的核心架构——Decoder-Only 模型
  • 原型链和原型
  • 嵌入式学习 51单片机(3)
  • 详细学习计划
  • 深度解读《实施“人工智能+”行动的意见》:一场由场景、数据与价值链共同定义的产业升级
  • CLIP模型
  • 深度学习篇---SENet网络结构
  • JS初入门
  • 大数据开发计划表(实际版)
  • TypeScript 增强功能大纲 (相对于 ECMAScript)
  • LLAMAFACTORY:一键优化大型语言模型微调的利器
  • DeepSeek文献太多太杂?一招制胜:学术论文检索的“核心公式”与提问艺术
  • Android AI客户端开发(语音与大模型部署)面试题大全
  • hutool的EnumUtil工具类实践【持续更新】
  • 从基础到实践:Web核心概念与Nginx入门全解析
  • 深度学习:基于自定义 ResNet 的手写数字识别实践(MNIST 数据集)
  • Day35 网络协议与数据封装
  • Vue 3 学习路线指南
  • C语言基础:内存管理
  • 大模型应用开发框架 LangChain
  • Deeplizard深度学习课程(六)—— 结合Tensorboard进行结果分析
  • 小程序:12亿用户的入口,企业数字化的先锋军
  • 【C++题解】关联容器
  • 15,FreeRTOS计数型信号量操作
  • PMP新考纲练习题10道【附答案解析】
  • 开源技术助力企业腾飞,九识智能迈入‘数据驱动’新纪元
  • Docker(①安装)
  • [Windows] PDF工具箱 PDF24 Creator 11.28.0
  • 阿里云轻量应用服务器部署-WooCommerce