redis-sentinel搭建redis主从故障转移

Redis-sentinel是Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具。在一般的分布式中心节点数据库 中,Redis-sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性。

Redis-sentinel是Redis的作者antirez在今年6月份完成的,因为Redis实例在各个大公司的应用,每个公司都需要一个 Redis集群的管理工具,被迫都自己写管理工具来管理Redis集群,antirez考虑到社区的急迫需要,花了几个星期写出了Redis- sentinel。

Redis-sentinel的三大功能:监测、通知、自动故障恢复。首先Redis-sentinel要建立一个监控的master列表,然后针对master列表的每个master获取监控其的sentinels和slaves供以后故障恢复使用。由于项目的需求,今天抽时间简单测试下。

配置实例:

192.168.1.122 master

192.168.1.118 slave

192.168.1.119 slave

redis安装目录都在/usr/local/redis目录下

master /usr/local/redis/redis.conf 配置

daemonize yes

两台slave /usr/local/redis/redis.conf 配置

daemonize yes

slaveof 192.168.1.122 6379

master /usr/local/redis/sentinel.conf和两台的slave /usr/local/redis/sentinel.conf配置:

sentinel monitor mymaster 192.168.1.122 6379 2

sentinel down-after-milliseconds mymaster 60000

sentinel failover-timeout mymaster 180000

sentinel parallel-syncs mymaster 1

master启动redis服务

redis-server /usr/local/redis/redis.conf

slave启动redis服务

redis-server /usr/local/redis/redis.conf

master和slave启动sentinel实例

redis-server /usr/local/redis/sentinel.conf --sentinel &

关闭master的redis服务测试故障转移,若redis配置了分片功能,则该方式会出现一定的BUG。

在默认情况下, Sentinel 使用 TCP 端口 26379 (普通 Redis 服务器使用的是 6379 )。

Sentinel 接受 Redis 协议格式的命令请求, 所以你可以使用 redis-cli 或者任何其他 Redis 客户端来与 Sentinel 进行通讯。

有两种方式可以和 Sentinel 进行通讯:

· 第一种方法是通过直接发送命令来查询被监视 Redis 服务器的当前状态, 以及 Sentinel 所知道的关于其他 Sentinel 的信息, 诸如此类。

· 另一种方法是使用发布与订阅功能, 通过接收 Sentinel 发送的通知: 当执行故障转移操作, 或者某个被监视的服务器被判断为主观下线或者客观下线时, Sentinel 就会发送相应的信息。

Sentinel 命令

以下列出的是 Sentinel 接受的命令:

· PING:返回 PONG 。

· SENTINEL masters:列出所有被监视的主服务器,以及这些主服务器的当前状态。

· SENTINEL slaves <master name>:列出给定主服务器的所有从服务器,以及这些从服务器的当前状态。

· SENTINEL get-master-addr-by-name <master name>: 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个命令返回新的主服务器的 IP 地址和端口号。

· SENTINEL reset <pattern>: 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清楚主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。

· SENTINEL failover <master name>: 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移 (不过发起故障转移的 Sentinel 会向其他 Sentinel 发送一个新的配置,其他 Sentinel 会根据这个配置进行相应的更新)。

发布与订阅信息

客户端可以将 Sentinel 看作是一个只提供了订阅功能的 Redis 服务器: 你不可以使用 PUBLISH 命令向这个服务器发送信息, 但你可以用 SUBSCRIBE 命令或者 PSUBSCRIBE 命令, 通过订阅给定的频道来获取相应的事件提醒。

一个频道能够接收和这个频道的名字相同的事件。 比如说, 名为 +sdown 的频道就可以接收所有实例进入主观下线(SDOWN)状态的事件。

通过执行 PSUBSCRIBE * 命令可以接收所有事件信息。

以下列出的是客户端可以通过订阅来获得的频道和信息的格式: 第一个英文单词是频道/事件的名字, 其余的是数据的格式。

注意, 当格式中包含 instance details 字样时, 表示频道所返回的信息中包含了以下用于识别目标实例的内容:

<instance-type> <name> <ip> <port> @ <master-name> <master-ip> <master-port>

@ 字符之后的内容用于指定主服务器, 这些内容是可选的, 它们仅在 @ 字符之前的内容指定的实例不是主服务器时使用。

· +reset-master <instance details>:主服务器已被重置。

· +slave <instance details>:一个新的从服务器已经被 Sentinel 识别并关联。

· +failover-state-reconf-slaves <instance details>:故障转移状态切换到了 reconf-slaves 状态。

· +failover-detected <instance details>:另一个 Sentinel 开始了一次故障转移操作,或者一个从服务器转换成了主服务器。

· +slave-reconf-sent <instance details>:领头(leader)的 Sentinel 向实例发送了 SLAVEOF 命令,为实例设置新的主服务器。

· +slave-reconf-inprog <instance details>:实例正在将自己设置为指定主服务器的从服务器,但相应的同步过程仍未完成。

· +slave-reconf-done <instance details>:从服务器已经成功完成对新主服务器的同步。

· -dup-sentinel <instance details>:对给定主服务器进行监视的一个或多个 Sentinel 已经因为重复出现而被移除 —— 当 Sentinel 实例重启的时候,就会出现这种情况。

· +sentinel <instance details>:一个监视给定主服务器的新 Sentinel 已经被识别并添加。

· +sdown <instance details>:给定的实例现在处于主观下线状态。

· -sdown <instance details>:给定的实例已经不再处于主观下线状态。

· +odown <instance details>:给定的实例现在处于客观下线状态。

· -odown <instance details>:给定的实例已经不再处于客观下线状态。

· +new-epoch <instance details>:当前的纪元(epoch)已经被更新。

· +try-failover <instance details>:一个新的故障迁移操作正在执行中,等待被大多数 Sentinel 选中(waiting to be elected by the majority)。

· +elected-leader <instance details>:赢得指定纪元的选举,可以进行故障迁移操作了。

· +failover-state-select-slave <instance details>:故障转移操作现在处于 select-slave 状态 —— Sentinel 正在寻找可以升级为主服务器的从服务器。

· no-good-slave <instance details>:Sentinel 操作未能找到适合进行升级的从服务器。Sentinel 会在一段时间之后再次尝试寻找合适的从服务器来进行升级,又或者直接放弃执行故障转移操作。

· selected-slave <instance details>:Sentinel 顺利找到适合进行升级的从服务器。

· failover-state-send-slaveof-noone <instance details>:Sentinel 正在将指定的从服务器升级为主服务器,等待升级功能完成。

· failover-end-for-timeout <instance details>:故障转移因为超时而中止,不过最终所有从服务器都会开始复制新的主服务器(slaves will eventually be configured to replicate with the new master anyway)。

· failover-end <instance details>:故障转移操作顺利完成。所有从服务器都开始复制新的主服务器了。

· +switch-master <master name> <oldip> <oldport> <newip> <newport>:配置变更,主服务器的 IP 和地址已经改变。 这是绝大多数外部用户都关心的信息。

· +tilt:进入 tilt 模式。

-tilt:退出 tilt 模式。

时间: 2024-10-07 12:11:17

redis-sentinel搭建redis主从故障转移的相关文章

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

本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在Redis2.4中,Redis2.8中Sentinel更加稳定),Redis集群是以分片(Sharding)加主从的方式搭建,满足可扩展性的要求: Redis Sentinel介绍 Redis Sentinel是Redis官方提供的集群管理工具,主要有三大功能: 监控,能持续监控Redis的主从实例是否正常

(转)基于Redis Sentinel的Redis集群(主从&amp;Sharding)高可用方案

转载自:http://warm-breeze.iteye.com/blog/2020413 本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在Redis2.4中,Redis2.8中Sentinel更加稳定),Redis集群是以分片(Sharding)加主从的方式搭建,满足可扩展性的要求: Redis Sentinel介绍 Redis Sentinel是Re

Redis集群以及自动故障转移测试

在Redis中,与Sentinel(哨兵)实现的高可用相比,集群(cluster)更多的是强调数据的分片或者是节点的伸缩性,如果在集群的主节点上加入对应的从节点,集群还可以自动故障转移,因此相比Sentinel(哨兵)还是有不少优势的.以下简单测试Redis的集群(单机多实例的模式),来体验一下集群的自动故障转移功能,同时结合Python,来观察自动故障转移过程中应用程序端的表现. redis集群实例安装 启动6个redis集群实例,集群模式,除了正常的配置项目之外,需要在每个主节点中增加集群配

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

基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案 http://www.tuicool.com/articles/naeEJbv 基于Redis Sentinel的Redis集群(主从&Sharding)高可用方案 时间 2014-02-21 15:15:17  IT社区推荐资讯 原文  http://itindex.net/detail/48192-redis-sentinel-redis Redis Sentinel是一个分布式系统,可以部署多个Se

predis连接redis sentinel和redis cluster

开发之前都是用phpredis连接redis服务的,后来随着sentinel和redis cluster的成熟,redis主从都结合sentinel做了高可用,部分数据和并发大的业务使用了redis集群. 相对于phpredis,predis原生支持redis sentinel和redis cluster的连接,当主节点挂掉从节点提升为主节点时客户端会自动发现新的主节点,从而实现redis的高可用. 由于部分phper不知道通过predis连接sentinel和cluster,特意看了一个pre

Windows 2012 系统搭建高可用故障转移集群

Windows 2012 系统搭建高可用故障转移集群 一.故障转移集群介绍 2 1.1 系统介绍 2 1.2 工作原理 2 二.实验目的 2 2.1 验证故障转移功能 2 2.2 验证高可用集群的可用性,以及支持的服务类型 2 三.实验原理 3 3.1 实验拓扑 3 3.2 实验环境设备 3 四.配置步骤 4 4.1 配置域服务器 4 4.2  iSCSI 虚拟存储配置 18 4.3 配置故障转移集群服务 45 4.4  验证集群 63 五.实验结果验证 68 5.1  验证故障转移 68 5.

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

redis主从配置很简单,只需要在slave的配置里加slaveof 192.168.0.100 6379(master的ip和端口) 如果master有密码再设置 masterauth password.主从设置以后要提高可靠性就要用到Sentinel. Sentinel主要作用有 监控.Sentinel不断检查Master和Slave是否工作正常. 通知.Sentinel可以通过API通知系统管理员,另一台计算机程序,受监控的Redis实例有问题. 自动故障切换.如果主机不按预期工作,Sen

redis sentinel搭建以及在jedis中使用

一.redis主从搭建 1.搭建redis master 1>redis安装 mkdir -p /usr/local/webserver/redis //安装目录 cd /usr/local/webserver/redis wget http://download.redis.io/redis-stable.tar.gz //最新稳定版 tar xzf redis-stable.tar.gz cd redis-stable make //报错的话 install gcc make install

redis sentinel及redis主从读写分离时sentinel配置

一 主从复制高可用 #主从复制存在的问题: #1 主从复制,主节点发生故障,需要做故障转移,可以手动转移:让其中一个slave变成master #2 主从复制,只能主写数据,所以写能力和存储能力有限 二 架构说明 可以做故障判断,故障转移,通知客户端(其实是一个进程),客户端直接连接sentinel的地址 1 多个sentinel发现并确认master有问题 2 选举触一个sentinel作为领导 3 选取一个slave作为新的master 4 通知其余slave成为新的master的slave