`
z19910509
  • 浏览: 50823 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Redis-Sentinel安装

阅读更多

Redis2.X版本是不支持分布式集群的,只能通过第三方的组件进行实现。上一篇文章介绍了twitter的twemproxy,但twemproxy实现的是将value平均分布到各个服务器上,且只能将失败节点移除,这样就保证不了高可用性了。下面介绍下redis的Sentinel,Sentinel也是redis作者开发的,目前已经集成在redis的安装包里,主要目的就是实现redis的高可用性。

 

我认为,Sentinel实现的最主要的一个功能就是能做到自动故障迁移,即当某一个master挂了的时候,可以自动的将某一个slave提升为新的master,且原master的所有slave也都自动的将自己的master改为新提升的master,这样我们的程序的可用性大大提高了。

 

--------------------------------------------------------------------------------------------------------------

 

下面记录下安装即配置过程:

1、安装非常简单,只要redis安装完成,Sentinel就安装完成了,Sentinel集成在redis里了

2、配置,牵扯到的配置文件为redis安装目录下的:sentinel.conf

 

port 26380        #Sentinel启动端口

dir "/tmp/6380" #Sentinel的工作目录

sentinel monitor mymaster 192.168.100.90 6380 2

#Sentine监听的maste地址,第一个参数是给master起的名字,第二个参数为master IP,第三个为master端口,第四个为当该master挂了的时候,若想将该master判为失效,在Sentine集群中必须至少2个Sentine同意才行,只要该数量不达标,则就不会发生故障迁移。

sentinel down-after-milliseconds mymaster 30000 

#master在多长时间内一直没有给Sentine返回有效信息,则认定该master主观下线

sentinel parallel-syncs mymaster 1 

#当在执行故障转移时,设置几个slave同时进行切换master,该值越大,则可能就有越多的slave在切换master时不可用,可以将该值设置为1,即一个一个来,这样在某个slave进行切换master同步数据时,其余的slave还能正常工作

sentinel failover-timeout mymaster 180000  

#执行故障迁移超时时间,即在指定时间内没有大多数的sentinel 反馈master下线,该故障迁移计划则失效

 

#在同一个配置文件里可以配置多个master监听

 

 

 

3、启动Sentinel

#方式一,使用redis-sentinel命令启动
redis-sentinel /path/to/sentinel.conf
#方式二, 使用redis-server 命令,启动一个运行在 Sentinel 模式下的 Redis 服务器,即redis与sentinel同时启动
redis-server /path/to/sentinel.conf --sentinel

 注:不论哪种方式启动,必须要指定sentinel配置文件的路径

 

--------------------------------------------------------------------------------------------------------------

 

名词解释:

1、主观下线:如果服务器在down-after-milliseconds给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线SDOWN )

2、客观下线:只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线ODOWN

只有当master被认定为客观下线时,才会发生故障迁移

 

--------------------------------------------------------------------------------------------------------------

 

注意事项:

 

1、只有Sentinel 集群中大多数服务器认定master主观下线时master才会被认定为客观下线,才可以进行故障迁移,也就是说,即使不管我们在sentinel monitor设置的数是多少,就算是满足了该值,只要达不到大多数,就不会发生故障迁移。

2、官方建议sentinel至少部署三台,且分布在不同机器这里主要考虑到sentinel的可用性,假如我们只部署了两台sentinel,且quorum设置为1,也可以实现自动故障迁移,但假如其中一台sentinel挂了,就永远不会触发自动故障迁移,因为永远达不到大多数sentinel认定master主观下线了。

3、sentinel monitor配置中的master IP尽量不要写127.0.0.1或localhost,因为客户端,如jedis获取master是根据这个获取的,若这样配置,jedis获取的ip则是127.0.0.1,这样就可能导致程序连接不上master

4、当sentinel 启动后会自动的修改sentinel.conf文件,如已发现的master的slave信息,和集群中其它sentinel 的信息等,这样即使重启sentinel也能保持原来的状态。注意,当集群服务器调整时,如更换sentinel的机器,或者新配置一个sentinel,请不要直接复制原来运行过得sentinel配置文件,因为其里面自动生成了以上说的那些信息,我们应该复制一个新的配置文件或者把自动生成的信息给删掉。

5、当发生故障迁移的时候,master的变更记录与slave更换master的修改会自动同步到redis的配置文件,这样即使重启redis也能保持变更后的状态。

 

--------------------------------------------------------------------------------------------------------------

 

sentinel命令:

 

我们可以使用  redis-cli -p sentinel端口  打开一个redis客户端去执行这些命令

  • 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 会根据这个配置进行相应的更新)

--------------------------------------------------------------------------------------------------------------

 

客户端:

 

Jedis支持sentinel

//通过以下方式即可获取连接池,注意这里填写的master名字,应与sentinel配置文件中配置的一致
JedisSentinelPool pool=new JedisSentinelPool("mymaster", hosts, config);
Jedis jedis=pool.getResource();
jedis.set("name","zhangsan");

 

参考:http://redisdoc.com/topic/sentinel.html

 

 

 

分享到:
评论

相关推荐

    Windows环境Redis-Sentinel安装

    在Windows环境下安装Redis Sentinel是一个重要的步骤,因为它提供了高可用性(HA)解决方案,确保了主Redis服务器的故障能够被自动检测并切换到备选节点。Redis Sentinel系统是Redis集群中的监控、通知和故障转移...

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

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

    PyPI 官网下载 | django-redis-sentinel-plugin-1.0.0.tar.gz

    通过安装和配置`django-redis-sentinel-plugin`,开发者可以利用Redis Sentinel的强大功能,提升Django应用的健壮性和性能。在处理高流量或对数据一致性有严格要求的项目时,这是一个非常有价值的工具。 总结,...

    Redis-Sentinel高可用架构学习

    "Redis-Sentinel高可用架构学习" Redis-Sentinel高可用架构学习是Redis官方推荐的高可用性解决方案。当使用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动...

    redis集群:redis-sentinel(哨兵机制)集群

    Redis Sentinel(哨兵)是Redis集群中的一个重要组件,它提供了高可用性解决方案,确保当主节点发生故障时,能够自动将从节点提升为主节点,从而维持服务的连续性。哨兵系统通过监控、通知和自动故障转移来实现这一...

    redis-sentinel高可用一键配置工具

    该资源是本人在学习redis过程中积累总结的经验以分享给大家:redis-sentinel高可用一键配置工具就是一键帮你从下载-&gt;安装-&gt;配置 好 redis 高可用的服务环境,省去了很多弯路,节约了更多的时间花在自己项目的主要...

    redis安装文件Redis-x64-3.2.10、Redis-x64-3.0.50

    8. Sentinel监控与故障转移:Redis Sentinel系统用于监控Redis实例,当检测到主服务器失效时,它能自动触发故障转移,将从服务器提升为主服务器。 9. Cluster集群:Redis 3.0及以上版本引入了Cluster特性,支持数据...

    Kubernetes(k8s)-nacos-sentinel-rocketmq-zipkin-elasticsearch-redis-mysql.zip

    Kubernetes(k8s)-nacos-sentinel-rocketmq-zipkin-elasticsearch-redis-mysqlk8s-nacos-sentinel-rocketmq-zipkin-elasticsearch-redis-mysqlKubernetes(k8s)-nacos-sentinel-rocketmq-zipkin-elasticsearch-...

    redis-sentinel.conf

    dir "/usr/local/etc/redis6370" # 修改启动端口,依次修改为,26371,26372,26373 port 26370 # 添加关闭保护模式 protected-mode no # 修改sentinel monitor,这个不需要改动,都一样就可以,注意顺序,这个...

    Redis-6.2.4 windows编译版

    6. `redis-sentinel.exe`:Redis Sentinel是高可用性解决方案的一部分,它可以监控主从集群,自动处理主服务器故障切换。 在Windows环境下,启动Redis服务器一般通过运行`redis-server.exe`来完成,同时可以配置`...

    docker-compose安装redis-sentinel集群(1主+2副+2哨兵)

    docker-compose安装redis-sentinel集群(1主+2副+2哨兵)

    Redis-7.0.5-x64 for Windows 64位版 Redis 7.0.5

    7. **redis-sentinel.exe**: Redis Sentinel的可执行文件,用于启动Sentinel服务,监控和管理Redis集群的高可用性。 8. **redis-check-aof.exe**: 类似于redis-check-rdb,但专门用于检查AOF(Append Only File)...

    bitnami-docker-redis-sentinel:Bitnami Redis前哨Docker映像

    Bitnami包装的Redis(TM)Sentinel是什么? 免责声明:REDIS(r)是Redis Labs Ltd.的注册商标。RedisLabs Ltd.保留任何权利。Bitnami的任何使用仅供参考,并不表示Redis Labs Ltd之间有任何赞助,认可或从属关系。 ...

    redis-windows-7.0.10.zip

    在Windows环境下安装Redis,首先需要解压"redis-windows-7.0.10.zip"文件,这通常会包含一系列的可执行文件和配置文件。Redis的核心组件包括`redis-server.exe`(服务器进程)、`redis-cli.exe`(命令行客户端)以及...

    bitnami-docker-redis-sentinel-exporter

    $ docker run --name redis-sentinel-exporter bitnami/redis-sentinel-exporter:latest 为什么要使用Bitnami Images? Bitnami密切跟踪上游源代码变化,并使用我们的自动化系统及时发布该图像的新版本。 对于...

    linux redis安装(redis-2.6.14.tar.gz)

    在生产环境中,你可能还需要关注Redis的主从复制、哨兵监控(Sentinel)和集群(Cluster)功能。 记住,为了在系统启动时自动启动Redis,你还需要创建一个启动脚本和服务单元文件。对于Systemd系统,可以创建一个名...

    Redis-Windows-6.2.6.zip

    在Windows环境下,Redis的安装和使用可能与在Linux上有所不同,但同样提供了高效的数据处理能力。本文将深入探讨Redis 6.2.6在Windows操作系统上的安装、配置以及其主要功能。 Redis 6.2.6是Redis的一个稳定版本,...

    redis-stack-server-6.2.6-v7.rhel7.x86-64.tar.gz

    这个压缩包包含了运行 Redis Stack 所需的所有组件,便于在 RHEL7 系统上快速安装和配置。 Redis 是一款高性能的键值存储系统,常用于缓存、数据库和消息代理等场景。它支持多种数据结构,如字符串、哈希、列表、...

    redis-sentinel-bin.7z

    这个"redis-sentinel-bin.7z"压缩包包含了部署Redis Sentinel伪集群所需的基础组件和配置文件。下面将详细介绍Redis Sentinel、哨兵集群部署、Redis集群配置、RDB和AOF的相关知识点。 **Redis Sentinel** Redis ...

    redis-7.2-x64-for-windows-bin.zip

    3. **run-sentinel.bat**: 这个批处理文件用于启动Redis Sentinel。Sentinel是Redis的一个组件,用于监控、故障转移和配置更新,以提供高可用性。启动此脚本可以管理和监控多个Redis实例。 4. **run-cluster.bat**:...

Global site tag (gtag.js) - Google Analytics