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

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

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. 下载完成进行解压
    解压后目录如下:
    在这里插入图片描述
    在这里插入图片描述

  3. 复制三份解压后的Redis文件,命名为Redis-6379、Redis-6380、Redis-6381
    在这里插入图片描述

  4. 修改redis.windows.conf
    在这里插入图片描述

Redis-6379文件夹不用修改。

Redis-6380文件夹下的redis.windows.conf文件修改为:
在这里插入图片描述

Redis-6381文件夹下的redis.windows.conf文件修改为:
在这里插入图片描述

5.增加脚本

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

startRedisServer.bat

脚本内容为:

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

在这里插入图片描述

依次将6380和6381都添加上。

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

start6379.cmd、start6380.cmd、start6381.cmd
在这里插入图片描述

脚本内容为:

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

内容如下:

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置启动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

配置完成后如下图:
在这里插入图片描述

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

在这里插入图片描述

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

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

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

redis-cli.exe -p 6380

使用如下命令查看详情

info replication

在这里插入图片描述

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

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

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

redis-cli.exe -p 6381

使用如下命令查看详情

info replication

在这里插入图片描述

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

查看哨兵实例:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

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

1.异常关闭6379主节点服务
在这里插入图片描述
在redis6379服务关闭的瞬间,这是哨兵6380的变化情况,此时可以看到6379已经宕机,哨兵采用leader机制从新选举master主结点,最终经过选举选了6381结点为主结点master的过程。

2.查看6380端口和6381端口

6381端口:
在这里插入图片描述

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

6380端口:
在这里插入图片描述

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

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

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Linux上搭建Redis哨兵模式,你可以按照以下步骤进行操作: 1. 首先,修改复制后的哨兵配置文件,将其重命名为sentinel-26379.conf,并使用vim编辑该文件。 2. 哨兵模式是实现Redis主从高可用机制的解决方案。它通过心跳检测机制对主机进行监控,当连续三次没有成功地与主机进行通信时,哨兵会认为主机宕机,并进行选举机制选出新的主机。 3. 在开始搭建哨兵模式之前,需要准备配置文件。复制两份sentinel-26379.conf文件,并将它们分别重命名为sentinel-26380.conf和sentinel-26381.conf。然后,将每个配置文件的端口号分别修改为对应的端口号。 4. 接下来,启动哨兵模式。使用以下命令分别启动三个哨兵实例: ``` redis-sentinel sentinel-26379.conf redis-sentinel sentinel-26380.conf redis-sentinel sentinel-26381.conf ``` 通过以上步骤,你就成功地在Linux上搭建了Redis哨兵模式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux环境下redis哨兵模式搭建](https://blog.csdn.net/m0_46352118/article/details/108433392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值