zoukankan      html  css  js  c++  java
  • Redis学习笔记(十四)Sentinel(哨兵)(上)

    最近谈到Redis就会听到哨兵模式,工作期间同事也分享过关于哨兵模式的知识,但由于工作忙(给自己找个借口)没有没认真看,现在恶补下,老样子还是分上篇应用,下篇看实现过程,下面我们来看下哨兵到底是啥?

    哨兵模式(Sentinel)是Redis的高可用解决方案。由一个或多个Sentinel实例组成的Sentinel系统,可以监控任意多个主服务器,以及这些主服务器下的所有从服务器,当某个主服务器下线时,自动将这个主服务器下的某个从服务器升级为新的主服务器,代替下线的主服务器继续处理命令。另外Sentinel系统还会继续监视已下线的主服务器,当主服务器恢复时,它将被降级成该主服务器的从服务器。

    在看哨兵模式的实现过程之前,我们先看一下哨兵的用法

    1、我们将redis.windows.conf配置文件拷贝3份出来,改下名字便于识别:6379.conf,6380,conf,6381.conf。(这里我们模拟使用经典的三节点搭建)

    6379.conf我们使用默认配置的6379端口,分别改下 6380,conf与6381.conf的端口号

     上一章我们使用slaveof <masterip> <masterport>命令设置从节点,现在我们修改6380.conf与6391.conf,将复制命令配置在文件中,将6379作为主节点:

    2、下面我们执行命令,启动三个节点:

    redis-server.exe 6379.conf 

    redis-server.exe 6380.conf 

    redis-server.exe 6381.conf

     

     

     好了,现在三个节点都已经启动,并且从控台上看出,从节点已经在复制主节点的数据。

    3、分别创建三个Sentinel配置文件:sentinel6379.conf ,sentinel6380.conf ,sentinel3381.conf

    内容分别是:

     sentinel6379.conf

    port 26379
    #当前Sentinel服务运行的端口
    port 26379  
    # 哨兵监听的主服务器
    sentinel monitor mymaster 127.0.0.1 6379 2
    #如果在3秒内无相应,则认为主站点宕机
    sentinel down-after-milliseconds mymaster 3000
    #如果10秒后,mysater仍没启动过来,则启动failover 
    sentinel failover-timeout mymaster 10000  
    #执行故障转移时,最多有一台对新的主服务器进行同
    sentinel parallel-syncs mymaster 1

    sentinel6380.conf

    #当前Sentinel服务运行的端口
    port 26380
    # 哨兵监听的主服务器
    sentinel monitor mymaster 127.0.0.1 6379 2
    #如果在3秒内无相应,则认为主站点宕机
    sentinel down-after-milliseconds mymaster 3000
    #如果10秒后,mysater仍没启动过来,则启动failover 
    sentinel failover-timeout mymaster 10000  
    #执行故障转移时,最多有一台对新的主服务器进行同
    sentinel parallel-syncs mymaster 1

    sentinel3381.conf

    port 26381
    # 哨兵监听的主服务器
    sentinel monitor mymaster 127.0.0.1 6379 2
    #如果在3秒内无相应,则认为主站点宕机
    sentinel down-after-milliseconds mymaster 3000
    #如果10秒后,mysater仍没启动过来,则启动failover 
    sentinel failover-timeout mymaster 10000  
    #执行故障转移时,最多有一台对新的主服务器进行同步
    sentinel parallel-syncs mymaster 1

    3、执行命令启动:

    redis-server.exe sentinel6379.conf --sentinel

     redis-server.exe sentinel6380.conf --sentinel

     redis-server.exe sentinel6381.conf --sentinel

     4、校验:

    先看下主服务器6379的信息:

     切换到6380与6381我们看下:

     现在我们模拟主服务器6379宕机(关闭掉6379的服务端),观察6380与6381的反应。

     

     从以上信息来看,6381被选举为主服务器,那么现在我们分别看下6380与6381的信息:

     此时监听信息为:

     下一步我们恢复6379看看会发生什么:

     

     现在看下监听信息:

    此时发现6379被设置为从服务器。

    现在我们redis-cli 连接到6379看下:

    OK完工,暂时只模拟这一种宕机情况。

     

    篇幅有些长,不知道有多少同学能看到这里。

     


     

     

    每天学一点,总会有收获。

     

    下一步我们看下Redis的Sentinel(哨兵)的实现过程

     

  • 相关阅读:
    重新认识数据库的链接查询
    mysql删除一张表中的重复数据
    mysql数据库里复制一张表的SQL,报错 (1786
    case when的使用场景。
    python:浅析python 中__name__ = '__main__' 的作用
    Group(), Groups(),& Groupdict() 用法
    python re模块findall()详解
    练习题(第二模块...模块...选择填空)
    subprocess模块 sys模块
    json,pickle,shelve模块,xml处理模块
  • 原文地址:https://www.cnblogs.com/xtt321/p/12940639.html
Copyright © 2011-2022 走看看