利用Sentinel(哨兵)实现Redis集群的故障自主切换

首先部署redis主从集群,主要安装过程:

cd redis
make
make install

主要看配置文件:

master:

bind 0.0.0.0

port 6801

logfile "./redis.log"

requirepass 12345678

masterauth 12345678   #主从密码,主变为从时,以从的身份去同步主节点

slave:

bind 0.0.0.0

port 6802

logfile "./redis.log"

requirepass 12345678

masterauth 12345678

slaveof 172.17.0.2 6801

sentinel:

bind 0.0.0.0

port 26379

dir ./ logfile "./sentinel.log"

...
sentinel monitor master1 172.17.0.2 6801 1
sentinel down-after-milliseconds master1 10000
sentinel failover-timeout master1 900000
sentinel config-epoch master1 4317
sentinel leader-epoch master1 4317
sentinel auth-pass master1 12345678

启动redis+sentinel集群,查看节点信息如下:

master:

slave:

可以看出主从已经生效,现在把master(172.17.0.2 6801)关掉,查看sentinel日志:

1:X 25 May 18:59:39.096 # +sdown master master1 172.17.0.2 6801
1:X 25 May 18:59:39.096 # +odown master master1 172.17.0.2 6801 #quorum 1/1
1:X 25 May 18:59:39.096 # +new-epoch 4320
1:X 25 May 18:59:39.096 # +try-failover master master1 172.17.0.2 6801
1:X 25 May 18:59:39.145 # +vote-for-leader 5a30725736229497d4f5f0ef3502462dd683f02e 4320
1:X 25 May 18:59:39.145 # +elected-leader master master1 172.17.0.2 6801
1:X 25 May 18:59:39.145 # +failover-state-select-slave master master1 172.17.0.2 6801
1:X 25 May 18:59:39.217 # +selected-slave slave 172.17.0.3:6802 172.17.0.3 6802 @ master1 172.17.0.2 6801
1:X 25 May 18:59:39.217 * +failover-state-send-slaveof-noone slave 172.17.0.3:6802 172.17.0.3 6802 @ master1 172.17.0.2 6801
1:X 25 May 18:59:39.307 * +failover-state-wait-promotion slave 172.17.0.3:6802 172.17.0.3 6802 @ master1 172.17.0.2 6801
1:X 25 May 18:59:39.312 # +promoted-slave slave 172.17.0.3:6802 172.17.0.3 6802 @ master1 172.17.0.2 6801
1:X 25 May 18:59:39.312 # +failover-state-reconf-slaves master master1 172.17.0.2 6801
1:X 25 May 18:59:39.359 # +failover-end master master1 172.17.0.2 6801
1:X 25 May 18:59:39.359 # +switch-master master1 172.17.0.2 6801 172.17.0.3 6802
1:X 25 May 18:59:39.359 * +slave slave 172.17.0.2:6801 172.17.0.2 6801 @ master1 172.17.0.3 6802
1:X 25 May 18:59:49.419 # +sdown slave 172.17.0.2:6801 172.17.0.2 6801 @ master1 172.17.0.3 6802

可以看到,从节点172.17.0.3 6802 已经成为master:

现在启动172.17.0.2:6801,sentinel日志如下:

1:X 25 May 19:03:14.929 # -sdown slave 172.17.0.2:6801 172.17.0.2 6801 @ master1 172.17.0.3 6802
1:X 25 May 19:03:24.903 * +convert-to-slave slave 172.17.0.2:6801 172.17.0.2 6801 @ master1 172.17.0.3 6802

连接到redis后查看集群信息如下:

可以看到,之前的master(172.17.0.2 6801) 已经成为了slave。

利用Sentinel实现Redis主从切换的更多相关文章

  1. Redis主从切换

    案例 易车网:http://www.greatops.net/?id=232 redis主从切换:http://www.cnblogs.com/itdragon/p/7932178.htmlhttps ...

  2. 利用Redis Sentinel实现redis主从自动切换

    redis主从配置很简单,只需要在slave的配置里加slaveof 192.168.0.100 6379(master的ip和端口) 如果master有密码再设置 masterauth passwo ...

  3. redis主从切换的集群管理

    集群配置最少需要三台机器,那么我就三台虚拟机,三台虚拟机分别安装同样的redis的环境ip分别:192.168.9.17 (redis sentinel 集群监控)192.168.9.18 (redi ...

  4. 数据库MySQL、redis主从切换shell脚本

    具体源码可找我领取

  5. Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...

  6. [转]Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3)哨兵模式来进行主从替换以及故障恢复. 一.sentinel哨兵模式介绍Sentinel ...

  7. redis的sentinel主从切换(failover)与Jedis线程池自动重连

    本文介绍如何通过sentinel监控redis主从集群,并通过jedis自动切换ip和端口. 1.配置redis主从实例 10.93.21.21:6379 10.93.21.21:6389 10.93 ...

  8. redis - 主从复制与主从切换

    redis2.8之前本身是不支持分布式管理的,一般建议使用redis3.0及以后版本 redis主从切换的方法 keepalive  或者 使用sentinel线程管理 说明如何使用sentinel实 ...

  9. 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

随机推荐

  1. 06慕课网《进击Node.js基础(一)》作用域和上下文

    作用域 function(){}大括号中的内容是一个作用域; function 和 var 的声明会被提到作用域的最上面 function f(){ a = 2; var b = g(); //此处可 ...

  2. 进阶系列(2)—— C#集合

    一.集合介绍 集合是.NET FCL(Framework Class Library)的重要组成部分,我们平常撸C#代码时免不了和集合打交道,FCL提供了丰富易用的集合类型,给我们撸码提供了极大的便利 ...

  3. 校园跳蚤市场-Sprint计划(第二阶段)

  4. 解决getOutputStream() has alerady been called for this response

    在用tomcat启动一个web项目(SpringBoot)的时候报错: getOutputStream() has alerady been called for this response 但是如果 ...

  5. rpm安装和二进制安装

    rpm包安装 Tomcat RPM安装(先安装JDK + 再安装Tomcat) 1:升级系统自带的JDK(也可以使用oracle的JDK) yum install -y java-1.8.0-open ...

  6. 0422“数学口袋精灵”BUG发现

    团队成员的博客园地址: 曾治业:http://www.cnblogs.com/zzy999/ 蔡彩虹:http://www.cnblogs.com/caicaihong/ 蓝叶:http://www. ...

  7. 蜗牛慢慢爬 LeetCode 5.Longest Palindromic Substring [Difficulty: Medium]

    题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum le ...

  8. 【最简单】不用ps也可以批量转换图片格式

    不废话直接开始~ 1.新建文件夹,把需要转换的图片放进去,如图: 2.文件夹里建一txt文本,重点来了!txt文本的内容,如果是jpg转为png,则输入“ren *.jpg *.png”,同理png转 ...

  9. JVM内存模型一

    JVM定义了若干个程序执行期间使用的数据区域.这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁.而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁. 程序计数器 程序计 ...

  10. SGU438_The Glorious Karlutka River =)

    好题,有一些人在河的一边,想通过河里的某些点跳到对岸去.每个点最多只能承受一定数量的人,每人跳跃一次需要消耗一个时间.求所有人都过河的最短时间. 看网上说是用了什么动态流的神奇东东.其实就是最大流吧, ...