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

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

步骤 1:安装 Redis

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

sh 复制代码
sudo apt update
sudo apt install redis-server

步骤 2:配置主从复制

配置主节点

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

plaintext 复制代码
port 6379
bind 0.0.0.0
dir /var/lib/redis
appendonly yes

启动主节点:

sh 复制代码
redis-server redis-master.conf

配置从节点

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

plaintext 复制代码
port 6380
bind 0.0.0.0
dir /var/lib/redis
appendonly yes
slaveof 127.0.0.1 6379

启动从节点:

sh 复制代码
redis-server redis-slave.conf

步骤 3:配置和启动 Sentinel

创建并编辑 Sentinel 配置文件 sentinel.conf

plaintext 复制代码
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:

sh 复制代码
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 是否能够将从节点提升为新的主节点。

sh 复制代码
redis-cli -p 6379 shutdown

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

Java 客户端示例

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

引入 Jedis 库

在 Maven 项目中添加 Jedis 依赖:

xml 复制代码
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.0.1</version>
</dependency>

Java 代码示例

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

java 复制代码
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 operations
            jedis.set("mykey", "myvalue");
            String value = jedis.get("mykey");
            System.out.println("mykey: " + value);

            // Output details of connected master node
            System.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 能够自动进行故障转移,提升从节点为新的主节点,保证系统的正常运行。

相关推荐
Mahir084 小时前
Spring 循环依赖深度解密:从问题本质到三级缓存源码级解析
java·后端·spring·缓存·面试·循环依赖·三级缓存
IT_陈寒8 小时前
Redis缓存击穿把我整不会了,原来还有这手操作
前端·人工智能·后端
kyriewen9 小时前
面试官让我查各部门工资最高的员工,我用AI三秒写出窗口函数,他愣了
后端·mysql·面试
文心快码BaiduComate9 小时前
干货|Comate Harness Engineering工程实践指南
前端·后端·程序员
光辉GuangHui9 小时前
Agent Skill 也需要测试:如何搭建 Skill 评估框架
前端·后端·llm
我是谁的程序员9 小时前
Mac 上生成 AppStoreInfo.plist 文件,App Store 上架
后端·ios
irving同学462389 小时前
Node 后端实战:JWT 认证与生产级错误处理
前端·后端
Master_Azur9 小时前
单元测试——Junit单元测试框架
后端
用户8356290780519 小时前
使用 Python 进行 Word 邮件合并
后端
用户8356290780519 小时前
Python 操作 PowerPoint OLE 对象
后端·python