redis集群 相关

redis集群中如果有3对主从节点,其中有一对挂掉 集群还能正常工作吗?(不能)

1.正常启动3对主从节点的集群,查看集群节点信息

2.kill掉当前的一个主节点6379

发现,与6379对应的从节6389点变为主节点,仍能正常从集群查询数据

3.关闭6389主节点,并进行数据查询

发现获取数据异常!

分析:

消息机制

redis cluster集群中通过消息来进行通信。消息共有以下5种。

meet消息:发送者会向接受者发送cluster meet命令,请求接受者将发送者加入到集群中。上文提到的无中心网络结构就是使用meet命令构建的。

ping消息:集群中的每个节点每秒钟都会从已知节点列表选举出5个节点,然后从这5个节点中选中一个最长时间没有发送ping消息的节点作为目标节点来发送ping消息,来检测目标节点是否处于在线状态。

pong消息:接受者接受到发送者发送的meet消息或者ping消息后,会回复pong消息,用于确认消息已经到达。另外,pong消息也可以用于刷新接收者对发送者的信息,例如故障转移后,从节点会向集群中发送pong消息,用于告知从节点已经升级为主节点。

fail消息:fail消息用于通知将某个节点置为下线状态。例如节点A认为节点B已下线,节点A会向集群中发送一条fail消息,接受到这条消息的节点会将节点B标记为已 下线。

publish消息:当某个节点收到publish命令后,会向集群中发送一条publish消息。

1.redis-cluster架构图

架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的master节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->key

2. redis-cluster选举:容错

(1)领着选举过程是集群中所有master参与,如果半数以上master节点与故障节点通信超过(cluster-node-timeout),认为该节点故障,自动触发故障转移操作.

(2):什么时候整个集群不可用(cluster_state:fail)

a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成集群的slot映射[0-16383]不完整时进入fail状态. ps : redis-3.0.0.rc1加入cluster-require-full-coverage参数,默认关闭,打开集群兼容部分失败.

b:如果集群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

 当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

参考:https://hot66hot.iteye.com/blog/2050676

原文地址:https://www.cnblogs.com/cangshublogs/p/10923553.html

时间: 2024-10-31 19:33:20

redis集群 相关的相关文章

redis集群相关资料

Cluster简介 Redis 3.0引入的cluster.cluster是具有有自动数据分片.容错.针对读取速度有了显著的提升.改进了AOF重写等的redis分布式实现. Redis 集群是一个分布式(distributed).容错(fault-tolerant)的 Redis 实现, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset). Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性

Redis集群技术及Codis实践

"高效运维最佳实践"是InfoQ在2015年推出的精品专栏,由触控科技运维总监萧田国撰写,InfoQ总编辑崔康策划. 前言 如开篇文章所言,高效运维包括管理的专业化和技术的专业化.前两篇我们主要在说些管理相关的内容,本篇说一下技术专业化.希望读者朋友们能适应这个转换,谢谢. 互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍.在这个演化过程中,缓存系统扮演了举足轻重的角色. 运维进化到今天,已经不是重复造轮子的时代.所以,我们在架构优化和自动化运维

Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件(原创)

回到目录 对于redis-sentinel我在之前的文章中已经说过,它是一个仲裁者,当主master挂了后,它将在所有slave服务器中进行选举,选举的原则当然可以看它的官方文章,这与我们使用者没有什么关系,而对于sentinel来说,它在进行主从切换时,会触发相关事件,这是和我们开发人员有关系的,如当+switch-master事件被触发时,说明当前Sentinal已经完成了一次主从的切换,并所有服务已经正常运转了. 下面是我这几天作的测试,对于Twemproxy代理和Sentinal哨兵都已

Redis(五)、Redis数据库集群相关

Redis数据库集群 第1章 集群简介 Redis 集群是一个分布式(distributed).容错(fault-tolerant)的 Redis 实现, 集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集(subset),是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability). Re

Redis简介、高可用及集群相关配置

一 Redis 持久化和复制 1 Redis持久化的两种方式: 1 RDB:可以再指定的时间间隔内生成数据集的时间点快照(每隔一定的时间做一个快照,进行将其刷新到磁盘上,断电)2 AOF:把服务器执行的所有写操作命令记录下来,然后在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件的操作相当于自增操作,Redis可以同时使用RDB和AOF这两种方式.当Redis重启时,会优先使用AOF文件来还原数据集.你也可以关闭持久化功能RDB:可以做备份,RDB可以最大化Redis性能,父进程在保存

redis 集群

redis 集群 redis集群是redis提供分布式数据库方案, 集群通过分片(Sharding)来进行数据共享,并提供复制和故障转移功能. 节点 redis集群通常由多个节点(node)组成,在开始每个node 都是相互独立的. 要组建成真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群. 命令 cluster meet <ip> <port> 向一个node 发送命令 cluster meet,让节点与ip/port所指定的节点 进行握手(hand

Redis集群的高可用测试(含Jedis客户端的使用)

Redis集群的使用测试(Jedis客户端的使用) 1.  Jedis客户端建议升级到最新版(当前为2.7.3),这样对3.0.x集群有比较好的支持. https://github.com/xetorthio/jedis http://mvnrepository.com/artifact/redis.clients/jedis 2.  直接在Java代码中链接Redis集群: // 数据库链接池配置 JedisPoolConfig config = new JedisPoolConfig();

redis 集群配置实战

最近研究Redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到redis3 release出来后,换掉memCache 集群. 一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/news/49 (ps:跳票了好久,今年貌似加快速度了),目前的最新版本是redis3 beta2(2.9.51). 作者的目标:Redis Cl

redis集群实现(一)集群架构与初始化

redis是一个高可用.高性能.高可扩展性的基于内存也支持持久化存储的kv存储数据库,redis相比较于之前的kv存储memcached而言,不但支持的value类型大大增加,并且还支持数据的持久化,弥补了memcached的不能持久化的缺点,但是在3.0之前的redis并不支持集群功能,这也是redis在3.0之前不能被大量部署的一个原因,但是由于3.0以后的redis支持了集群功能,redis就开始大量的替代之前的memcached,今天我从源代码层次学习下redis是怎么实现集群功能的.