Redis高可用Sentinel哨兵模式环境搭建

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,倚天版 1GB 1个月
简介: Redis高可用Sentinel哨兵模式环境搭建

Sentinel哨兵


redis在主从复制:主节点挂掉后不会自动恢复一个主节点,需要手工干预切换一个从库到主库。
服务暂且不可用、手工修改一大堆配置也可能出错、可用性低。
Sentinel哨兵高可用解决方案,通过监控主从服务器,主库挂了会自动根据从节点的反馈选举进行从库到主库的切换,在也不用担心晚上睡觉的时候线上处理问题了。
复制代码


下面的环境搭建实在win的wsl中进行的


测试配置如下



网络异常,图片无法展示
|


网络异常,图片无法展示
|


redis.conf配置文件修改



主节点


无需配置
复制代码


从节点


#主节点密码
masterauth 123654
#主节点地址
slaveof 127.0.0.1 6379
复制代码


sentinel哨兵(注意需要单独安装)



安装


需要作为插件需要安装
sudo apt install redis-sentinel
复制代码


配置


port 26379
# 1标识需要从节点反馈的数量评估主节点是否挂掉了
Sentinel monitor mymaster 127.0.0.1 6379 1
#以守护进程模式启动
daemonize yes
#10秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 10000
#故障转移后重新主从复制,1表示串行,>1并行
sentinel parallel-syncs mymaster 1
#故障转移开始,三分钟内没有完成,则认为转移失败
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123654
复制代码


效果



用的可视化工具 Another Redis Desktop Manager 为redis可视化工具


正常节点


网络异常,图片无法展示
|


通过在哨兵的服务器执行命令后,主从节点都可以看到的
复制代码


干掉主节点


info replication
6381变为主节点了
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


配置文件也发生了变化


网络异常,图片无法展示
|


springboot2中的一些变化



需要改一些配置项


#-----------------redis--------------------------
# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
#spring.redis.database=0
# Redis服务器地址
#spring.redis.host=127.0.0.1
# Redis服务器连接端口
#spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=123654
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=8 
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=10000
#------------哨兵配置添加,上面的端口地址不需要了-----------------------------
spring.redis.sentinel.master=mymaster
#这里应该有多个地址的
spring.redis.sentinel.nodes=127.0.0.1:26379
spring.redis.password=123654
#-----------------redis end------------------------
复制代码


代码是不用动的


@Configuration
public class RedisConfig {
  @Bean
  public RedisTemplate<String, Object> redisTemplateString(RedisConnectionFactory redisConnectionFactory) {
    // 配置redisTemplate
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    RedisSerializer stringSerializer = new StringRedisSerializer();
    redisTemplate.setKeySerializer(stringSerializer); // key序列化
    redisTemplate.setValueSerializer(stringSerializer); // value序列化
    redisTemplate.setHashKeySerializer(stringSerializer); // Hash key序列化
    redisTemplate.setHashValueSerializer(stringSerializer); // Hash value序列化
    redisTemplate.afterPropertiesSet();
    redisTemplate.setEnableTransactionSupport(true);
    return redisTemplate;
  }
}


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
30天前
|
NoSQL Java Redis
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
分布式锁实现原理问题之使用Redis的setNx命令来实现分布式锁问题如何解决
|
2月前
|
存储 运维 NoSQL
Redis Cluster集群模式部署
Redis Cluster集群模式部署
84 4
|
2月前
|
运维 监控 NoSQL
Redis Sentinel哨兵模式部署
Redis Sentinel哨兵模式部署
69 2
|
2月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
37 0
|
23天前
|
存储 NoSQL 算法
Redis 集群模式搭建
Redis 集群模式搭建
46 5
|
3天前
|
存储 缓存 NoSQL
Redis深度解析:部署模式、数据类型、存储模型与实战问题解决
Redis深度解析:部署模式、数据类型、存储模型与实战问题解决
|
4天前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
5天前
|
NoSQL Java 调度
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
|
5天前
|
NoSQL 网络协议 安全
Lettuce的特性和内部实现问题之Lettuce天然地使用管道模式与Redis交互的问题如何解决
Lettuce的特性和内部实现问题之Lettuce天然地使用管道模式与Redis交互的问题如何解决