redis 哨兵模式

引言

一主多从可以做到读写分离,但是如果主库宕机, 服务也就终止了,那么如何解决呢,redis 提供了哨兵模式。

哨兵模式

在 redis 根目录新建 masterSlaveConfig 目录, 如下所示
在这里插入图片描述

在6381、6382、6383、6384 文件夹各自添加 redis.windows.confsentinel.conf 配置文件,redis.windows.conf 配置可以参考一主多从

在这里插入图片描述
假定 6381 为主库,6382、6383、6384 为从库,sentinel 端口分别为 26381、26382、26383、26384 ,在对应文件夹分别新增 sentinel.conf 文件,添加如下配置,

# sentinel实例运行的端口
port 26381
protected-mode no

bind 127.0.0.1

# 选项指定了 Sentinel 认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误, 那么 Sentinel 将这个实例标记为主观下线(subjectively down,简称 SDOWN )
# Default is 30 seconds.
sentinel monitor mymaster 127.0.0.1 6381 2

# 选项指定了 Sentinel 认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误, 那么 Sentinel 将这个实例标记为主观下线(subjectively down,简称 SDOWN )
# Default is 30 seconds.
sentinel down-after-milliseconds mymaster 5000

# 如果在该时间(ms)内未能完成failover操作,则认为该failover失败
#
# Default is 3 minutes.
sentinel failover-timeout mymaster 180000

# 设置哨兵sentinel 连接主从的密码 注意必须为主从设置一样的验证密码,没有的话不用设置
#sentinel auth-pass mymaster 123456

新增 redis 服务端启动文件 startRedis6381.bat 、startRedis6382.bat、 startRedis6383.bat、startRedis6384.bat

@echo off
rem 使用前需在本机配置环境变量 REDIS_HOME
echo %REDIS_HOME%
%REDIS_HOME%/redis-server.exe %REDIS_HOME%/masterSlaveConfig/6381/redis.windows.conf
@pause

新增 redis 哨兵实例启动文件 startRedisSentinel6381.bat 、startRedisSentinel6382.bat、 startRedisSentinel6383.bat、startRedisSentinel6384.bat

@echo off
rem 使用前需在本机配置环境变量 REDIS_HOME
echo %REDIS_HOME%
%REDIS_HOME%/redis-server.exe %REDIS_HOME%/masterSlaveConfig/6381/sentinel.conf --sentinel
@pause

测试

依次启动 startRedis6381.bat 、startRedis6382.bat、 startRedis6383.bat、startRedis6384.bat 、 startRedisSentinel6381.bat 、startRedisSentinel6382.bat、 startRedisSentinel6383.bat、startRedisSentinel6384.bat, 连接服务端使用info replication 查看服务器状态

@echo off
set /p host=please enter you host:
set /p port=please enter you port:
echo %REDIS_HOME%/redis-cli.exe -h %host% -p %port%
%REDIS_HOME%/redis-cli.exe -h %host% -p %port%
@pause

主库宕机 ,哨兵会重新推举一个从库来做主库

在这里插入图片描述

快捷启动

如果手动启动哨兵服务,那么我们需要执行八个文件,过于繁琐,所以编写脚本启动是一个不错的选择。

@echo off
echo 启动redis哨兵模式
cd /d %REDIS_HOME%/masterSlaveConfig
start "" cmd /k call startRedisSentinel6381.bat
start "" cmd /k call startRedisSentinel6382.bat
start "" cmd /k call startRedisSentinel6383.bat
start "" cmd /k call startRedisSentinel6384.bat
start "" cmd /k call startRedis6381.bat
start "" cmd /k call startRedis6382.bat
start "" cmd /k call startRedis6383.bat
start "" cmd /k call startRedis6384.bat
echo 已启动
@pause

redis相关资料:

Redis官网

Redis官方文档

redis英文文档

redis中文文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值