Redis系列之Sentinel集群配置

在前面的文章中《Redis系列之Redis集群(三)》,我们配置了5个节点:9001,9002,9003,9004,9005(9004,9005是在后面加进来的,9005已经是9001的Slave),这5个节点共同组成一个集群,但是除了9005外,其他节点都是Master,没有主从的关系,现在对9002,9003,9004节点进行改造,使其成为9001节点的Slave,同时增加Sentinel,并通过Sentinel进行时时监控
Master:127.0.0.1:9001
Slave:127.0.0.1:9002~127.0.0.1:9005
Sentinel:127.0.0.1:26379

1、将9002~9004节点设置为9001的Slave,先将所有节点都启动起来

longwentaodeMacBook-Pro:9001 longwentao$ ./redis-server redis.conf 
longwentaodeMacBook-Pro:9001 longwentao$ cd ../9002
longwentaodeMacBook-Pro:9002 longwentao$ ./redis-server redis.conf 
longwentaodeMacBook-Pro:9002 longwentao$ cd ../9003
longwentaodeMacBook-Pro:9003 longwentao$ ./redis-server redis.conf 
longwentaodeMacBook-Pro:9003 longwentao$ cd ../9004
longwentaodeMacBook-Pro:9004 longwentao$ ./redis-server redis.conf 
longwentaodeMacBook-Pro:9004 longwentao$ cd ../9005
longwentaodeMacBook-Pro:9005 longwentao$ ./redis-server redis.conf 

再用redis-cli分别将9002~9004节点指定为9001节点的Slave

longwentaodeMacBook-Pro:src longwentao$ ./redis-cli -c -p 9002 cluster replicate e41c2776755aa86322582dc37a0f6904b05c0dd3
OK
longwentaodeMacBook-Pro:src longwentao$ ./redis-cli -c -p 9003 cluster replicate e41c2776755aa86322582dc37a0f6904b05c0dd3 
OK
longwentaodeMacBook-Pro:src longwentao$ ./redis-cli -c -p 9004 cluster replicate e41c2776755aa86322582dc37a0f6904b05c0dd3 
OK

说明一下:如果节点是刚新增的,直接使用下面的命令将节点指定为Slave就可以了

./redis-trib.rb add-node --slave 127.0.0.1:9002 127.0.0.1:9001

e41c2776755aa86322582dc37a0f6904b05c0dd3是9001的ID,可以通过CLUSTER nodes查看节点信息,发现9002-9004都变成Slave了

127.0.0.1:9001> CLUSTER nodes
291d085ab60e2cc3692dc0d94e0af08a02f40f4a 127.0.0.1:9005 slave e41c2776755aa86322582dc37a0f6904b05c0dd3 0 1481464759012 5 connected
af2b5eb05d6b4fe7ee2057c7b3d480df0df43b69 127.0.0.1:9004 slave e41c2776755aa86322582dc37a0f6904b05c0dd3 0 1481464759517 6 connected
bf6baef5e3a1c359aeb220280e43518c5a77f742 127.0.0.1:9003 slave e41c2776755aa86322582dc37a0f6904b05c0dd3 0 1481464759012 5 connected
a4d080162858b3fcb5806228c291a2a5b80bb19c 127.0.0.1:9002 slave e41c2776755aa86322582dc37a0f6904b05c0dd3 0 1481464757496 7 connected
dddc296b4a3e26a536db40004f3d36a1561d35d9 :0 master,fail,noaddr - 1481464282937 1481464282937 2 disconnected 5461-10922
e41c2776755aa86322582dc37a0f6904b05c0dd3 127.0.0.1:9001 myself,master - 0 0 5 connected 0-5460 10923-16383

2、在新增一个Sentinel前,先介绍下两个文件,redis目录下的sentinel.conf文件,这是sentinel的配置文件,一些配置项都到这里面;还有一个是redis/src目录下的redid-sentinel,这是Sentinel的启动文件

longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ pwd
/Users/longwentao/java/redis-3.2.5
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ ls sentinel.conf 
sentinel.conf
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ ls src/redis-sentinel 
src/redis-sentinel

为了保险起见,新那一个sentinel文件夹,并将sentinel.conf,redid-sentinel拷贝到sentinel文件夹下

longwentaodeMacBook-Pro:redis-cluster longwentao$ mkdir sentinel
longwentaodeMacBook-Pro:redis-cluster longwentao$ cd ..
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ cp sentinel.conf redis-cluster/sentinel/
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ cp src/redis-sentinel redis-cluster/sentinel/
longwentaodeMacBook-Pro:redis-3.2.5 longwentao$ ls redis-cluster/sentinel/
redis-sentinel  sentinel.conf

3、在sentinel.conf文件中增加以下配置项

port 26379
sentinel monitor mymaster 127.0.0.1 9001 1
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

port:指定端口号为26379
sentinel monitor |master-name| |ip| |redis-port| |quorum|:指定Sentinel需要监控的主服务器
master-name:主服务器名名称,
ip:主服务器IP
redis-port:主服务器端口
quorum:将这个主服务器判断为失效至少需要 1个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行,因这里只配置了一个Sentinel,所以设置为1)
sentinel down-after-milliseconds |master-name| |milliseconds|:指定Sentinel 认为主服务器已经断线所需的毫秒数。如果服务器在给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线(subjectively down,简称 SDOWN )。不过只有一个 Sentinel 将服务器标记为主观下线并不一定会引起服务器的自动故障迁移: 只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线(objectively down, 简称 ODOWN ), 这时自动故障迁移才会执行
sentinel failover-timeout |master-name| |milliseconds|:当出现failover时下一个sentinel与上一个sentinel对同一个master监测的时间间隔(最后设置为客观下线)
sentinel parallel-syncs |master-name| |numslaves|:指定在执行故障转移时,最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小,完成故障转移所需的时间就越长

4、启动Sentinel

longwentaodeMacBook-Pro:sentinel longwentao$ ./redis-sentinel sentinel.conf 
864:X 11 Dec 22:03:56.465 * Increased maximum number of open files to 10032 (it was originally set to 256).
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.2.5 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 864
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

864:X 11 Dec 22:03:56.468 # Sentinel ID is e25b1f745a3b5dcb99d3447c2936dab225d57b90
864:X 11 Dec 22:03:56.468 # +monitor master mymaster 127.0.0.1 9001 quorum 1
864:X 11 Dec 22:03:56.469 * +slave slave 127.0.0.1:9005 127.0.0.1 9005 @ mymaster 127.0.0.1 9001
864:X 11 Dec 22:03:56.469 * +slave slave 127.0.0.1:9002 127.0.0.1 9002 @ mymaster 127.0.0.1 9001
864:X 11 Dec 22:03:56.470 * +slave slave 127.0.0.1:9003 127.0.0.1 9003 @ mymaster 127.0.0.1 9001
864:X 11 Dec 22:03:56.470 * +slave slave 127.0.0.1:9004 127.0.0.1 9004 @ mymaster 127.0.0.1 9001

5、测试验证,使用shutdown把master停掉,此时slave会自动充当新的new-master,当old-master恢复后,会充当new-master的slave,即:在这个过程中,sentinel.conf会被改写,改写为当前监控的主机master服务
master服务停止,Sentinel的监控结果如下
这里写图片描述

master启动,Sentinel的监控结果如下
这里写图片描述

Sentinel的详细介绍可参http://blog.csdn.net/zljjava/article/details/41454993

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值