当前位置:首页 » Nosql技术教程

Redis Sentinel

2016-08-10 16:03 本站整理 浏览(2)

官方说明文档:http://www.redis.io/topics/sentinel

Sentinel: 提供高可用为Redis。

Sentinel提供的功能监控:监控Master和Slaves的工作状况

通知:Redis实例有问题,通知系统管理员,程序

自动故障转移:如果master出现故障,从slaves中推选出一个master,其他的slaves重新配置链接新的master,并且通知应用程序使用新的链接。

配置信息提供者:给客户端提供可用的地址。

启动Sentinel

将src目录下产生的redis-sentinel文件copy到$REDIS_HOME\bin目录下

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

redis-server /path/to/sentinel.conf --sentinel
运行Sentinel必须使用配置文件,默认监听端口26379。

基本原则:1、最少需要三个实例;

2、三个实例分布在不同的主机或虚拟机中。

3、Sentinel分布式系统在故障期间不能保证写操作被保留。

4、客户端需要Sentinel支持。

配置文件

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1

sentinel monitor resque 192.168.1.3 6380 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

配置不需要指定slaves

sentinel monitor <master-group-name> <ip> <port> <quorum>
quorum 至少需要多少个sentinel同意master下线

down-after-milliseconds: 过了多少毫秒链接不上认为故障

parallel-syncs:故障切换后有多少从节点同步主节点数据,数量越少故障切换处理完成的时间越长,

Sentinel部署

[code]       +----+
       | M1 |
       | S1 |
       +----+
          |
+----+    |    +----+
| R2 |----+----| R3 |
| S2 |         | S3 |
+----+         +----+

Configuration: quorum = 2

编译安装3台redis,node1、node2、node3

node1为master

node2、node3是Slaves

配置文件中

slaveof node1 6379
分别启动node1、node2、node3的redis服务

service redisd start
在3个节点的~目录下,创建sentinel.conf

vim sentinel.conf

port 26379
sentinel monitor mymaster node1 6379 2
执行如下命令:

cp redis-2.8.18/src/redis-sentinel /usr/redis/bin
redis-sentinel sentinel.conf
分别在3个节点使用redis-cli

测试redis主从复制效果

keys *
将node1服务停掉

service redisd stop
隔一会会启动failover,这个时间可以配置以下选项

down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数

master切换到node2节点。

当node1节点的redis服务恢复,成为slave节点。

在node2、node3上测试

redis-cli -h node1 -p 26379 info sentinel
redis-cli -p 26379 SENTINEL master mymaster
redis-cli -p 26379 SENTINEL slaves mymaster
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster