Redis 3.0集群(二)

Redis 3.0集群(一)中讲了Redis集群的基本搭建。这一节主要讲对Redis集群的操作。

添加Master节点到集群

  • 按照Redis集群一的方式,创建端口为7006的新实例,并启动该实例
  • 将7006添加到集群:
redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000

node:新节点没有包含任何数据, 因为它没有包含任何slot。新加入的加点是一个主节点, 当集群需要将某个从节点升级为新的主节点时, 这个新节点不会被选中。

  • 给新节点分配哈希槽:
redis-trib.rb reshard 127.0.0.1:7000
#根据提示选择要迁移的slot数量(ps:这里选择500)
How many slots do you want to move (from 1 to 16384)? 500
#选择要接受这些slot的node-id
What is the receiving node ID? f51e26b5d5ff74f85341f06f28f125b7254e61bf
#选择slot来源:
#all表示从所有的master重新分配,
#或者数据要提取slot的master节点id,最后用done结束
Please enter all the source node IDs.
  Type ‘all‘ to use all the nodes as source nodes for the hash slots.
  Type ‘done‘ once you entered all the source nodes IDs.
Source node #1:3375be2ccc321932e8853234ffa87ee9fde973ff
Source node #2:done
#打印被移动的slot后,输入yes开始移动slot以及对应的数据.
#Do you want to proceed with the proposed reshard plan (yes/no)? yes
#结束
  • 查看操作结果:
redis-cli -c -p 7000
cluster nodes

可以看到返回的集群信息中,7006拥有了0-999哈希槽。

添加Slave节点到集群

  • 按照Redis集群一的方式,创建端口为7007的新实例,并启动该实例
  • 将7007添加到集群:
redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7000
  • 设置为7006的slave:
redis-cli -c -p 7007
#参数为master节点的ID
cluster replicate 2b9ebcbd627ff0fd7a7bbcc5332fb09e72788835

删除一个Slave节点

#redis-trib del-node ip:port ‘<node-id>‘  
redis-trib.rb del-node 127.0.0.1:7007 ‘c7ee2fca17cb79fe3c9822ced1d4f6c5e169e378‘

删除一个Master节点

删除master节点之前首先要使用reshard移除master的全部slot,然后再删除当前节点(目前只能把被删除master的slot迁移到一个节点上)

redis-trib.rb reshard 127.0.0.1:7006
#根据提示选择要迁移的slot数量(ps:这里选择500)
How many slots do you want to move (from 1 to 16384)? 500
#选择要接受这些slot的node-id
What is the receiving node ID? f51e26b5d5ff74f85341f06f28f125b7254e61bf
#选择slot来源:
#all表示从所有的master重新分配,
#或者数据要提取slot的master节点id,最后用done结束
Please enter all the source node IDs.
  Type ‘all‘ to use all the nodes as source nodes for the hash slots.
  Type ‘done‘ once you entered all the source nodes IDs.
Source node #1:3375be2ccc321932e8853234ffa87ee9fde973ff
Source node #2:done
#打印被移动的slot后,输入yes开始移动slot以及对应的数据.
#Do you want to proceed with the proposed reshard plan (yes/no)? yes
#结束

#删除空master节点
redis-trib.rb del-node 127.0.0.1:7006 ‘c7ee2fca17cb79fe3c9822ced1d4f6c5e169e378‘
时间: 2024-11-05 22:41:55

Redis 3.0集群(二)的相关文章

linux Redis 5.0集群搭建

文档结构如下: Redis cluster 是redis的分布式解决方案,在3.0版本正式推出后,有效的解决了redis分布式方面的需求:当遇到单机内存,并发,流量等瓶颈是,可以采用cluster架构方案达到负载均衡的目的. 官方网站: https://redis.io/topics/cluster-tutorial Redis数据分区 Redis cluster 采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式: Slot=CRC16(key)&16384.每个节点负

redis 5.0 集群搭建

今天主要分享一下 redis 3主3从 集群的搭建过程.redis经常用来做缓存,可以提升读取数据的速度,数据都是存在内存中的,采用 RDB 或者 AOF 持久化存储后便可以实时落地到硬盘.本次主要是3主3从.架构原理如下: 题图:来自于网络 图片中的每一个圆圈都代表一台服务器.客户端访问任何一台服务器便可以连通任何服务器.当老的主节点也就是 master 节点挂掉时,会进行重新选举,当半数以上的 master 节点投票出现失败状态时(也就是和该故障matser连不通),就会认为该 master

Redis 3.0集群(一)

概述 这里只记录操作步骤和集群测试,保证快速搭建集群环境.具体原理请查阅官方文档(中文版): http://redisdoc.com/topic/cluster-tutorial.html http://redisdoc.com/topic/cluster-spec.html 准备工作 下载并编译redis 创建6个以端口号为名字的目录,7000~7005,修改redis.conf的端口号 修改配置: cluster-enabled yes cluster-config-file nodes-6

redis 3.0 集群__配置文件详解(常用配置)

参考文档 http://www.cnblogs.com/huangjacky/p/3700473.html http://www.cnblogs.com/cxd4321/archive/2012/12/14/2817669.html http://running.iteye.com/blog/2065351 1 #引用其他配置文件 2 # include /path/to/local.conf 3 # include /path/to/other.conf 4 #是否daemon运行no,yes

Redis3.0集群crc16算法php客户端实现方法(php取得redis3.0集群中redis数据所在的redis分区插槽,并根据分区插槽取得分区所在redis服务器地址)

数据分区        Redis集群将数据分区后存储在多个节点上,即不同的分区存储在不同的节点上,每个节点可以存储多个分区.每个分区在Redis中也被称为"hash slot",Redis集群中总共规划了16384个分区. 例如:当集群中有3个节点时,节点A将包含0-5460分区,节点B将包含5461-10922分区,节点C将包含10923-16383分区. 每个key将会存储到一个唯一的分区中,每个分区其实就是一组key的集合,两者对应关系为:key的CRC16校验码%16384=

Redis发布了集群版3.0.0 beta

Redis不是比较成熟的Memcache或者Mysql的替代品,是对于大型互联网类应用在架构上很好的补充.现在有越来越多的应用也在纷纷基于Redis做架构的改造. Redis已经发布集群版3.0.0beta,相信在不久的将来就会出稳定版本. redis cluster 集群规范 安装 Redis集群版3.0.0beta版的功能介绍如下: This is the first beta of Redis 3.0.0. Redis 3.0 features support for Redis Clus

Redis中sentinel集群的搭建和Jedis测试 图文教程[二]

在Redis中sentinel集群的搭建和Jedis测试 图文教程[一] 中已经写了Redis中sentinel集群的搭建和测试,这一章主要写Redis中sentinel的Jedis测试. 一般sentinel架构图为至少4台机子测试 我这里测试的时候只用两台机子,一台跑Redis-Sentinel和所有的Redis master-slave,一台跑java测试程序. xserver.ini为项目工程的配置文件 [Redis] REDIS_NUMBERS=3 REDIS_SERVER_1=tcp

Redis中sentinel集群的搭建和Jedis测试 图文教程[三]

在前两篇Redis中sentinel集群的搭建和Jedis测试 图文教程[一] 和Redis中sentinel集群的搭建和Jedis测试 图文教程[二] 中分别简述了Redis中sentinel集群的搭建和Java代码的Jedis测试. 这篇主要来简单分析一下Redis-sentinel集群的原理,根据追踪sentinel信息来完成Redis-sentinel集群测试中的详细的原理分析.包括master-slave各个中的sentinel信息的分析,failover过程,master宕机后的le

Redis3.0集群方案分析

在Redis3.0集群出来之前,大家都对作者antirez寄予厚望,因为Redis从来没有让我们失望过.现在Redis3.0集群出来了,网上出了很多评论文章,都说他的功能多么强大,包括下面这张图是彻底把我欺骗了. 等到我把Redis3.0客户端库hiredis编译好集成到公司系统,访问其中一台Redis3.0服务器居然返回"MOVED 2318 10.12.8.156:6379",这才了解到访问其他Redis3.0服务器的Key需要二次定位,这就是Redis3.0所谓的ASK 转向/M