Windows下搭建Redis哨兵集群模式

哨兵模式简介

哨兵模式,是基于主从复制模式,主从复制的优点全都拥有,并且主从可以实现自动切换,故障转移等功能,系统的可用性更好,哨兵模式其实就是主从模式的升级版,手动到自动切换,更加健壮。

其缺点是不好在线扩容,集群容量如果达到上限,扩容麻烦

图上则是一主二从三哨兵的架构图

最终搭建好的Redis Sentinel集群模式目录是如下

6379端口是主节点,6380和6381端口是从节点,每个节点下都存在一个哨兵。

实现搭建

首先下载到window系统redis安装包(注意:版本必须在2.8以上,redis2.8版本之后的才支持redis sentinel集群模式)

复制出三份redis,文件夹分别以redis+端口号命名

主节点-6379-配置

修改redis.windows.conf配置文件,大概在40行上下,修改端口为6379.

创建哨兵,其次再新建一个sentinel.conf文件,将里面的port端口修改为26379

conf 复制代码
# 哨兵sentinel实例运行的端口
port 26379

# 本地ip
bind 127.0.0.1

# 哨兵监听的主服务器 后面的1表示主机挂掉以后进行投票,只需要2票就可以从机变主机
sentinel monitor mymaster 127.0.0.1 6379 2

# 设置主机的密码(无密码可以省略)
# sentinel auth-pass mymaster admin

# 设置未得到主机响应时间,此处代表5秒未响应视为宕机
sentinel down-after-milliseconds mymaster 5000

# 设置等待主机活动时间,此处代表15秒主机未活动,则重新选举主机
sentinel failover-timeout mymaster 15000

# 设置重新选举主机后,同一时间同步数据的从机数量,此处代表重新选举主机后,每次2台从机同步主机数据,直到所有从机同步结束
sentinel config-epoch mymaster 2

# 执行故障转移时, 最多有2个从服务器同时对新的主服务器进行同步
sentinel leader-epoch mymaster 2

从节点-6380-配置

修改redis.windows.conf配置文件,大概在40行上下,修改端口为6380,并且大概在200行新增一个slaveof 127.0.0.1 6379,监听主节点。

创建哨兵,其次再新建一个sentinel.conf文件,将里面的port端口修改为26380,其他配置不动

conf 复制代码
# 哨兵sentinel实例运行的端口
port 26380

# 本地ip
bind 127.0.0.1

# 哨兵监听的主服务器 后面的1表示主机挂掉以后进行投票,只需要2票就可以从机变主机
sentinel monitor mymaster 127.0.0.1 6379 2

# 设置主机的密码(无密码可以省略)
# sentinel auth-pass mymaster admin

# 设置未得到主机响应时间,此处代表5秒未响应视为宕机
sentinel down-after-milliseconds mymaster 5000

# 设置等待主机活动时间,此处代表15秒主机未活动,则重新选举主机
sentinel failover-timeout mymaster 15000

# 设置重新选举主机后,同一时间同步数据的从机数量,此处代表重新选举主机后,每次2台从机同步主机数据,直到所有从机同步结束
sentinel config-epoch mymaster 2

# 执行故障转移时, 最多有2个从服务器同时对新的主服务器进行同步
sentinel leader-epoch mymaster 2

从节点-6381-配置

修改redis.windows.conf配置文件,大概在40行上下,修改端口为6381,并且大概在200行新增一个slaveof 127.0.0.1 6379,监听主节点。

创建哨兵,其次再新建一个sentinel.conf文件,将里面的port端口修改为26381,其他配置不动

conf 复制代码
# 哨兵sentinel实例运行的端口
port 26381

# 本地ip
bind 127.0.0.1

# 哨兵监听的主服务器 后面的1表示主机挂掉以后进行投票,只需要2票就可以从机变主机
sentinel monitor mymaster 127.0.0.1 6379 2

# 设置主机的密码(无密码可以省略)
# sentinel auth-pass mymaster admin

# 设置未得到主机响应时间,此处代表5秒未响应视为宕机
sentinel down-after-milliseconds mymaster 5000

# 设置等待主机活动时间,此处代表15秒主机未活动,则重新选举主机
sentinel failover-timeout mymaster 15000

# 设置重新选举主机后,同一时间同步数据的从机数量,此处代表重新选举主机后,每次2台从机同步主机数据,直到所有从机同步结束
sentinel config-epoch mymaster 2

# 执行故障转移时, 最多有2个从服务器同时对新的主服务器进行同步
sentinel leader-epoch mymaster 2

启动哨兵

分别cd到三个文件夹目录下打开cmd窗口,使用redis-server.exe ./redis.windows.conf启动三个主从redis服务

等三个redis服务启动成功之后,接着使用redis-server.exe ./sentinel.conf --sentinel启动三个哨兵

查询当前节点是否主节点

cd进入当前redis目录下cmd开启黑窗口,redis-cli.exe -h 127.0.0.1 -p 6379登录redis客户端

命令info replication查看

查看哨兵的状态

命令redis-cli.exe -p 26379进入客户端

命令info sentinel查看

可以看出sentinel状态正常,能够检测到redis的2个从节点,3个哨兵

宕机测试

将6379端口的主节点redis关闭,模拟宕机的情况。

哨兵投票选举出新的从节点升为主节点。

当6379重新启动之后,自动降为从节点

SpringBoot集成Redis哨兵模式

maven配置

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
yml 复制代码
spring:
  redis:
    password: xxx
    database: 0
    sentinel:
      password: xxx
      master: mymaster
      nodes:
        - 127.0.0.1:26379
        - 127.0.0.1:26380
        - 127.0.0.1:26381
    lettuce:
      pool:
        min-idle: 3
        max-idle: 8
        max-active: 15
        max-wait: 10000
相关推荐
吴佳浩2 小时前
Python入门指南(五) - 为什么选择 FastAPI?
后端·python·fastapi
晚烛2 小时前
Flutter + OpenHarmony 导航与状态管理架构:构建可维护、可扩展、高性能的鸿蒙应用骨架
flutter·架构·harmonyos
GoGeekBaird3 小时前
分享几个使用Nano Banana Pro 画信息图的提示词
后端·github
shoubepatien3 小时前
JAVA -- 08
java·后端·intellij-idea
yangminlei3 小时前
springboot pom.xml配置文件详细解析
java·spring boot·后端
Xの哲學3 小时前
Linux grep命令:文本搜索的艺术与科学
linux·服务器·算法·架构·边缘计算
MarkHD3 小时前
智能体在车联网中的应用 第1天 车联网完全导论:从核心定义到架构全景,构建你的知识坐标系
人工智能·架构
黄俊懿3 小时前
【深入理解SpringCloud微服务】Seata(AT模式)源码解析——全局事务的提交
java·后端·spring·spring cloud·微服务·架构·架构师
夜月yeyue3 小时前
Linux 调度类(sched_class)
linux·运维·c语言·单片机·性能优化
白宇横流学长4 小时前
基于SpringBoot实现的历史馆藏系统设计与实现【源码+文档】
java·spring boot·后端