天道酬勤,学无止境

redis cluster

(二十一)高并发redis学习笔记:搭建redis cluster集群

文章目录1、redis cluster的重要配置2、在三台机器上启动6个redis实例 前提我们之前已经搭建过主从架构,在A,B上都部署redis并且启动了开机启动,A是主节点,B是从节点,同时我们在A,B,C上都部署了哨兵。那么我们需要先停掉之前所有的实例。三个机器都要搞一下 redis cluster: 自动,master+slave复制和读写分离,master+slave高可用和主备切换,支持多个master的hash slot支持数据分布式存储。1、redis cluster的重要配置主要有以下重要的配置:cluster-enabledcluster-config-file:这是指定一个文件,供cluster模式下的redis实例将集群状态保存在那里,包括集群中其他机器的信息,比如节点的上线和下限,故障转移,不是我们去维护的,给它指定一个文件,让redis自己去维护的 cluster-node-timeout:节点存活超时时长,超过一定时长,认为节点宕机,master宕机的话就会触发主备切换,slave宕机就不会提供服务2、在三台机器上启动6个redis实例redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave,最少的要求。正式环境下

2021-05-18 11:39:40    分类:博客    redis   redis cluster

Redis Cluster服务平台化之路

1. Redis架构的方案经历阶段1.1. 客户端分片image.png客户端分片:优点不依赖于第三方中间件,实现方法和代码自己掌控,可随时调整这种分片机制的性能比代理式更好(少了一个中间分发环节)可控的分发请求,分发压力落在客户端,无服务器压力增加缺点不能平滑的水平扩展节点,扩容/缩容时,必须手动调整分片程序出现故障,不能自动转移,运维性很差客户端得自己维护一套路由算法升级复杂1.2. Twemproxyimage.pngTwemproxy:优点运维成本低。业务方不用关心后端Redis实例,跟操作Redis一样Proxy 的逻辑和存储的逻辑是隔离的缺点代理层多了一次转发,性能有所损耗进行扩容/缩容时候,部分数据可能会失效,需要手动进行迁移,对运维要求较高,而且难以做到平滑的扩缩容出现故障,不能自动转移,运维性很差升级复杂1.3. Redis Clusterimage.pngRedis Cluster:优点无中心节点数据按照Slot存储分布在多个Redis实例上平滑的进行扩容/缩容节点自动故障转移(节点之间通过Gossip协议交换状态信息,进行投票机制完成Slave到Master角色的提升)降低运维成本,提高了系统的可扩展性和高可用性缺点严重依赖外部Redis-Trib缺乏监控管理需要依赖Smart Client(连接维护, 缓存路由表, MultiOp和Pipeline支持

2021-05-13 12:37:59    分类:博客    redis cluster

Redis Cluster 原理分析

这次主要是给大家分享的提纲如下:1.简介2.集群通信3.数据分布及槽信息4.数据迁移5.通信故障1.简介继上次分享的Redis服务平台化之路,这次着重来分享下Redis Cluster浅析,欢迎大家互相多交流学习。Redis Cluster是一个高性能高可用的分布式系统。由多个Redis实例组成的整体,数据按照Slot存储分布在多个Redis实例上,通过Gossip协议来进行节点之间通信。Redis Cluster功能特点如下:1)所有的节点相互连接2)集群消息通信通过集群总线通信,,集群总线端口大小为客户端服务端口+10000,这个10000是固定值3)节点与节点之间通过二进制协议进行通信4)客户端和集群节点之间通信和通常一样,通过文本协议进行5)集群节点不会代理查询6)数据按照Slot存储分布在多个Redis实例上7)集群节点挂掉会自动故障转移8)可以相对平滑扩/缩容节点2.集群通信2.1 CLUSTER MEET需要组建一个真正的可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群。连接各个节点的工作使用CLUSTER MEET命令来完成。CLUSTER MEET <ip> <port>CLUSTER MEET命令实现:1)节点A会为节点B创建一个clusterNode结构,并将该结构添加到自己的clusterState.nodes字典里面。2

2021-05-13 12:33:52    分类:博客    redis cluster

Redis Cluster 的数据分片机制

Redis 集群简介Redis Cluster 是 Redis 的分布式解决方案,在 3.0 版本正式推出,有效地解决了 Redis 分布式方面的需求。Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点。三个主节点会分配槽,处理客户端的命令请求,而从节点可用在主节点故障后,顶替主节点。图片来源 redislabs如上图所示,该集群中包含 6 个 Redis 节点,3主3从,分别为M1,M2,M3,S1,S2,S3。除了主从 Redis 节点之间进行数据复制外,所有 Redis 节点之间采用 Gossip 协议进行通信,交换维护节点元数据信息。一般来说,主 Redis 节点会处理 Clients 的读写操作,而从节点只处理读操作。数据分片策略分布式数据存储方案中最为重要的一点就是数据分片,也就是所谓的 Sharding。为了使得集群能够水平扩展,首要解决的问题就是如何将整个数据集按照一定的规则分配到多个节点上,常用的数据分片的方法有:范围分片,哈希分片,一致性哈希算法和虚拟哈希槽等。范围分片假设数据集是有序,将顺序相临近的数据放在一起,可以很好的支持遍历操作。范围分片的缺点是面对顺序写时,会存在热点。比如日志类型的写入,一般日志的顺序都是和时间相关的,时间是单调递增的,因此写入的热点永远在最后一个分片

2021-05-13 11:02:26    分类:博客    redis cluster

与亲生的Redis Cluster,来一次亲密接触

更多精彩文章。《微服务不是全部,只是特定领域的子集》《“分库分表" ?选型和流程要慎重,否则会失控》这么多监控组件,总有一款适合你《使用Netty,我们到底在开发些什么?》《这可能是最中肯的Redis规范了》《程序员画像,十年沉浮》最有用系列:《Linux生产环境上,最常用的一套“vim“技巧》《Linux生产环境上,最常用的一套“Sed“技巧》《Linux生产环境上,最常用的一套“AWK“技巧》如果你认同这些知识,欢迎关注微信公众号小姐姐味道ID:xjjdog笔者曾经维护过上千个redis实例,这些实例采用的简单主从结构,集群方案主要是客户端jar包。刚开始,个人并不是太喜欢redis cluster,因为它的路由实在是太死板,运维复杂。为什么这么说,可以参考之前的一篇文章《现实中的路由规则,可能比你想象中复杂的多》。但官方在推这个东西,注定了它的应用越来越广泛,这在平常的交流中就能够发现。虽然有这样那样的缺点,但总抵挡不了权威推动的浪潮。随着redis cluster越来越稳定,是时候和redis cluster来一次灵魂交流了。简介redis cluster是亲生的集群方案,目前,在高可用和稳定性方面,都有了很大的进步。据统计和观察,采用redis cluster架构的公司和社区越来越多,已经成为事实的标准。它的主要特点就是去中心化,无需proxy代理

2021-04-19 21:19:04    分类:博客    redis cluster   redis

redis cluster集群管理工具redis-trib.rb命令小结-运维笔记

redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。redis-trib.rb是redis作者用ruby完成的。所以要执行redis-trib.rb命令,需要Ruby,具体可参考:http://www.cnblogs.com/kevingrace/p/7846324.html[root@redis-node01 ~]# /data/redis-4.0.6/src/redis-trib.rb Usage: redis-trib <command> <options> <arguments ...> create host1:port1 ... hostN:portN --replicas <arg> check host:port info host:port fix host:port --timeout <arg> reshard host:port --from <arg> --to <arg> --slots <arg> --yes --timeout <arg> --pipeline <arg> rebalance host:port --weight <arg> --auto-weights --use-empty-masters --timeout

2021-04-19 14:50:09    分类:博客    redis cluster

Redis Cluster高可用集群在线迁移操作记录

之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移。由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上。考虑到是线上生产环境,决定在线迁移,迁移过程,不中断服务。操作过程如下:一、机器环境迁移前机器环境 ------------------------------------------------------------------------------- 主机名 ip地址 节点端口 redis-node01 172.16.60.207 7000,7001 redis-node02 172.16.60.208 7002,7003 redis-node03 172.16.60.209 7004,7005 迁移后机器环境 ------------------------------------------------------------------------------- 主机名 ip地址 节点端口 redis-new01 172.16.60.202 7000,7001 redis-new02 172.16.60.204 7002,7003 redis-new03 172.16.60.205 7004,7005二、迁移前redis cluster高可用集群环境部署(这里采用"三主三从

2021-04-19 14:49:41    分类:博客    redis cluster

redis-5.0 cluster带认证及客户端连接

Redis在3.0版正式引入redis-cluster集群这个特性。Redis集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群是一个分布式(distributed)、容错(fault-tolerant)的Redis内存K/V服务,集群可以使用的功能是普通单机Redis所能使用的功能的一个子集(subset),比如Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。还有比如set里的并集(unions)和交集(intersections)操作,就没有实现。通常来说,那些处理命令的节点获取不到键值的所有操作都不会被实现。在将来,用户或许可以通过使用MIGRATE COPY命令,在集群上用计算节点(Computation Nodes) 来执行多键值的只读操作, 但Redis集群本身不会执行复杂的多键值操作来把键值在节点间移来移去。Redis集群不像单机版本的Redis那样支持多个数据库,集群只有数据库0,而且也不支持SELECT命令。Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令。Redis集群的优点:无中心架构,分布式提供服务。数据按照slot存储分布在多个redis实例上

2021-03-27 09:08:42    分类:博客    redis5.0   redis cluster   predus   数据库