Windows环境搭建Redis主从哨兵模式

Windows搭建Redis集群——主从加哨兵模式

文章目录

  • Windows搭建Redis集群——主从加哨兵模式
    • 1.简介
    • 2.Redis主从和哨兵的简介
    • 3.集群环境搭建
    • 4.启动测试
    • 5.制造异常情况,验证哨兵是否起到作用。

1.简介

最近学习了一些redis的相关知识,redis集群(主从复制,哨兵机制,分布集群等),下面来实际操作在windows环境搭建redis主从加哨兵机制。

2.Redis主从和哨兵的简介

  • Redis主从

主从复制,是指将一台Redis服务器的数据复制到其他的Redis服务器。前者成为主节点(master),后者成为从节点(slave),数据的复制是单向的,只能由主节点到从几点。

  • Redis哨兵(Sentinel)

顾名思义,Redis哨兵充当了Redis主从实例的守护者,是构成Redis高可用的一个重要组成部分。其主要作用如下:

  • 集群监控,负责监控redis master和slave进程是否正常工作
  • 消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
  • 故障转移,如果master node挂掉了,会自动转移到slave node上
  • 配置中心,如果故障转移发生了,通知client客户端新的master地址

Redis sentinel本身也是分布式的,作为一个哨兵集群去运行,互相协同工作。

由于哨兵本身也是可能失效的,所以一个哨兵不能保证Redis服务的高可用,为了保证Redis服务其中一个节点故障的,其他节点仍能够继续推选新的节点来代替当前故障节点继续对外提供服务,Redis通过仲裁算法来推选新的节点来代替当前故障节点。所以哨兵至少需要三个实例来完成高可用,才是一个健壮的哨兵系统

  • 哨兵至少需要3个实例,来保证自己的健壮性
  • 哨兵 + redis主从的部署架构,是不会保证数据零丢失的,只能保证redis集群的高可用性
  • 对于哨兵 + redis主从这种复杂的部署架构,尽量在测试环境和生产环境,都进行充足的测试和演练

简单介绍了一下Redis的主从和哨兵,深入了解的话可以参考其他文献,这里重点是如何搭建。

3.集群环境搭建

  1. 下载Windows下的Redis安装包(这里我分享了3版本的redis可以使用,链接:https://pan.baidu.com/s/1ltCZQRoMv_ZLaX8MruwbpA?pwd=1cnr
    提取码:1cnr)

  2. 下载完成进行解压
    解压后目录如下:
    Windows环境搭建Redis主从哨兵模式_第1张图片
    Windows环境搭建Redis主从哨兵模式_第2张图片

  3. 复制三份解压后的Redis文件,命名为Redis-6379、Redis-6380、Redis-6381
    Windows环境搭建Redis主从哨兵模式_第3张图片

  4. 修改redis.windows.conf
    Windows环境搭建Redis主从哨兵模式_第4张图片

Redis-6379文件夹不用修改。

Redis-6380文件夹下的redis.windows.conf文件修改为:
Windows环境搭建Redis主从哨兵模式_第5张图片

Redis-6381文件夹下的redis.windows.conf文件修改为:
Windows环境搭建Redis主从哨兵模式_第6张图片

5.增加脚本

在对应的redis文件夹下面新建:

startRedisServer.bat

脚本内容为:

@echo off
redis-server.exe redis.windows.conf
@pause
123

Windows环境搭建Redis主从哨兵模式_第7张图片

依次将6380和6381都添加上。

在redis文件夹同级的目录下在新建:

start6379.cmd、start6380.cmd、start6381.cmd
Windows环境搭建Redis主从哨兵模式_第8张图片

脚本内容为:

start6379.cmd:

@echo off
cd Redis-6379
startRedisServer.bat
123

start6380.cmd:

@echo off
cd Redis-6380
startRedisServer.bat
123

start6381.cmd:

@echo off
cd Redis-6381
startRedisServer.bat
123

6.配置哨兵

在Redis-6379、Redis-6380、Redis-6381文件下新增一个名为sentinel.conf的文件,文件内容如下:

Redis-6379:

# 当前Sentinel服务运行的端口
port 26379
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6380 2
# 3秒内mymaster没响应,则认为mymaster宕机
sentinel down-after-milliseconds mymaster 3000
# 如果10秒后,mymaster仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时,最多有1个从服务器同时对新的主服务器进行同步
sentinel config-epoch mymaster 6
# Generated by CONFIG REWRITE
dir "D:\\Redis\\Redis-6379"
sentinel leader-epoch mymaster 6
sentinel known-slave mymaster 127.0.0.1 6379
sentinel known-slave mymaster 127.0.0.1 6381
sentinel known-sentinel mymaster 127.0.0.1 26381 f468033601759ada7bf82f1b9fdc3d9630b2ebdc
sentinel known-sentinel mymaster 127.0.0.1 26380 f085798e0294383bc82c1405f34e0a6dcb136fd2
sentinel current-epoch 6

12345678910111213141516171819

Windows环境搭建Redis主从哨兵模式_第9张图片

Redis-6380:

# 当前Sentinel服务运行的端口
port 26380
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6380 2
# 3秒内mymaster没响应,则认为mymaster宕机
sentinel down-after-milliseconds mymaster 3000
# 如果10秒后,mymaster仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时,最多有1个从服务器同时对新的主服务器进行同步
sentinel config-epoch mymaster 6
# Generated by CONFIG REWRITE
dir "D:\\Redis\\Redis-6380"
sentinel leader-epoch mymaster 6
sentinel known-slave mymaster 127.0.0.1 6381
sentinel known-slave mymaster 127.0.0.1 6379
sentinel known-sentinel mymaster 127.0.0.1 26379 e30ff23c67f78acab2b5fec403c25c5f8f072cdb
sentinel known-sentinel mymaster 127.0.0.1 26381 f468033601759ada7bf82f1b9fdc3d9630b2ebdc
sentinel current-epoch 6
123456789101112131415161718

Windows环境搭建Redis主从哨兵模式_第10张图片

Redis-6381:

# 当前Sentinel服务运行的端口
port 26381
# 哨兵监听的主服务器
sentinel monitor mymaster 127.0.0.1 6380 2
# 3秒内mymaster没响应,则认为mymaster宕机
sentinel down-after-milliseconds mymaster 3000
# 如果10秒后,mymaster仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时,最多有1个从服务器同时对新的主服务器进行同步
sentinel config-epoch mymaster 6
# Generated by CONFIG REWRITE
dir "D:\\Redis\\Redis-6381"
sentinel leader-epoch mymaster 6
sentinel known-slave mymaster 127.0.0.1 6379
sentinel known-slave mymaster 127.0.0.1 6381
sentinel known-sentinel mymaster 127.0.0.1 26379 e30ff23c67f78acab2b5fec403c25c5f8f072cdb
sentinel known-sentinel mymaster 127.0.0.1 26380 f085798e0294383bc82c1405f34e0a6dcb136fd2
sentinel current-epoch 6
123456789101112131415161718

Windows环境搭建Redis主从哨兵模式_第11张图片

在Redis-6379、Redis-6380、Redis-6381文件下新增Redis-Sentinel启动脚本:startRedisSentinel.bat。

内容如下:

@echo off
redis-server.exe sentinel.conf --sentinel
@pause
123

Windows环境搭建Redis主从哨兵模式_第12张图片
Windows环境搭建Redis主从哨兵模式_第13张图片
Windows环境搭建Redis主从哨兵模式_第14张图片

配置启动startRedisSentinel.bat的脚本:startrRedisSentinel26379.cmd、startrRedisSentinel26380.cmd、startrRedisSentinel26381.cmd.

内容为:

startrRedisSentinel26379.cmd:

@echo off
cd Redis-6379
startRedisSentinel.bat
at
1234

startrRedisSentinel26380.cmd:

@echo off
cd Redis-6380
startRedisSentinel.bat
at
1234

startrRedisSentinel26381.cmd:

@echo off
cd Redis-6381
startRedisSentinel.bat
at
1234

配置完成后如下图:
Windows环境搭建Redis主从哨兵模式_第15张图片

4.启动测试

启动规则:先启动主节点,然后再启动从节点。
1、依次双击启动脚本start6379.cmd、start6380.cmd、start6381.cmd启动主从节点。
2、双击启动startrRedisSentinel26379.cmd、startrRedisSentinel26380.cmd、startrRedisSentinel26381.cmd。启动三个哨兵实例。
查看主从节点状态
(1)进入Redis-6379目录下,cmd进入。

使用如下命令,进入6379的客户端

redis-cli.exe -p 6379

使用如下命令查看详情

info replication

Windows环境搭建Redis主从哨兵模式_第16张图片

通过详情可以看到,6379端口为master节点,两个slave结点为6380和6381

(2)进入Redis-6380目录下,cmd进入。

使用如下命令,进入6380的客户端

redis-cli.exe -p 6380

使用如下命令查看详情

info replication

Windows环境搭建Redis主从哨兵模式_第17张图片

通过详情可以看到,6380为slave节点,master结点为6379

进入Redis-6381目录下,cmd进入。

使用如下命令,进入6381的客户端

redis-cli.exe -p 6381

使用如下命令查看详情

info replication

Windows环境搭建Redis主从哨兵模式_第18张图片

通过详情可以看到,6381为slave节点,master结点为6379。

查看哨兵实例:
Windows环境搭建Redis主从哨兵模式_第19张图片

Windows环境搭建Redis主从哨兵模式_第20张图片

Windows环境搭建Redis主从哨兵模式_第21张图片

三个哨兵实例全部启动成功,生成了各自的id。

5.制造异常情况,验证哨兵是否起到作用。

异常关闭其中一个redis服务器
将master节点6379异常关闭,在不手动修改的情况下,验证哨兵机制是否起到效果。

1.异常关闭6379主节点服务
Windows环境搭建Redis主从哨兵模式_第22张图片
在redis6379服务关闭的瞬间,这是哨兵6380的变化情况,此时可以看到6379已经宕机,哨兵采用leader机制从新选举master主结点,最终经过选举选了6381结点为主结点master的过程。

2.查看6380端口和6381端口

6381端口:
Windows环境搭建Redis主从哨兵模式_第23张图片

通过详情可以看出,6381现在为master节点,其slave节点只有一个6380端口。

6380端口:
Windows环境搭建Redis主从哨兵模式_第24张图片

通过详情看出,6381为master节点,其slave节点为6380。

可以看出,在不手动修改的情况下,当主节点宕机后,哨兵会监听主动将存活的节点升为主机点,达到了预想的效果。

你可能感兴趣的:(redis,windows,数据库)