1. master宕机了要把slave1变为master,并把slave2指向slave1
  2.  
  3. 可以运行时更改master-slaveconfig set/get,修改一台slave(设为A)为new master
  4. 1)命令该服务不做其他redis服务的slave,命令: slaveof no one
  5. 2)修改其readonlyyes,其他的slave再指向new master A
  6. 1)命令该服务为new master Aslave,命令格式 slaveof IP port
  7.  
  8. 6379:>shutdown
  9. 6378,6377>info replication
  10. "# Replication
  11. role:slave
  12. master_host:127.0.0.1
  13. master_port:6379
  14. master_link_status:down
  15.  
  16. 6378:0>slaveof no one //不在是从服务器
  17. "OK"
  18.  
  19. 6378:0>info replication //现在已经是主服务器了,0个从
  20. "# Replication
  21. role:master
  22. connected_slaves:0
  23.  
  24. 6378:0>config get slave-read-only //不能是readonly的
  25. 1) "slave-read-only"
  26. 2) "yes"
  27. 6378:0>config set slave-read-only no
  28. "OK"
  29. 6378:0>config get slave-read-only
  30. 1) "slave-read-only"
  31. 2) "no"
  32.  
  33. 6377:0>slaveof 127.0.0.1 6378
  34. "OK"
  35.  
  36. //原来6377,6378指向6379,现在6379宕机6378变为master6377变为6378的slave
  37. 6379:0>info replication
  38. "# Replication
  39. role:master
  40. connected_slaves:0
  41.  
  42. 6378:0>info replication
  43. "# Replication
  44. role:master
  45. connected_slaves:1
  46. slave0:ip=127.0.0.1,port=6377,state=online,offset=408,lag=0
  47. 6377:0>info replication
  48. "# Replication
  49. role:slave
  50. master_host:127.0.0.1
  51. master_port:6378
  1. 监控工具 sentinel(就是刚才手工的操作)
  2. sentinel monitor mymaster 127.0.0.1 6379 2 //2个sentinel监控到失效了
  3. sentinel auth-pass mymaster 012_345^678-90
  4. ##master被当前sentinel实例认定为“失效”的间隔时间
  5. ##如果当前sentinel与master直接的通讯中,在指定时间内没有响应或者响应错误代码,那么当前sentinel就认为master失效(SDOWN,“主观”失效)
  6. ##<mastername> <millseconds> 默认为30秒
  7. sentinel down-after-milliseconds mymaster 30000 //30000毫秒,30秒
  8.  
  9. ##当前sentinel实例是否允许实施“failover”(故障转移,把不把slave变为master)
  10. ##no表示当前sentinel为“观察者”(只参与"投票".不参与实施failover),(一般是多台sentinel监控一台master,只有一台sentinel可以修改slave为master,多台sentlnel不能一起改。有2台发现宕机了就宕机了),##全局中至少有一个为yes只能一个sentinel来修改。
  11. sentinel can-failover mymaster yes //
  12. ##sentinel notification-script mymaster /var/redis/notify.sh

  1. Sentinel不断与master通信,获取masterslave信息,监听masterslave的状态
  2. 如果某slave失效,直接通知master去除该slave,如果master失效,,是按照slave优先级(可配置), 选取1slave new master,把其他slave--> new master
  3.  
  4. 疑问: sentinelmaster通信,如果某次因为master IO操作频繁,导致超时,
  5. 此时,认为master失效,很武断.解决: sentnel允许多个实例看守1master, N台(N可设置)sentinel都认为master失效,才正式失效.
  6.  
  7. Sentinel.conf 选项配置:
  8. port 26379 # 端口
  9. sentinel monitor mymaster 127.0.0.1 6379 2 , //给主机起的名字(不重即可), 当2个sentinel实例都认为master失效时,正式失效
  10. sentinel down-after-milliseconds mymaster 30000 #多少毫秒后连接不到master认为断开
  11. sentinel can-failover mymaster yes #是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改./
  12. sentinel parallel-syncs mymaster 1 , #一次性修改几个slave指向新的new master.1表示是一台一台的来,防止新的masterio过高而宕机
  13. sentinel failover-timeout mymaster 900000 //15分钟之内没有完成刚才的所有操作则表示操作失败,然后发送短信什么的。
  14. sentinel client-reconfig-script mymaster /var/redis/reconfig.sh ,# 在重新配置new master,new slave过程,可以触发的脚本
  15. Redis-server ./Sentinel.conf --sentinel //启动
  1. slave-priority 10 //多个slave的时候可以选择哪个优先作为master,越小越靠前。
  2. //同一个redis实例里面复制多个配置文件,就可以开启多个redis实例和sentinel。

  1. 80是主,777879是从。80宕机后79是主,并且是改了配置文件,也就是说重启后79仍然是主(通过info replication查看主从信息)。如果79 的数据比80 少,那么79做主后80的数据跟79同步,那么79的数据也会丢失。Sentinel 的配置文件也改了。 因为配置文件改了,所以只启动一个从服务器时他仍然是主服务器的slave,并且等着主服务器起来,只有启动了sentinel看见主服务器没有起来,会修改配置文件把当前的从服务器修改为master.

Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 --sentinel 选项来启动 Redis Sentinel 。

启动 Sentinel

对于 redis-sentinel 程序, 你可以用以下命令来启动 Sentinel 系统:

  1. redis-sentinel /path/to/sentinel.conf

对于 redis-server 程序, 你可以用以下命令来启动一个运行在 Sentinel 模式下的 Redis 服务器:

  1. redis-server /path/to/sentinel.conf --sentinel

两种方法都可以启动一个 Sentinel 实例。

启动 Sentinel 实例必须指定相应的配置文件, 系统会使用配置文件来保存 Sentinel 的当前状态, 并在 Sentinel 重启时通过载入配置文件来进行状态还原。

如果启动 Sentinel 时没有指定相应的配置文件, 或者指定的配置文件不可写(not writable), 那么 Sentinel 会拒绝启动。

  1. 方式一:redis-sentinel /path/to/sentinel.conf(推荐,这种方式启动和redis实例没有任何关系)
  2. 方式二:redis-server /path/to/sentinel.conf --sentinel

配置 Sentinel

Redis 源码中包含了一个名为 sentinel.conf 的文件, 这个文件是一个带有详细注释的 Sentinel 配置文件示例。

运行一个 Sentinel 所需的最少配置如下所示:

  1. sentinel monitor mymaster 127.0.0.1 6379 2
  2. sentinel down-after-milliseconds mymaster 60000
  3. sentinel failover-timeout mymaster 180000
  4. sentinel parallel-syncs mymaster 1
  5.  
  6. sentinel monitor resque 192.168.1.3 6380 4
  7. sentinel down-after-milliseconds resque 10000
  8. sentinel failover-timeout resque 180000
  9. sentinel parallel-syncs resque 5

第一行配置指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 127.0.0.1 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。

不过要注意, 无论你设置要多少个 Sentinel 同意才能判断一个服务器失效, 一个 Sentinel 都需要获得系统中多数(majority) Sentinel 的支持, 才能发起一次自动故障迁移, 并预留一个给定的配置纪元 (configuration Epoch ,一个配置纪元就是一个新主服务器配置的版本号)。

换句话说, 在只有少数(minority) Sentinel 进程正常运作的情况下, Sentinel 是不能执行自动故障迁移的。

其他选项的基本格式如下:

  1. sentinel <选项的名字> <主服务器的名字> <选项的值>
  1. $ ./redis-cli -h 127.0.0.1 -p 6379 -a myPassword 密码启动
  1. redis文档http://redisdoc.com/index.html

redis11----监控工具 sentinel的更多相关文章

  1. Redis简明教程

    redis是什么: Redis is an open source, BSD licensed, advanced key-value store. It is often referred to a ...

  2. Redis Sentinel高可用配置及C#访问

    本文环境如下: 操作系统:ubuntu-14.04.1-desktop-amd64 Redis:2.8.19 如果使用虚拟机则将每台的网络设置为桥接,否则他们之间能连上,局域网连不上. 系统设计如图: ...

  3. celery监控工具flower

    特性 用Celery事件实时监控 任务进程和历史 能够显示任务的详细信息(arguments, start time, runtime等) 图形化和统计 远程控制 查看worker状态和统计 关闭和重 ...

  4. 学习一下 SpringCloud (四)-- 服务降级、熔断 Hystrix、Sentinel

    (1) 相关博文地址: 学习一下 SpringCloud (一)-- 从单体架构到微服务架构.代码拆分(maven 聚合): https://www.cnblogs.com/l-y-h/p/14105 ...

  5. 进程监控工具supervisor 启动Mongodb

    进程监控工具supervisor 启动Mongodb 一什么是supervisor Superviosr是一个UNIX-like系统上的进程监控工具. Supervisor是一个Python开发的cl ...

  6. API Monitor简介(API监控工具)

    API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用. 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题. 64位支持 API ...

  7. Java 性能分析工具 , 第 2 部分:Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  8. Redis集群~windows下搭建Sentinel环境及它对主从模式的实际意义

    回到目录 关于redis-sentinel出现的原因 Redis集群的主从模式有个最大的弊端,就是当主master挂了之前,它的slave从服务器无法提升为主,而在redis-sentinel出现之后 ...

  9. 在Centos中部署redis运行状态图形化监控工具 — RedisLive

    写在前面 前两天看到张善友老师的一篇文章<先定个小目标, 使用C# 开发的千万级应用>,里面给出了一张腾讯OA基础服务中redis运行情况的一张监控图,然后想到自己的项目中前不久也上了re ...

随机推荐

  1. 【强连通分量缩点】poj 1236 Network of Schools

    poj.org/problem?id=1236 [题意] 给定一个有向图,求: (1)至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点 (2)至少要加多少条边,才能使得从任何一个顶点出发,都 ...

  2. 转载: 找不到MSVCR90.dll、Debug vs Release及cppLapack相关

    今天调试程序时出现了,找不到MSCVR90.dll的错误,最好查找到了解决办法,原文链接如下:   http://hi.baidu.com/wpzhao/blog/item/72dc08f77ce9b ...

  3. 图表控件Anychart常见问题

    AnyChart控件是一款当前流行的数据可视化解决方案,使客户可以创建交互地.生动的图表.实时仪表和地图.同时支持Flash和HTML5显示,控件提供极好的视觉外观和配色方案能够使客户根据不同的需求设 ...

  4. hdu 5012 bfs 康托展开

    Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  5. ThinkPHP5.1入门

    ThinkPHP5.1入门 ===================================Composer的官方网站:https://www.phpcomposer.com/========= ...

  6. 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项

    MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上.MyBatis提供了一级缓存.二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能.本 ...

  7. Java 5/Java 6/Java7/Java 8新特性收集

    前言: Java 8对应的JDK版本为JDK8,而官网下载回来安装的时候,文件夹上写的是JDK1.8,同一个意思.(而这个版本命名也是有规律的,以此类推) 一.Java 5 1.https://seg ...

  8. Linux下运行Java项目时,出现No X11 DISPLAY variable was set, but this program performed an operation which requires it.的问题解决

    在~/.bashrc环境变量文件最下方加入: export DISPLAY=:0.0 然后,刷新环境变量以使其生效: source -/.bashrc 参考:http://stackoverflow. ...

  9. JDK动态代理理解精髓

      1.Java动态代理的关键是:Proxy类要和InvocationHandler的接口实现类,要用同一个目标target对象class,所以精髓是InvocationHandler和Proxy是一 ...

  10. Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 建立一个文件夹filePackage 在filePackage 文件夹内创建 __init__.py 有了 __init__.py ,filePackage才算是 ...