首页
学习
活动
专区
圈层
工具
发布

Redis高可用部署与集群管理实战

本文详解Redis高可用架构设计,从主从复制到哨兵模式再到Cluster集群的完整实践。...前言Redis作为最流行的缓存数据库:高性能:10万+QPS丰富的数据结构简单易用但单机Redis存在问题:单点故障容量有限无法水平扩展今天来讲Redis的高可用部署方案。...││Slave2││Slave3│└────────────┘└────────────┘└────────────┘数据按Key的CRC16值分配到16384个槽位每个Master负责一部分槽位4.2...部署在不同机房-机房故障时,另一机房的Slave可提升为Master┌──────────────┐┌──────────────┐│总部││分部││Master1←───────同步──→Slave1...#2.网络优化(使用组网降低延迟)7.2ClusterMOVED错误展开代码语言:BashAI代码解释#客户端需要使用集群模式#Java:JedisCluster#Python:redis-py-clusterJedisClustercluster

32010

jenkins动态slave在k8s上的实践

Volume 上去,Slave 运行在各个节点上,并且它不是一直处于运行状态,它会按照需求动态的创建并自动删除。...会根据每个资源的使用情况,动态分配 Slave 到空闲的节点上创建,降低出现因某节点资源利用率高,还排队等待在该节点的情况。...,对于后面执行 Job 的时候需要用到该值,然后我们这里使用的是 cnych/jenkins:jnlp 这个镜像,这个镜像是在官方的 jnlp 镜像基础上定制的,加入了 kubectl 等一些实用的工具...另外一些同学在配置了后运行 Slave Pod 的时候出现了权限问题,因为 Jenkins Slave Pod 中没有配置权限,所以需要配置上 ServiceAccount,在 Slave Pod 配置的地方点击下面的高级...还有一些同学在配置完成后发现启动 Jenkins Slave Pod 的时候,出现 Slave Pod 连接不上,然后尝试100次连接之后销毁 Pod,然后会再创建一个 Slave Pod 继续尝试连接

4.2K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    子弹短信内部技术分享:Redis

    高可用 Redis 通过哨兵(Sentinel)与复制的方式实现了高可用 复制 通过在 redis.conf 文件中配置「slaveof ip port」或给运行中的 redis 节点执行命令「slaveof...Redis 通过 Sentinel 来实现节点监控与协调,Sentinel 是一个特殊的 Redis 节点,需要启动时指定参数 --sentinel 和 sentinel.conf 配置文件,并在配置文件中指定主节点的...对 Sentinel 的详细介绍,可以见:https://redis.io/topics/sentinel ,以及参考《Redis 设计与实现(第二版)》....集群 Redis 因为是内存型数据库,在存储空间上容易捉襟见肘,于是产生了许多扩容方案。 客户端分片 如 ShardedJedis,通过在客户端对 key 进行 hash,再分给指定的节点。...如 JedisCluster,每次请求前会拉取节点的 cluster info 来计算应该到哪个节点请求,并需要对错误节点返回的 ASK 消息做相应的处理。由此产生的问题是 每次操作最少请求两次。

    1.2K20

    线上问题排查,Redis 频繁重连...

    然后给主节点(master) set 一个 dummy key,看是否在规定时间内能同步到从节点(slave)。...,进行全量数据同步的时候 也就是说,当数据集(dataset)还未被全部加载进内存中时,如果客户端给 Redis 发送命令,则会收到上述错误提示。...连上告警的节点,执行 INFO MEMORY,连续几次的关键信息如下: redis> info memory # Memory used_memory_human:53.27M used_memory_peak_human...总结 又是一个深刻的教训:线上出问题,很多时候与新上的 feature 有关。用 Redis Cluster 做缓存时要谨防 Big Key 的出现,尽量将 Key 打散在各个节点中。...产线的服务需要配置好全方位的监控,合理的监控可以在真正严重的问题出现之前就给予告警。 关于我:Tom哥,前阿里P7技术专家,出过专利,多年大厂实战经验。

    1.4K10

    redis 哨兵机制

    192.168.171.152 Redis(slave) 注:需要保证各个节点的redis服务正常运行,关于部署redis可以参考博文:Redis 5.0部署 配置主从复制 在两台slave节点上执行以下命令...,指定主机redis01为master 127.0.0.1:6379> slaveof 192.168.171.151 6379 在redis01主机上查看连接的slave 127.0.0.1:6379...若要了解主从复制更多原理,可以参考博文:redis主从复制详解 配置Sentinel节点 以下操作在其中一个节点进行即可(我这里在redis01节点上)。...命令的回复,或者返回一个错误,那么sentinel将这个服务器标记为主观下线。...服务器对 PING 命令的有效回复可以是以下三种回复的其中一种: 返回 +PONG 。 返回 -LOADING 错误。 返回 -MASTERDOWN 错误。

    70620

    Redis Sentinel 高可用机制

    Redis Sentinel 的目标是通过3个功能来管理 Redis: 监控 Redis 的健康情况 出现错误后发送通知,例如通知客户端 自动创建一个新的 master 并执行故障转移 如何工作的?...有3个 sentinel 运行在应用服务器上。 ? 这时,A 宕了,被一个 sentinel 发现了,发出了 SDOWN 消息,之后,其他 sentinel 也发现了,那么 ODOWN 消息被发出。...sentinel 选择新的 master 的原则: 首先判断优先级,选择优先级较小的 优先级是在配置文件中配置的,默认为 100。...如果复制下标也相同,就选择 runid 小的 每个 Redis 实例都会有一个 runid,是在启动时设置的随机字符串。 sentinel 有多个,具体谁来执行故障转移?...通过上面的配置文件可以发现,只配置了 Redis master 的地址,并没有配置 slave 和其他 sentinel 的地址。 那是怎么知道的呢?

    55610

    CentOS6 脚本自动安装redis sentinel

    脚本自动安装redis sentinel(在同一台服务器上) #!...这样在slave离线的时候,不需要完全复制master的数据,如果可以执行部分同步,只需要把缓冲区的部分数据复制给slave,就能恢复正常复制状态。...#noeviction:不移除任何key,只是返回一个写错误。 #上面的这些驱逐策略,如果redis没有合适的key驱逐,对于写命令,还是会返回错误。redis将不再接收写请求,只接收get请求。...10 #master的slave数量大于该值,slave才能迁移到其他孤立master上,如这个参数若被设为2,那么只有当一个主节点拥有2 个可工作的从节点时,它的一个从节点会尝试迁移。...#在部分key所在的节点不可用时,如果此参数设置为”yes”(默认值), 则整个集群停止接受操作;如果此参数设置为”no”,则集群依然为可达节点上的key提供读操作 #cluster-require-full-coverage

    1.1K70

    浅析redis主从、哨兵和Cluster

    复制(replication) 说明 在 Redis 复制的基础上,使用和配置主从复制非常简单,能使得从 Redis 服务器(下文称 slave)能精确的复制主 Redis 服务器(下文称 master...虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定...主服务器或从服务器的机器上运行 Redis Sentinel 进程。...Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误....比如说, 集群可能会错误地将 example.rb 发送的所有 SET 命令都改成了 SET foo 42 , 但因为 example.rb 并不检查写入后的值, 所以它不会意识到集群实际上写入的值是错误的

    2.2K20

    Redis Sentinel实现的机制与原理详解

    序言 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案。实际上这意味着你可以使用Sentinel模式创建一个可以不用人为干预而应对各种故障的Redis部署。...在不稳定版本的分支上执行新的改进,且有时一些新特性一旦被认为是稳定的就会被移植到Redis2.8和Redis3.0分支中。...你的客户端要支持哨兵,流行的客户端都支持哨兵,但不是全部。 没有HA设置是安全的,如果你不经常的在开发环境测试,在生产环境他们会更好。你可能会有一个明显的错误配置只是当太晚的时候。...master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地认为这个master已经不可用了。...例三:Sentinel在客户端盒子里 有时我们只有两个Redis盒子可用,一个master和一个slave。

    77110

    Redis详解(九)------ 哨兵(Sentinel)模式详解

    另外还可以进行如下测试:可以在主服务器上添加一条数据,然后看看从服务器上是否能够查到该数据. ③、问题 如果对于上面的测试,主服务器上添加的数据,从服务器上无法查询到,可以查看前面配置的目录/opt.../redis/data 日志文件,有一种错误如下: ?   ...这是由于主服务器设置了登录密码,从服务器在向主服务器进行数据同步复制时,由于不知道主服务器密码,导致连接不上,从而无法进行同步.   ...二.masterauth   针对master对应的slave节点设置的,在slave节点数据同步的时候用到。   ...  这里贴一下主要测试代码:   PS:实际上springboot已经为我们注入了RedisTemplate,我们在实际项目中不用写的像下面代码这么麻烦,这样写是为了详细的表明连接步骤. //1.设置

    2.7K10

    Redis哨兵模式(sentinel)学习总结及部署记录(主从复制、读写分离、主从切换)

    主观下线就是说如果服务器在down-after-milliseconds给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下线...Sentinel支持集群(可以部署在多台机器上,也可以在一台物理机上通过多端口实现伪集群部署) 很显然,只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后(sentinel...主服务器或从服务器的机器上运行 Redis Sentinel 进程。...redis-server无法在"down-after-milliseconds"时间内响应或者响应错误信息,都会被认为此redis-server处于SDOWN状态。...a)redis服务器上各自存在一个Sentinel,监控本机redis的运行情况,并通知给闭路环上其它的redis节点; b)当master发生异常(例如:宕机和断电等)导致不可运行时,Sentinel

    4.9K20

    Redis 高可用性解决方案之哨兵与集群

    前言 在开始本章的讲解之前,我们首先从宏观角度回顾一下 Redis 实现高可用相关的技术。它们包括:持久化、复制、哨兵和集群,在本系列的前篇文章介绍了持久化以及复制的原理以及实现。...由于本人没有这么多服务器,因此在一台机器上模拟一个 Redis Sentinel 集群。...MOVED 错误表示槽的负责权已经从一个节点转移到了另外一个节点,而 ASK 错误只是两个节点在迁移槽的过程中使用的一种临时措施。...由于资源有限,因此在一台机器上模拟一个 Redis Cluster。...领头 Sentinel:Sentinel 系统选举领头 Sentinel 的方式是对 Raft 算法的领头选举方法的实现,Raft 算法是一个共识算法,是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议

    93340

    (六)Redis全体系:Redis主从复制和集群分片,老鸟的必经之路!

    借助Redis的主从复制,可以实现读写分离和高可用: 实时性要求不是特别高的读请求,可以在Slave上完成,提升效率。...后,Redis Sentinel能够自动将一个Slave晋升为Master,继续提供服务 启用主从复制非常简单,只需要配置多个Redis实例,在作为Slave的Redis实例中配置: slaveof 192.168.1.1...Redis Cluster的能力 能够自动将数据分散在多个节点上 当访问的key不在当前分片上时,能够自动将请求转发至正确的分片 当集群中部分节点失效时仍能提供服务 其中第三点是基于主从复制来实现的,Redis...使用Redis Cluster时,pipelining、事务和LUA Script功能涉及的key必须在同一个数据分片上,否则将会返回错误。...但是Redis不支持跨分片的事务,事务和LUA Script还是必须遵循所有key在一个分片上的规则要求。

    58310

    Redis Sentinel 学习笔记

    一 Redis-Sentinel简介 Redis-Sentinel是Redis官方推荐的针对主从结构的高可用性解决方案,当master不可用,sentinel能监控多个master-slave集群,发现...sentinel down-after-milliseconds mymaster 30000 #在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步...默认180秒,即3minutes. sentinel failover-timeout mymaster 180000 #设置连master和slaves验证密码,在监控redis实例时很有用 #sentinel...具体sentinel的工作机制下一篇文章具体分析。 启动老的主库之后,sentinel会将redis 添加为 10.215.20.19 6379的slave。...6379 切换过程对主库不可用探测时间比较久,这点在生产上可以调整sentinel的配置,缩短判断不可用的时间长度,达到快速切换的目的。

    78420

    Redis主从、哨兵、集群

    【rdb文件】 2、从服务只能执行读操作【拷贝主服务上rdb】 第一种: 主服务器和从服务在同一台机器上面 第二种: 主服务器和从服务在不同的机器上面(生成环境下面) 哨兵 1、哨兵的配置文件 sentinel.conf...是3,那么一次性就会把所有slave挂接到新的master上去 failover-timeout,执行故障转移的timeout超时时长 2、在eshop-cache03上再部署一个redis 只要安装redis...&& make test make install 2、正式的配置 哨兵默认用26379端口,默认不能跟其他机器在指定端口连通,只能在本地访问 // 在redis的源文件中拷贝sentinel.conf.../sentinel-26739.conf root@192.168.3.221:/usr/local/redis/6380/ 3、启动哨兵进程 在三台机器上,分别启动三个哨兵进程,组成一个集群,观察一下日志的输出...上执行,清理所有的master状态 (3)SENTINEL MASTER mastername,在所有sentinal上执行,查看所有sentinal对数量是否达成了一致 2、slave的永久下线 让master

    69530

    redis-sentinel主从复制高可用

    Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案, 当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能...,就会选举一个sentinel节点来完成自动故障转义 在master-slave进行切换后,master_redis.conf、slave_redis.conf和sentinel.conf的内容都会发生改变...ODOWN只适用于Master,对于Slave的 Redis 实例,Sentinel 在将它们判断为下线前不需要进行协商, 所以Slave的 Sentinel 永远不会达到ODOWN。...PONG 确定主从关系 在主节点上查看主从通信关系 [root@master ~]# redis-cli -p 6379 info replication # Replication role:master...,在slave上查看数据,此时主从复制配置完成 开始配置Redis Sentinel 超哥实验的环境是单独一台linux,192.168.119.10 [root@master tmp]# ll /etc

    86320

    redis实例cpu占用率过高问题优化(番外)

    最后,还有几个待解决的问题记录下: 1、主库的used_memory_peak_human达到60.97G,实际上主库的maxmemory只配置了32G 127.0.0.1:6379> info memory...# Memory used_memory:3531621728 used_memory_human:3.29G used_memory_rss:70885924864 used_memory_peak...,只能通过重启进程释放 2、redis过期的key会不会自动删除?...:从数据集(server.db[i].dict)中任意选择数据淘汰 noeviction : 禁止驱逐数据,永不过期,返回错误 3、redis主从同步原理(全量/增量) 一张图一目了然: 复制积压缓冲区...=repl-backlog image.png redis2.8之前不支持增量备份 增量备份的两个条件 slave带来的runid是否当前master的runid slave带来的复制offset在master

    1.5K30

    redis sentinel 工作原理

    一 前言 上一篇文章讲述了 sentinel 的安装实践和failover 切换测试,本文继续深入了解 redis sentilnel的工作原理。...数据节点:即redis节点,包含主从节点。 2.2 Sentinel 机制 redis使用(sentinel)的工作原理是: redis使用一组sentinel节点来监控主从redis服务的可用性。...向数据节点做心跳探测 sentinel节点每隔1秒向redis节点发送ping命令来检测实例的状态,如果在指定的时间内(down-after-milliseconds)没有回复或则返回错误的回复,那么该实例被判为下线...如果一个sentinel节点收到了半数以上的同意票,则成为sentinel领导者。 如果前面三步在一定时间内都没有选出一个sentinel领导者,将重新开始下一次选举。...选择新的主节点 在剩下的redis从节点中,按照以下顺序来选择新的主节点: 过滤掉“不健康”的数据节点:比如主观下线、断线的从节点、五秒内没有回复过哨兵节点ping命令的节点、与主节点失联的从节点。

    1.4K20

    redis学习(十九)

    # quorum 配置多少个sentinel哨兵统一认为master主节点失联 那么这时客观上认为主节点失联了 # sentinel monitor redis-port...> sentinel auth-pass mymaster MySUPER--secret-0123passw0rd # 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线...mymaster 30000 # 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步, 这个数字越小,完成failover所需的时间就越长, 但是如果这个数字越大...同一个sentinel对同一个master两次failover之间的间隔时间。 #2. 当一个slave从一个错误的master那里同步数据开始计算时间。...#如果脚本在执行过程中由于收到系统中断信号被终止了,则同返回值为1时的行为相同。 #一个脚本的最大执行时间为60s,如果超过这个时间,脚本将会被一个SIGKILL信号终止,之后重新执行。

    49430
    领券