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
相关推荐
Byte不洛7 分钟前
从除 0 到 SIGPIPE:Linux 信号的真正来源
linux
鱼跃鹰飞14 分钟前
面试题:说说MMAP和DMA/SG-DMA的关系
面试·职场和发展·架构·系统架构
曹轲恒14 分钟前
SpringBoot的热部署
java·spring boot·后端
小码吃趴菜16 分钟前
守护进程及其编程流程
linux·运维·服务器
国科安芯18 分钟前
无人驾驶物流车网关的多路CANFD冗余架构与通信可靠性分析
单片机·嵌入式硬件·性能优化·架构·自动驾驶·安全性测试
bing.shao22 分钟前
Golang 在OPC领域的应用
开发语言·后端·golang
久违81629 分钟前
PHP 安全与部署知识总结
linux·ubuntu·php
程序员侠客行31 分钟前
Mybatis插件原理及分页插件
java·后端·架构·mybatis
开开心心就好32 分钟前
内存清理工具点击清理,自动间隔自启
linux·运维·服务器·安全·硬件架构·材料工程·1024程序员节
数据知道33 分钟前
万字详解 PostgreSQL 的详细安装方式(Linux、Windows、macOS、Docker 全平台覆盖)
linux·windows·postgresql