Redis哨兵模式搭建

一、Sentinel模式概述


哨兵模式

    Sentinel模式是用于监控Redis集群中master状态的工具,它是一种特殊的模式,也是一个独立的进程。同时Sentinel也是Redis的高可用性解决方案,它负责监控一个或者多个master服务器及所有的slave服务器;当某个master服务宕机后,sentinel中某个哨兵监控到这一情况,系统不会马上进行failover,因为这只是某个哨兵的主观认为,不代表最终结论,这种现象称为主观下线(Subjectively Down, 简称 SDOWN)。当后面哨兵也检测到相同情况,并且达到一定数量时,哨兵之间会进行投票,投票结果会由其中一个sentinel发起并进行failover操作,切换成功后通过发布订阅模式通知其他sentinel把自己监控的slave实现切换主机,这一过程称之为客观下线(Objectively Down, 简称 ODOWN),当前master服务恢复之后设置为slave。

    以下是哨兵机制的简易流程,Redis6379为master、Redis6380为slave、Redis6381为slave之后的搭建流程也遵循这一过程:


哨兵模式
master宕机
故障切换(failover)
主机恢复

二、Redis-sentinel搭建

    1.  环境

                Redis 版本: Redis-x64-3.2.10

                操作系统: Windows 10 64位

                master:127.0.0.1:6379

                slave:127.0.0.1:6380 

    2.搭建简单——主从集群

        (1)复制两份解压后Redis

            将解压后的redis文件复制出两份,分别命名为redis6379、redis6380,并修改redis6380对应的redis.windows.conf、redis.windows-service.conf两个文件,分别修改以下数据:

port 6380

# slaveof

slaveof 127.0.0.1 6379

        (2)添加启动脚本

//以6379为例其他同理
title redis6379

redis-server.exe redis.windows.conf


启动脚本,6379.bat

        (3)启动测试     

            先启动master后启动slave,具体信息如图所示:                


master
slave

    3.Redis-sentinel搭建

        (1)添加sentinel.conf配置文件

            在redis6379~6381文件中新增一个名为sentinel.conf 的文件。配置内容如下:

# 以redis6379为例,其他同理只需要修改端口

# Sentinel运行端口

port 26379

# 设置监控地址,为对应的主redis库的内网地址

sentinel monitor mymaster 127.0.0.1 6379 2

# 3s内master无响应,则认为master宕机

sentinel down-after-milliseconds mymaster 3000

# 10s后,master仍没启动过来,则启动failover

sentinel failover-timeout mymaster 10000

# 执行故障转移时,slave同时对新master进行同步

sentinel parallel-syncs mymaster 1

            sentinel monitor [master-group-name] [ip] [port] [quorum]

            master-group-name:master名称(可自定义)

            IP和port:IP地址和端口号

            quorum:票数,Sentinel需要协商同意master是否可到达的数量

        (2)添加启动脚本

#以6379为例,其他同理

title redis-sentinel-6381                      

redis-server.exe sentinel.conf --sentinel


sentinel启动脚本

        (3)启动测试


sentinel启动,自动识别主从服务器

三、场景演示

    场景1:主服务器宕机


master宕机


failover过程

    场景2:master6379重新启动


前master重新上线


   

你可能感兴趣的:(Redis哨兵模式搭建)