继着上章节的redis主从复制讲解sentinel监控的使用,“sentinel”查看该单词的意思是哨兵的意思,故就有了监控的意思。下面带着大家一步一步了解redis中sentinel的使用方法。

配置redis主从复制

一个主节点(端口6379),两个从节点(端口6380,6381),不会配置的请看我的上一篇redis主从复制的文章。

使用ping命令检查是否启动

redis-cli -h 127.0.0.1 -p 6379 ping

如下,返回PONG表示三个redis服务都已经启动完成

一个主节点:

两个从节点:

主节点查看链接信息

查看6379的连接信息
命令:info replication
可以发现6379的角色是master,有两个从节点,也就是端口为6380,6381的从节点(redis)

同样在6380 从节点中,该节点的角色是slave(从节点),与主节点的连接状态为up(master_link_status),通过这个命令可以方便的查看各个节点的连接状态等信息。

除了用info replication命令外,如下命令也可以快速查看链接信息
redis-cli -h 127.0.0.1 -p 6381 info replication
看个人喜好用哪个命令。

开始部署sentinel 节点

通过sentinel节点部署,可以使redis主从复置更加的高可用,那sentinel到底有什么用呢,从字面意思就看出sentinel是“哨兵”的意思,也就是来监控redis节点的,被sentinel监控的redis节点是主节点,sentinel具有故障转移的功能,什么是故障转移呢?当被sentinel监控的redis节点被意外中断后,sentinel会自动的选择一个角色为slave节点的redis为主节点,维护后续并保证正确的主从复制的关系,而原来的从节点还是从节点,不过它们的主节点变成新升级为主节点的redis服务。下面咱们就一步一步开始搭建sentinel。

部署sentinel

进入安装redis的目录下的配置目录,我的本地是/etc/redis

我这边就直接使用原本的sentinel.conf配置,来作为第一个sentinel节点。我们可以进入sentinel.conf配置看下里面到底有啥配置信息:
sentinel monitor mymaster 127.0.0.1 6379 2 //监控的主节点IP和端口,其中mymaster是该节点的别名,2表示判断主节点失败至少需要两个节点同意
sentinel down-after-milliseconds mymaster 30000 //通过ping命令,各个sentinel节点向redis节点是否可达,超过30000毫秒,就判定不可达
sentinel failover-timeout mymaster 180000 //故障转移超时时间为180000毫秒
如果还有其它的配置,可以自己在探索下

启动sentinel

启动命令:
sudo redis-sentinel sentinel.conf --sentinel

查看sentinel启动情况
redis-cli -h 127.0.0.1 -p 26379 INFO Sentinel
可以看出与查看redis启动的情况命令类似,截图中可以看到此时sentinel监控redis节点是端口为6379的服务,6379有两个从节点,状态为OK,别名是mymaster

继续再配置两个sentinel节点,
sudo cp sentinel.conf sentinel2.conf
sudo cp sentinel.conf sentinel3.conf
修改两个配置的端口为26380, 26381,其它配置可以不用修改
修改完后,分别启动
sudo redis-sentinel sentinel2.conf --sentinel
sudo redis-sentinel sentinel3.conf --sentinel

启动后再次查看sentinel.conf的配置,可以发现配置中多了两个从节点的信息,截图如下:

演示下故障转移

查看当前sentinel监控的节点信息

查看26379端口的Sentinel节点监控的主节点信息

查看目前redis的进程ps -ef | grep redis

中断redis的主节点

之前我们sentinel监控的主节点是6379这个端口,这时候我们kill这个端口的进程,或者使用shutdown命令:
redis-cli -h 127.0.0.1 -p 6379 shutdown
过了30秒之后查看26379端口的Sentinel节点监控的主节点信息,发现主节点信息变成了6380端口的redis(之前的从节点)

验证redis的主节点是否改变

验证6380端口的redis变成主节点,此时我们在6380 的redis上设置一个key值,在6381端口的redis上验证是否能获取到该key值

此时发现,6380变成了主节点,6381从节点没有变化,还是从节点。
下面我再次启动6379端口的redis

发现原先的主节点6379已经变成了从节点,而它的主节点变成了6380。此时我们再回过头看下26379的监控节点变化,还是6380端口。



至此sentinel介绍就讲完了,不足之处欢迎指正。##

最新文章

  1. Hibernate criteria 增加排序项
  2. 从github上获取资源速度慢的解决办法
  3. OleContainer控件介绍
  4. openldap复制
  5. Jenkins学习七:Jenkins的授权和访问控制
  6. [CF738A]Interview with Oleg(模拟)
  7. C#基础学习文章导航
  8. Codeforces Beta Round #7 C. Line (扩展欧几里德)
  9. UVA 11175 From D to E and Back
  10. Android面试题06
  11. mysql的基础操作
  12. FileZilla 错误425 Can't open data connection 读取目录列表失败
  13. UIWebView的探索
  14. maven pom.xml详细介绍,必须留一份
  15. hdu 5533(几何水)
  16. UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"
  17. ctrl c 中文字符到 vnc 里,中文字符已经被转码
  18. ionic使用常见问题(八)——PHP无法获取$http的post数据
  19. 继电器是如何成为CPU的(1)【转】
  20. ES6之 =>箭头函数

热门文章

  1. 一款不错的网站压力测试工具webbench
  2. Week7:SVM难点记录
  3. LoadRunner调用java函数测试oracle
  4. linux 常用进程使用命令
  5. 当面试官问你sql优化的时候。。。
  6. C++练习 | 掷骰子走到第n步的方法数(DFS)
  7. 今天在Qt子界面中的Button,转到槽转不过去,报错Qt The class containing 'Ui::MainWindow' could not be found in...
  8. Ajax中异步与同步的区别
  9. python写员工信息表作业笔记
  10. jdbc之存储过程的调用和调用方法