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 会自动进行故障转移,提升从节点为新的主节点,保证系统的正常运行。

相关推荐
爱可生开源社区1 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再2 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest2 天前
数据库SQL学习
数据库·sql
jnrjian2 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
十月南城2 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
Henry Zhu1232 天前
数据库:并发控制基本概念
服务器·数据库