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

Redis(46) 如何搭建Redis哨兵?

搭建 Redis 哨兵(Sentinel)集群,确保 Redis 服务具有高可用性。以下是详细的步骤,从 Redis 安装、配置主从复制到配置和启动 Sentinel 集群,并结合相关的代码示例。

步骤 1:安装 Redis

首先,需要在服务器上安装 Redis。以下以 Linux 系统为例。

sudo apt update
sudo apt install redis-server

步骤 2:配置主从复制

配置主节点

创建并编辑主节点配置文件 redis-master.conf

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

启动主节点:

redis-server redis-master.conf
配置从节点

创建并编辑从节点配置文件 redis-slave.conf

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

启动从节点:

redis-server redis-slave.conf

步骤 3:配置和启动 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

以下是 Sentinel 配置文件中各参数的解释:

  • port 26379:指定 Sentinel 监听的端口。
  • dir /tmp:用于保存 Sentinel 配置文件的目录。
  • sentinel monitor <master-name> <ip> <port> <quorum>:定义要监控的主节点,其中 <quorum> 是判断主节点失效所需的 Sentinel 数量。
  • sentinel down-after-milliseconds <master-name> <milliseconds>:定义在多少毫秒之后认为主节点不可用。
  • sentinel parallel-syncs <master-name> <number>:在故障转移时,允许多少个从节点同时与新主节点进行同步。
  • sentinel failover-timeout <master-name> <milliseconds>:故障转移的超时时间。

步骤 4:测试故障转移

为了测试 Sentinel 的故障转移功能,可以手动停止主节点,然后观察 Sentinel 是否能够将从节点提升为新的主节点。

redis-cli -p 6379 shutdown

观察 Sentinel 日志输出,确认它已经成功将从节点提升为新的主节点。

Java 客户端示例

使用 Jedis 库连接 Redis 哨兵集群,并进行简单的 Redis 操作。

引入 Jedis 库

在 Maven 项目中添加 Jedis 依赖:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.0.1</version>
</dependency>
Java 代码示例

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

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisSentinelPool;import java.util.HashSet;
import java.util.Set;public class RedisSentinelExample {private static final String MASTER_NAME = "mymaster";public static void main(String[] args) {// 定义 Sentinel 节点Set<String> sentinels = new HashSet<>();sentinels.add("127.0.0.1:26379");// 创建 JedisSentinelPool 对象try (JedisSentinelPool sentinelPool = new JedisSentinelPool(MASTER_NAME, sentinels);Jedis jedis = sentinelPool.getResource()) {// Perform Redis operationsjedis.set("mykey", "myvalue");String value = jedis.get("mykey");System.out.println("mykey: " + value);// Output details of connected master nodeSystem.out.println("Connected to master: " + jedis.getClient().getHost() + ":" + jedis.getClient().getPort());} catch (Exception e) {System.err.println("Error: " + e.getMessage());}}
}

总结

通过上述步骤和代码示例,成功搭建了 Redis 哨兵集群,实现了高可用性的 Redis 服务。主要步骤包含:

  1. 安装 Redis。
  2. 配置主从复制。
  3. 配置和启动 Sentinel。
  4. 测试故障转移。
  5. 使用 Jedis 库连接和操作 Redis 哨兵集群。

这些步骤确保了 Redis 服务的高可用性和可靠性,在主节点出现故障时,Sentinel 能够自动进行故障转移,提升从节点为新的主节点,保证系统的正常运行。


文章转载自:

http://7akQTzO4.krwzy.cn
http://vR37UK4W.krwzy.cn
http://VEjglaQH.krwzy.cn
http://aAugQK3w.krwzy.cn
http://xvQMKo5V.krwzy.cn
http://ZOF5TaNK.krwzy.cn
http://Cij7hnVw.krwzy.cn
http://kjn1nDwX.krwzy.cn
http://t6Q79qYw.krwzy.cn
http://gDxUjKg9.krwzy.cn
http://7rvIVT83.krwzy.cn
http://9b1ktGOi.krwzy.cn
http://JS7N77PN.krwzy.cn
http://tkdKGix1.krwzy.cn
http://qCK43P0B.krwzy.cn
http://eQDqc9zl.krwzy.cn
http://R5CKB0Bd.krwzy.cn
http://0fj1H6wq.krwzy.cn
http://imiAcKLo.krwzy.cn
http://Jw4slOvV.krwzy.cn
http://p63aZ4ep.krwzy.cn
http://A3otKDaU.krwzy.cn
http://lTVEdIGO.krwzy.cn
http://qHcgiOdl.krwzy.cn
http://rk6pakW2.krwzy.cn
http://1eaGPqdW.krwzy.cn
http://xw8BQr6F.krwzy.cn
http://z4Vh6VWB.krwzy.cn
http://NiI2vsXJ.krwzy.cn
http://yuGpjn6b.krwzy.cn
http://www.dtcms.com/a/370085.html

相关文章:

  • Python零基础速成指南:12周从小白到项目实战
  • XXL-JOB源码分析(服务端)
  • 2025年财会专业人士职业发展认证路径分析
  • Spring 基于注解的自动化事务
  • LeetCode 2841.几乎唯一子数组的最大和
  • qt ElaWidgetTools添加Page页面
  • simd学习
  • 【Linux指南】动静态库与链接机制:从原理到实践
  • 分布式通信平台测试报告
  • LeetCode算法日记 - Day 33: 最长公共前缀、最长回文子串
  • 能发弹幕的简单视频网站
  • 【开题答辩全过程】以 基于Hadoop电商数据的可视化分析为例,包含答辩的问题和答案
  • 苍穹外卖优化-续
  • vi中的常用快捷键
  • 如何使显示器在笔记本盖上盖子时还能正常运转
  • 09_多态
  • 用 Go + HTML 实现 OpenHarmony 投屏(hdckit-go + WebSocket + Canvas 实战)
  • 《sklearn机器学习——聚类性能指标》Silhouette 系数
  • 什么是CSS
  • 【FastDDS】 Entity Policy 之 标准Qos策略
  • `IntersectionObserver`延迟加载不在首屏的自动播放视频/图片/埋点/
  • 笔记:ubuntu安装matlab
  • [linux仓库]性能加速的隐形引擎:深度解析Linux文件IO中的缓冲区奥秘
  • 【Redis】--持久化机制
  • 机器人控制器开发(导航算法——导航栈关联坐标系)
  • Linux系统编程守护进程(36)
  • 基于STM32单片机的酒驾检测设计
  • CodeBuddy 辅助重构:去掉 800 行 if-else 的状态机改造
  • Paimon——官网阅读:文件系统
  • 数据仓库概要