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

sentinel6380.conf

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

sentinel3381.conf

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

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(哨兵)的实现过程

Redis学习笔记(十四)Sentinel(哨兵)(上)的更多相关文章

  1. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  2. Redis学习笔记(六、哨兵)

    目录: 基本概念 环境部署 哨兵原理 哨兵命令 基本概念: 1.什么是哨兵 我们先从字面意思来了解哨兵,哨兵是对执行警戒任务的士兵的统称:在redis中哨兵也是一样,他监控着redis服务器的状态. ...

  3. (C/C++学习笔记) 十四. 动态分配

    十四. 动态分配 ● C语言实现动态数组 C语言实现动态数组,克服静态数组大小固定的缺陷 C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量.一旦定义了一个数组,系统将为它分配一个 ...

  4. 【转】Redis学习笔记(四)如何用Redis实现分布式锁(1)—— 单机版

    原文地址:http://bridgeforyou.cn/2018/09/01/Redis-Dsitributed-Lock-1/ 为什么要使用分布式锁 这个问题,可以分为两个问题来回答: 为什么要使用 ...

  5. MYSQL进阶学习笔记十四:MySQL 应用程序优化!(视频序号:进阶_32)

    知识点十五:MySQL 的应用程序优化(32) 一.访问数据库采用连接池 把连接当做对象或设备,统一放在‘连接池’里.凡是需要访问数据库的地方都从连接池里取连接 二.采用缓存减少对于MySQL的访问: ...

  6. Swift学习笔记十四:构造(Initialization)

         类和结构体在实例创建时,必须为全部存储型属性设置合适的初始值. 存储型属性的值不能处于一个未知的状态.     你能够在构造器中为存储型属性赋初值,也能够在定义属性时为其设置默认值.下面章节 ...

  7. Redis学习笔记(四)-数据类型之list类型

    redis的list类型其实就是一个每个子元素都是string类型的双向链表.所以[lr]push和[lr]pop命令的算法时间复杂度都是O(1).另外list会记录链表的长度.所以llen操作也是O ...

  8. JavaScript权威设计--Window对象之Iframe(简要学习笔记十四)

    1.Window对象属性的文档元素(id) 如果在HTML文档中用id属性来为元素命名,并且如果Window对象没有此名字的属性,Window对象会赋予一个属性,它的名字是id属性的值,而他们的值指向 ...

  9. python 学习笔记十四 jQuery案例详解(进阶篇)

    1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  10. SharpGL学习笔记(十四) 材质:十二个材质球

    材质颜色 OpenGL用材料对光的红.绿.蓝三原色的反射率来近似定义材料的颜色.象光源一样,材料颜色也分成环境.漫反射和镜面反射成分,它们决定了材料对环境光.漫反射光和镜面反射光的反射程度.在进行光照 ...

随机推荐

  1. ios应用数据存储的常用方式 ios7.1应用沙盒

    归档:用某种格式保存某个对象,又称持久化. 1XML 属性列表plist归档(持久化) 2Preference(偏好设置) 3NSKeyedArchiver归档 4SQLite3 5Core Data ...

  2. Linux的分段和分页机制

    1.分段机制 80386的两种工作模式  80386的工作模式包括实地址模式和虚地址模式(保护模式).Linux主要工作在保护模式下. 分段机制  在保护模式下,80386虚地址空间可达16K个段,每 ...

  3. Xcode中为何要为设置bundle和App分别设置两份一样的图片资源

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们知道在App设置的bundle中有时也会用到图片资源,而在 ...

  4. Mybatis Generator实现分页功能

    Mybatis Generator实现分页功能 分类: IBATIS2013-07-17 17:03 882人阅读 评论(1) 收藏 举报 mybatisibatisgeneratorpage分页 众 ...

  5. 杨力第一次jjave作业

    感觉jave学起来比c语言难一点,格式要求较高,有更多的东西要记,但是只要认真学应该不是很难,自己应该多写程序.

  6. 全面接触PDF:最好用的PDF软件汇总(转)

    全面接触PDF:最好用的PDF软件汇总(2010-12-07更新): http://xbeta.info/pdf-software.htm 比较全面的c#帮助类,各种功能性代码: https://gi ...

  7. 自动化测试-9.selenium多窗口句柄的切换

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...

  8. Shell函数和数组

    函数的返回值用return,脚本的返回值用exit shell函数只允许返回数字,若不是则报line 6: return: num: numeric argument required:若是写了ret ...

  9. Oracle 数据库中查看表空间的2种方法

    在Oracle数据库中查看表空间使用状况是我们在实际应用中经常涉及到的,以下的内容就就是对Oracle 数据库中查看表空间使用状况时所要用到的SQL的描述,希望你能从中获得自己想要的东西. Oracl ...

  10. XMind使用教程

    使用XMind,可以轻松创建.管理及控制思维导图.1. 启动XMind,选择一个空白模板或模板创建:2. 单击中心主题,输入文字即可对中心主题重命名:3. 使用键盘Enter键创建主要/同级主题,使用 ...