Redis(47)如何配置Redis哨兵?

配置 Redis 哨兵(Sentinel)是一项确保 Redis 集群高可用性的关键任务。下面的指南将详细介绍如何配置 Redis 哨兵,包括配置主从复制、设置 Sentinel 监控以及测试故障转移过程,并结合相关代码示例。

步骤 1:安装 Redis

在所有参与的服务器上安装 Redis。以下以 Ubuntu 系统为例:

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

在每台运行 Redis Sentinel 的机器上,创建并编辑 Sentinel 配置文件 sentinel.conf

plaintext 复制代码
port 26379
dir /tmp

# Sentinel 监控的主节点名称、IP 和端口
sentinel monitor mymaster 127.0.0.1 6379 2

# 定义 Sentinel 认为主节点不可用的时间(毫秒)
sentinel down-after-milliseconds mymaster 5000

# 故障转移时,同步新主节点的从节点数量
sentinel parallel-syncs mymaster 1

# 故障转移超时时间
sentinel failover-timeout mymaster 60000

在每台 Sentinel 服务器上启动 Sentinel:

sh 复制代码
redis-sentinel sentinel.conf

测试故障转移

手动停止主节点,以测试 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()) {

            // 执行 Redis 操作
            jedis.set("mykey", "myvalue");
            String value = jedis.get("mykey");
            System.out.println("mykey: " + value);

            // 输出连接的主节点信息
            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:在所有服务器上安装 Redis。
  2. 配置主从复制:配置主节点和从节点,并启动它们。
  3. 配置和启动 Sentinel:配置 Sentinel,并在每台 Sentinel 服务器上启动它。
  4. 测试故障转移:通过手动停止主节点,验证 Sentinel 的故障转移功能。
  5. 使用 Jedis 库连接和操作 Redis 哨兵集群:在 Java 中使用 Jedis 连接和操作 Redis 哨兵集群。

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

相关推荐
GoGeekBaird2 小时前
我开源了 BeeWeave,给 AI Agent 搭一个越用越懂你的知识创作台
后端·github
犀利豆5 小时前
AI in Harness(四)
人工智能·后端
Hui Baby5 小时前
Spring Security
java·后端·spring
逝水无殇6 小时前
C# 运算符重载详解
开发语言·后端·c#
苏三说技术6 小时前
2026编程圈很火的10个Skills
后端
用户8356290780517 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python
编程(变成)小辣鸡7 小时前
Spring事务失效场景
java·后端·spring
PinkSun7 小时前
MySQL 建表报 1030,能查不能建,排查 1 小时发现是我自己改了一行权限
后端
无相求码8 小时前
为什么 printf 可以接受任意数量参数?变长参数的底层真相
后端
郡杰8 小时前
Boot:MP|测验|结果封装|异常处理|前后联调|拦截器
后端