Redis集群 -- sentinel
sentinel功能
redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换。
2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个slave-priority最小的从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。等旧Master重启后,会成为新Master的Slave。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。
注意:在使用sentinel监控主从节点的时候,从节点需要是使用动态方式配置的,如果直接修改配置文件,后期sentinel实现故障转移的时候会出问题。
Sentinel工作原理
1. 每秒向Master、Slave发送pin命令
2. 每10秒向Master、Slave发送info命令
3. 有多个Sentinel监听着Master和Slave
注意:
若Master实例故障,则最好等Sentinel选择出new Master且稳定后(选新主并完成切换的时间与配置有关,典型的值在一分钟内),再重启old Master,避免引发Sentinel的误判,导致整个系统无法选出new Master
主观下线和客观下线:
1、主观下线状态:当一个sentinel认为一个redis服务连接不上的时候,会给这个服务打个标记为下线状态。
2、客观下线状态:当多个sentinel认为一个redids连接不上的时候,则认为这个redis服务确实下线了。这里的多个sentinel的个数可以在配置文件中设置。
主节点:主观下线和客观下线
从节点:主观下线状态
sentinel配置(修改sentinel.conf)
sentinel monitor mymaster 192.168.33.130 6379 2
最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数。
启动sentinel
redis-sentinel sentinel.conf
sentinel日志明细说明
http://redisdoc.com/topic/sentinel.html
通过订阅指定的频道信息,当服务器出现故障得时候通知管理员
客户端可以将 Sentinel 看作是一个只提供了订阅功能的 Redis 服务器,你不可以使用 PUBLISH 命令向这个服务器发送信息,但你可以用 SUBSCRIBE 命令或者 PSUBSCRIBE 命令, 通过订阅给定的频道来获取相应的事件提醒。
一个频道能够接收和这个频道的名字相同的事件。 比如说, 名为 +sdown 的频道就可以接收所有实例进入主观下线(SDOWN)状态的事件。
sentinel的一些命令
INFO:sentinel的基本状态信息
SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态
SENTINEL slaves <master name> :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态
SENTINEL get-master-addr-by-name <master name> :返回给定名字的主服务器的 IP 地址和端口号
SENTINEL reset <pattern> :重置所有名字和给定模式 pattern 相匹配的主服务器。重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel
SENTINEL failover <master name> :当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移,但是它会给其他sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新
java操作sentinel
import java.util.HashSet; //需要在pom.xml文件中引入jedis依赖 import redis.clients.jedis.HostAndPort; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisSentinelPool; public class SentinelTest { public static void main(String[] args) { // 使用HashSet添加多个sentinel HashSet<String> sentinels = new HashSet<String>(); // 添加sentinel主机和端口 sentinels.add("192.168.33.131:26379"); // 创建config JedisPoolConfig poolConfig = new JedisPoolConfig(); // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。 poolConfig.setMaxIdle(10); // 控制一个pool最多有多少个jedis实例。 poolConfig.setMaxTotal(100); // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException; poolConfig.setMaxWaitMillis(2000); // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的; poolConfig.setTestOnBorrow(true); // 通过Jedis连接池创建一个Sentinel连接池 JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels,poolConfig); // 获取master的主机和端口 HostAndPort currentHostMaster = pool.getCurrentHostMaster(); System.out.println(currentHostMaster.getHost() + "--"+ currentHostMaster.getPort()); // 从Sentinel池中获取资源 Jedis resource = pool.getResource(); // 打印资源中key为name的值 System.out.println(resource.get("name")); // 关闭资源 resource.close(); } }
参考
http://blog.csdn.net/u011204847/article/details/51307044
相关推荐
redis-sentinel 就像他的名字一样,他是一个哨兵,监控 master 状态,如果超过规定时间没有响应,则自动进行主从切换,期间会有一段时间(决定于具体的配置参数)redis集群无法提供服务 。原理类似 mysql 的 MHA。...
"Redis集群技术详解" Redis集群是Redis的一种高可用性解决方案,通过主从复制、哨兵和集群三大技术模块来实现高可用性和可扩展性。本文将对Redis集群进行详细的介绍,包括Redis安装、主从复制、哨兵和集群的配置和...
Redis Sentinel(哨兵)是Redis集群中的一个重要组件,它提供了高可用性解决方案,确保当主节点发生故障时,能够自动将从节点提升为主节点,从而维持服务的连续性。哨兵系统通过监控、通知和自动故障转移来实现这一...
通过 docker-compose 使用 redis sentinel 构建 Redis 集群redis-cluster-带 sentinel使用 Docker Compose 进行 Redis 集群集群中有以下服务,master主 Redis 服务器从属从属 Redis 服务器sentinel哨兵服务器哨兵...
4. 哨兵系统(Sentinel):哨兵是Redis提供的高可用性解决方案,监控、故障检测和自动故障转移。当主节点故障时,哨兵会自动将从节点提升为主节点,并通知其他客户端新的连接地址。 5. Cluster集群:Redis Cluster...
Redis Sentinel系统是Redis集群中的监控、通知和故障转移组件,它能有效地管理多个Redis实例,并确保服务的连续性和稳定性。以下是对安装过程的详细讲解: 首先,我们需要下载Redis的Windows版本。通常,可以从...
4. 初始化 Sentinel 或 Cluster:根据需要配置高可用性,创建哨兵集群或数据分片集群。 5. 安装和配置额外模块:例如 RediSearch 和 RedisGraph,它们可能有自己的配置文件和启动脚本。 6. 监控与管理:使用 ...
综上所述,"redis-sentinel-bin.7z"压缩包提供了搭建和管理高可用Redis集群所需的基本工具和配置文件。通过正确部署Sentinel,可以确保Redis服务的稳定性和容错性;同时,了解和配置RDB与AOF持久化策略,能有效保障...
因为Redis实例在各个大公司的应用,每个公司都需要一个Redis集群的管理工具,被迫都自己写管理工具来管理Redis集群,antirez考虑到社区的急迫需要(详情),花了几个星期写出了Redis-sentinel。 Redis-sentinel的三大...
当使用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-Sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现...
7. **redis-sentinel.exe**: Redis Sentinel的可执行文件,用于启动Sentinel服务,监控和管理Redis集群的高可用性。 8. **redis-check-aof.exe**: 类似于redis-check-rdb,但专门用于检查AOF(Append Only File)...
4. **run-cluster.bat**: 这个文件用于启动Redis集群。Redis Cluster是Redis的分布式解决方案,允许数据分散在多个节点上,实现数据的容错和扩展性。 5. **start-redis.bat**: 这是启动单个Redis服务器的批处理文件...
《Redis集群数据迁移实战指南》 在IT领域,数据迁移是一项关键任务,特别是在使用Redis这样的高性能内存数据库时。本文将详细介绍如何进行Redis集群的数据迁移,包括全量和增量数据迁移,以及离线迁移的方法,主要...
8. Sentinel监控与故障转移:Redis Sentinel系统用于监控Redis实例,当检测到主服务器失效时,它能自动触发故障转移,将从服务器提升为主服务器。 9. Cluster集群:Redis 3.0及以上版本引入了Cluster特性,支持数据...
注意,实际生产环境中可能还需要考虑更多的运维因素,比如使用 sentinel 系统进行高可用性监控,或者采用自动化工具进行集群管理。同时,保持对 Redis 的版本更新和安全补丁的应用也是非常重要的。
Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个...
1、该文档主要介绍docker监控统计portainer自动化工具使用,针对docker服务、...2、文档包含docker中redis主从配置,sentinel哨兵对redis监控及故障切换等具体操作 3、springboot项目链接sentinel集群具体操作demo示例
Redis Sentinel提供监控、故障检测和自动故障转移,是高可用性解决方案的关键部分。而Redis Cluster则实现了数据分片,支持大规模数据存储。尽管Windows环境下部署可能相对复杂,但依然可行。 9. **性能优化** ...
虽然Redis 3.0.501不支持官方的集群模式,但可以通过社区开发的工具如Twemproxy或Redis Sentinel实现分布式部署。在更高版本的Redis中,原生集群功能已经加入,能提供更强大的扩展性和高可用性。 通过了解并熟练...
- 提供主从复制,实现数据冗余,同时支持 Sentinel 系统进行高可用性管理。 - 通过发布/订阅模式实现消息传递,支持集群搭建。 2. **Redis 2.21 版本** - Redis 2.21 是一个较早的版本,发布于2013年,包含了...