1.概述

为了使Redis具有高可用性,我们可以使用Spring Data Redis对Redis Sentinel的支持。 借助Sentinel,我们可以创建自动抵御某些故障的Redis部署。

Redis Sentinel还提供其他附带任务,例如监视,通知,并充当客户端的配置提供程序。

在较高级别,Sentinel的功能是:

  • 自动故障转移 。 当主服务器无法正常工作时,Sentinel会为我们启动故障转移过程,将从服务器升级为主服务器。 此外,其他从属服务器也被重新配置为使用新的主服务器,并且使用Redis服务器的应用程序将被告知要使用的新地址。
  • 配置源 。 故障转移发生时,Sentinels将报告新地址。 这是因为Sentinel充当客户端的授权来源。 客户端进行服务发现时,它们会连接到Sentinels,以请求负责给定服务的当前Redis主服务器的地址。
  • 监控 。 Sentinel会定期检查我们的主实例和从实例是否按预期工作。
  • 通知 。 可以将Sentinel配置为在Redis实例之一发生错误时通知各种目标。 这些目标包括其他应用程序,系统管理员或API。

2.如何运行前哨

自Redis 2.8起,Redis附带了Sentinel的稳定版本。

启动Sentinel非常容易。 当我们在上一篇文章中回顾Spring Data Redis(使用Spring Boot)时,我们在Mac上使用homebrew安装了Redis。 此命令使我们可以在该安装中运行Sentinel:

redis-sentinel /path/to/sentinel.conf

如果我们使用的是redis-sentinel可执行文件(或者如果有一个使用该名称的符号链接到redis-server的可执行文件),那么我们也可以使用上述命令运行Sentinel。

另外,我们可以使用redis-server可执行文件并以Sentinel模式启动它,如下所示:

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

3.部署Sentinel之前需要了解的关键概念

在部署到Sentinel之前,我们应该检查的一些概念包括:

  1. 我们至少需要三个Sentinel实例才能进行持久的Redis部署。
  2. 我们应该将三个Sentinel实例放置在据信会独立而不是一起失败的计算机或虚拟机中。 例如,这可能意味着不同的可用区。
  3. Redis使用异步复制,因此即使在使用Sentinel时,Redis也不能保证在故障期间会保持接收到的写入。 但是,我们可以部署Sentinel来减少写入丢失的时间。
  4. 任何高可用性设置都必须定期进行测试,并且Sentinel不变。 我们需要在开发环境和生产环境中进行测试。 通过计划和测试故障,我们可以限制故障。

4. Spring数据中的配置

当我们使用基于Sentinels的配置时,我们不会向Spring Data Redis提供Redis主机/端口信息。 相反,我们提供了主服务器的属性和Sentinel URL列表。 每个Sentinel进程都有其自己的配置文件,该文件列出了主Redis服务器,例如:

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

一旦配置好了主服务器,从服务器和Sentinels,我们就需要在应用程序中更改spring数据redis配置,以与哨兵一起工作。

4.1 Java配置

可以使用Jedis和Lettuce来完成Java配置:

/*** Jedis*/
@Bean
public RedisConnectionFactory jedisConnectionFactory() {RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration().master("themaster").sentinel("127.0.0.1", 26579).sentinel("127.0.0.1", 26580);return new JedisConnectionFactory(sentinelConfig);
}/*** Lettuce*/
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration().master("themaster").sentinel("127.0.0.1", 26579).sentinel("127.0.0.1", 26580);return new LettuceConnectionFactory(sentinelConfig);
}

4.2属性配置

ProperySource (例如application.properties )可用于配置。 例如,如果我们使用本地主机:

spring.redis.sentinel.master= themaster # Name of our Redis server.
spring.redis.sentinel.nodes= localhost:26579, localhost:26580, localhost:26581 # Comma-separated list of host:port pairs.

5.结论

今天,我们回顾了如何通过使用Sentinel使用Redis实现高可用性,以及Spring Data Redis如何在Spring应用程序中支持这一点。 有关Sentinel的更多信息, Redis网站是一个很好的来源。

在我的网站上,还有从Spring Data Redis和Spring Boot开始的信息以及有关Spring Framework的几篇文章。

翻译自: https://www.javacodegeeks.com/2019/01/spring-data-redis-high-availability-sentinel.html

Spring Data Redis:Sentinel的高可用性相关推荐

  1. Spring Data Redis 正确使用姿势

    课程简介 本课程主要讲解常规 Redis 的写法,Redis 和 Spring 的结合使用,即 Spring Data Redis,以及 Redis 在工作中的正确使用姿势,Redis 和 Sprin ...

  2. Spring Boot使用Spring Data Redis操作Redis(单机/集群)

    说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...

  3. Java Spring Data Redis实战与配置参数详解 application.properties...

    Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...

  4. spring data redis 配置

    参考:http://www.linuxidc.com/Linux/2015-04/116798.htm 纠结了半天,最终还是放弃使用spring  data redis.因为它好像是不支持读写分离的. ...

  5. Java Spring Data Redis实战与配置参数详解 application.properties

    Redis作为开源分布式高并发缓存,使用范围非常广泛,主流互联网公司几乎都在使用. Java Spring Boot 2.0实战开发Redis缓存可以参考下面的步骤,Redis安装可以直接使用Linu ...

  6. Spring认证中国教育管理中心-Spring Data Redis框架教程三

    原标题:Spring认证中国教育管理中心-Spring Data Redis框架教程三 10.15.支持类 Packageorg.springframework.data.redis.support提 ...

  7. Spring data redis 异常

    2019独角兽企业重金招聘Python工程师标准>>> spring 集成 spring-data-redis 版本: spring低版本 + spring-data-redis 高 ...

  8. 使用Spring Data Redis操作Redis(集群版)

    说明:请注意Spring Data Redis的版本以及Spring的版本!最新版本的Spring Data Redis已经去除Jedis的依赖包,需要自行引入,这个是个坑点.并且会与一些低版本的Sp ...

  9. Redis - Spring Data Redis 操作 Jedis 、Lettuce 、 Redisson

    文章目录 官网 Jedis VS Lettuce Jedis Code POM依赖 配置文件 配置类 单元测试 Lettuce Code Redisson Code POM依赖 配置文件 配置类 单元 ...

最新文章

  1. Hbase API中常用类介绍和使用
  2. C++求tree树的高度(附完整源码)
  3. php.ini mysql扩展_PHP安装mysql.so扩展及相关PHP.ini 配置参数说明
  4. cf1562E. Rescue Niwen!
  5. P4564-[CTSC2018]假面【期望dp】
  6. yii2通过url访问类中的方法_每日学点---nginx变量使用方法详解(3)
  7. 小米研发类Kindle电子阅读器
  8. Hi3519 设置crop动态调节输出分辨率
  9. Docker服务以及容器如何设置自动启动
  10. PDF怎么删除空白页?必备PDF页面删除技巧
  11. uniapp swiper组件被内容撑开
  12. matlab数理统计工具箱,Matlab数理统计工具箱
  13. dwg格式文件怎么打开
  14. 写给大忙人的模电复习资料(001)
  15. 配置系统未能初始化 错误的解决方案
  16. 最浅显易懂kerberos认证和黄金白银票据
  17. 玩转数据可视化之R语言ggplot2:(八)ggplot2绘制空间地理数据图
  18. 基于RedHatEnterpriseLinux V7(RHEL7)下SPEC CPU 2006环境搭建以及测试流程(之一)——介绍、安装准备、安装、config文件以及运行脚本介绍
  19. python filter和map的区别_js中filter和map的区别
  20. python一个文件夹的文件移动到另外一个文件夹

热门文章

  1. 2021牛客暑期多校训练营7 J-xay loves Floyd(最短路+bitset优化集合交)
  2. [XSY3382] 专家系统(二分+线段树)
  3. 编译原理(二)之语法分析
  4. 分布式之redis复习精讲
  5. 浅谈MySQL的B树索引与索引优化
  6. 浅析负载均衡的6种算法,Ngnix的5种算法
  7. Hibernate: You have an error in your SQL syntax; check the manual that corresponds to your MySQL
  8. JavaScript操作BOM简单案例
  9. vue插槽面试题_VUE面试题解析,半年出一篇,建议收藏!
  10. android查看wifi是否双频,Android判断wifi是5G还是2.4G