`
greemranqq
  • 浏览: 977535 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

redis sentinel

阅读更多

一.序言

     redis 前面介绍了下master-salve ,但是其实它还无法完成故障自动切换的的效果。redis 2.8+ 已经提供了一种相对稳定的机制,防止单点:sentinel  ,地址:http://redis.io/topics/sentinel

 

 

二.基本功能点

    1.Monitor :它能监控redis 实例是否运行正常

    2.Notification : 发现监控的redis 实例错误,它能能通过API,通知另一个机器

    3.Automatic failover:如果master没按预期的运行,那么它会自动将salve提升为master,并提供连接。并且其他的salve 也会连接到新的master 上。

    4.Configuration provider :Sentinel 作为连接客户端的中心,客户端连接上sentinel 并提供一个可用的服务,如果服务挂掉,会自动转移到新的可用服务上。

 

三.sentinel 支持分布式集群

     它本身就支持集群部署,通常我们要2n+1个节点,和ZK原理类似,如果有一半节点发现redis master不可用,那么就会认为不可用,则转移节点。这样能减少误判。

     目前稳定版是2.8 和 3.0 版本是最稳定的。

 

四.简单配置

     1. 有个redis-sentinel 启动器,和 redis-server 类似的,启动方式 redis-sentinel   sentinel.conf 

         

 redis-sentinel   sentinel.conf 

 

 

     2. sentinel.conf 配置,这里我也用了3个节点配置

        

# 端口,每个sentinel 实例不同,端口不同
port 26379

# 监控的master节点信息, 2:表示需要2个监控着同意 判定失败
# 2 只是一个配置值,必须是大多数 就行了,少了 会自动更改的
sentinel monitor mymaster 127.0.0.1 6379 2
# 6秒ping 不通,认为失败
sentinel down-after-milliseconds mymaster 60000
# 故障超时时间,英语不好,就不解释了
sentinel failover-timeout mymaster 180000
# 我的理解是,故障恢复后,新的master 和 savle 之间同步线程数,
# 因为要进行新一次的同步,slave 很多,这个值越小越慢
sentinel parallel-syncs mymaster 1

# salve 转移的配置,resque 没找到说明- -
sentinel monitor resque 127.0.0.1 10001 4
sentinel down-after-milliseconds resque 10000
sentinel failover-timeout resque 180000
sentinel parallel-syncs resque 5

 

 

   3.启动redis 实例 和 sentinel 监控

   

# 路径就不贴了
redis-server  redis-6379.conf
redis-server  redis-10001.conf

redis-sentinel redis-sentinel-23769.conf
redis-sentinel redis-sentinel-23768.conf
redis-sentinel redis-sentinel-23767.conf

 

  4. 能启动就OK了

 

五.jredis 测试

  

@org.junit.Test
    public   void sentinePool(){
        // 连接监控就行了
        Set sentinels = new HashSet();
        sentinels.add(new HostAndPort("localhost", 26379).toString());
        sentinels.add(new HostAndPort("localhost", 26378).toString());
        sentinels.add(new HostAndPort("localhost", 26377).toString());
        JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
        Jedis jredis = sentinelPool.getResource();
        System.out.println(jredis.keys("*"));

    }

 

    测试反馈:

    1.key数据全部获取(很少数据)

    2.手动停掉master  6379 ,几秒后 连接OK,转移途中会有异常

    3.重启6379 成为了salve,数据同步OK。

    4.反复操作,能保证可用性,但是挂掉的时候有几秒连不上。

    5.同时停掉redis,再重启,恢复到重启前,MS结果不变,因为conf 有持久化的ID

 

六.其他:

     当你通过配置这个时候,sentinel.conf 的文件会改写,持久化一些ID进去,这是该改写后的文件: 

    

# 其中一个文件的
port 26377
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 60000
sentinel config-epoch mymaster 3
sentinel leader-epoch mymaster 3

sentinel known-slave mymaster 127.0.0.1 10001
sentinel known-sentinel mymaster 127.0.0.1 26379 627853b7495425dc3a558ba981f5cbcd619b6417
sentinel known-sentinel mymaster 127.0.0.1 26378 0a825a64892c136b033f1a961f3f4feb92ef2402
sentinel monitor resque 127.0.0.1 10001 4
# Generated by CONFIG REWRITE
dir "/Users/qqr"
sentinel down-after-milliseconds resque 10000
sentinel parallel-syncs resque 5
sentinel config-epoch resque 0
sentinel leader-epoch resque 0
sentinel known-slave resque 127.0.0.1 6379
sentinel known-sentinel resque 127.0.0.1 26379 627853b7495425dc3a558ba981f5cbcd619b6417
sentinel known-sentinel resque 127.0.0.1 26378 0a825a64892c136b033f1a961f3f4feb92ef2402
sentinel current-epoch 3

 

 

小结:

      1.这仅仅是个简单试用,很多配置还是看原文代码

      2.原理是通过发布订阅完成监控,挺好的~。~,很多东西还没深入,有错请指出

     

分享到:
评论

相关推荐

    redissentinel基于phpredis扩展的redissentinel客户端

    标题中的“redissentinel基于phpredis扩展的redissentinel客户端”指的是一个使用PHP语言开发的Redis Sentinel客户端,它依赖于phpredis扩展来实现与Redis Sentinel服务的交互。Redis Sentinel是Redis集群的一个重要...

    windows redis sentinel 集群配置

    Windos系统的Redis sentinel集群。 启动命令:D:\redis-2.8.18.rar\redis-2.8.18>redis-server.exe sentinel.conf --sentinel

    redis sentinel api脚本

    Redis Sentinel 主从部署 使用Python脚本获取Redis主从节点信息

    基于phpredis封装的redis-sentinel客户端redis-sentinel.zip

    示例:$sentinel = new \Jenner\RedisSentinel\Sentinel(); $sentinel->connect('127.0.0.1', 6379); $address = $sentinel->getMasterAddrByName('mymaster'); $redis = new Redis(); $redis->connect($...

    redis 哨兵(sentinel)与springboot集成实战-redis-sentinel.zip

    Redis Sentinel是Redis的一个高可用性解决方案,它提供了监控、故障检测和自动故障转移等功能,确保在主Redis服务器出现故障时,系统能够无缝地切换到备份节点,从而保持服务的连续性和稳定性。SpringBoot是一个轻量...

    redis sentinel与redis cluster 集群配置

    Redis Sentinel和Redis Cluster是两种常见的Redis集群解决方案,用于提高Redis数据库的可用性和可扩展性。在本篇文章中,我们将深入探讨这两个系统的工作原理、配置步骤以及它们各自的特点。 首先,让我们了解一下...

    redis Sentinel模式详解.docx

    Redis Sentinel 模式详解 从标题、描述、标签和部分内容中,我们可以提取出以下几个重要的知识点: 1. Redis 在 Web 开发中的应用:Redis 是一种基于内存的 key-value 数据库,经常用于存储用户登录态、加速热数据...

    Redis Sentinel

    Redis Sentinel是Redis数据库系统中的高可用性解决方案,用于监控、通知和自动故障转移。在Windows环境下搭建Redis Sentinel集群,你需要了解以下几个关键知识点: 1. **Redis Sentinel系统**:Redis Sentinel是一...

    一个高性能、功能齐全的 redis 代理,支持 redis sentinel 和 redis cluster.zip

    Predixy中文版Predixy是 redis sentinel 和 redis cluster 的高性能、功能齐全的代理特征高性能且重量轻。多线程支持。适用于 Linux、OSX、BSD、Windows(Cygwin)。支持Redis Sentinel,单/多Redis组。支持Redis...

    Redis Sentinel(哨兵)部署.pdf

    Redis Sentinel(哨兵)部署 Redis Sentinel是Redis的高可用性解决方案,当主节点发生故障时,可以自动进行故障转移。部署Redis Sentinel主要涉及以下几个关键点: 1. Redis Sentinel的作用与优点 Redis Sentinel...

    spring + redis + sentinel 配置

    Sentinel是Redis的一个高可用性解决方案,它可以监控Redis实例,并在主节点出现问题时自动进行故障转移,确保服务的连续性。 在这个"spring + redis + sentinel"配置中,我们将探讨如何整合这三个组件以创建一个...

    另一种使用内置 redis sentinel 的 ruby​​ redis 自动主,从故障转移解决方案(已弃用).zip

    另一种使用内置 redis sentinel 的 ruby​​ redis 自动主/从故障转移解决方案(已弃用)Redis::Sentinel(已弃用)redis gem从 3.2 版本开始支持 sentinel,如果你使用的是 Redis 2.8.x 或更高版本,则不需要 redis...

    Zabbix 模板 + 脚本用于监控 Redis 服务器和 Redis Sentinel 实例.zip

    向 Zabbix添加redis_server.discovery&redis_server.stats和/或redis_sentinel.discovery&redis_sentinel.stats用户参数UserParameter=redis_server.discovery[*],/usr/local/bin/zabbix-redis.py -i '$1' -t 服务器...

    通过 docker-compose 使用 redis sentinel 构建 Redis 集群.zip

    通过 docker-compose 使用 redis sentinel 构建 Redis 集群redis-cluster-带 sentinel使用 Docker Compose 进行 Redis 集群集群中有以下服务,master主 Redis 服务器从属从属 Redis 服务器sentinel哨兵服务器哨兵...

    Redis 和 Redis Sentinel (2.8) 的 .NET 客户端 包括同步和异步客户端 .zip

    Redis 和 Redis Sentinel (2.8) 的 .NET 客户端。包括同步和异步客户端。csredisCSRedis 是 Redis 和 Redis Sentinel (2.8.12) 的 .NET 客户端。包括同步和异步实现。安装 CSRedis 的最简单方法是通过包管理器控制台...

    Redis Sentinel 对 Redigo 库的支持.zip

    Redis Sentinel 对 Redigo 库的支持哨兵Redis Sentinel 对redigo库的支持。文档API 参考替代解决方案如果您只需要 HA,您也可以在应用程序和 Redis 之间配置 Haproxy,以将请求代理到 Redis 主实例listen redis ...

    第四十六章:Redis sentinel哨兵集群1

    【Redis Sentinel哨兵集群详解】 Redis Sentinel是一种高可用性解决方案,它是Redis官方提供的一种分布式系统,专门用于监控Redis集群中的Master主服务器状态。在Master出现故障时,Sentinel能够自动进行故障转移,...

    spring+springmvc+mybatis+redisSentinel

    本项目"spring+springmvc+mybatis+redisSentinel"结合了Spring、SpringMVC、MyBatis以及Redis Sentinel,构建了一个高可用的Web应用程序,同时利用了Redis作为缓存系统提升性能。以下将详细讲解这些技术及其整合过程...

    Redis Sentinel 高可用性守护进程.zip

    重新快乐 提供高可用性 Redis 服务的一种方法是使用Redis Sentinel进行部署。Redis Sentinel 监控您的 Redis 集群,并在检测到故障时将某个从属节点提升为新的主节点。RedisHappy 提供了一个守护进程来监控此提升并...

    Redis Sentinel主从高可用方案1

    Redis Sentinel 是 Redis 为了实现高可用性(High Availability, HA)而设计的一种分布式监控和故障转移系统。它能够监控主从结构的 Redis 集群,并在主节点出现故障时,自动将一个从节点提升为主节点,从而确保服务...

Global site tag (gtag.js) - Google Analytics