redis cluster 集群拓展
redis cluster 集群拓展
准备工作
举例:添加2个节点(1主7006节点,1从7007节点)
在/home/redis-cluster下生成conf和data目标,并生成配置信息
`; do \
mkdir -p ./${port}/conf \
&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
&& mkdir -p ./${port}/data; \
done
共生成2个文件夹,从7006到7007,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件
创建redis容器
`; do \
docker run -d -ti -p ${port}:${port} -p ${port}:${port} \
-v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /home/redis-cluster/${port}/data:/data \
--restart always --name redis-${port} --net redis-net \
--sysctl net.core.somaxconn= redis redis-server /usr/local/etc/redis/redis.conf; \
done
新生成2个redis容器
添加节点
启动ruby容器
docker run -tdi --rm --net redis-net ruby
进入容器
docker exec -it a3e0f3502f78(容器ID) /bin/bash
执行命令
gem install redis wget http://download.redis.io/redis-stable/src/redis-trib.rb
将节点添加到集群
添加主节点
ruby redis-trib.rb add-node
注释:192.168.1.199:7006 新增的节点
192.168.1.199:7005 集群任一个旧节点
添加从节点
ruby redis-trib.rb add-node --slave --master-id ad07845aed1ef6d983846909ada8b42282e3748c
注释:- -slave 表示添加的是从节点
- -master-id ad07845aed1ef6d983846909ada8b42282e3748c 主节点的node id 在这里是前面新添加的7006的node id
192.168.1.199:7007 新节点
192.168.1.199:7005 集群任一个旧节点
查看7006节点的id
ruby redis-trib.rb check

现在添加的主节点是没有slots的,必须分配slots
分配slots
ruby redis-trib.rb reshard How many slots to )? //设置slot数2000 What is the receiving node ID? ad07845aed1ef6d983846909ada8b42282e3748c //新节点node id 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 #:all //表示全部节点重新洗牌 Do you want to proceed with the proposed reshard plan (yes/no)? yes //确认重新分
注:主节点如果没有slots的话,存取数据就都不会被选中
查看一下,集群情况
ruby redis-trib.rb check
至此,新添加的两个节点可以再集群内正常使用
删除节点
(该操作是在上面启动好的ruby容器内做的)
1,删除从节点
redis-trib.rb del-node '9c240333476469e8e2c8e80b089c48f389827265'
2,删除主节点
如果主节点有从节点,将从节点转移到其他主节点
如果主节点有slot,去掉分配的slot,然后在删除主节点
ruby redis-trib.rb reshard //取消分配的slot,下面是主要过程 How many slots to )? //被删除master的所有slot数量 What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收7006节点slot的master 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 #:ad07845aed1ef6d983846909ada8b42282e3748c //被删除master的node-id Source node #:done Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot后,reshard
新增master节点后,也进行了这一步操作,当时是分配,现在去掉。反着的。
redis-trib.rb del-node 'ad07845aed1ef6d983846909ada8b42282e3748c'
新的master节点被删除了
redis cluster 集群拓展的更多相关文章
- Redis Cluster集群搭建与配置
Redis Cluster是一种服务器sharding分片技术,关于Redis的集群方案应该怎么做,请参考我的另一篇博客http://www.cnblogs.com/xckk/p/6134655.ht ...
- jedis处理redis cluster集群的密码问题
环境介绍:jedis:2.8.0 redis版本:3.2 首先说一下redis集群的方式,一种是cluster的 一种是sentinel的,cluster的是redis 3.0之后出来新的集群方式 本 ...
- 深入分析redis cluster 集群
深入分析redis cluster 集群安装配置详解 下面小编来为各位介绍一篇深入分析redis cluster 集群安装配置详解,如果你希望做数据库集群就可以来看看此文章的哦. http://rub ...
- Redis Cluster集群搭建与应用
1.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper,但从redis 3.0之后版本支持redis-cluster集群,redis-cluster采用无中心结 ...
- Redis Cluster集群主从方案
本文介绍一种通过Jedis和Cluster实现Redis集群(主从)的高可用方案,该方案需要使用Jedis2.8.0(推荐),Redis3.0及以上版本(强制). 附:Redis Cluster集群主 ...
- CentOS7 安装Redis Cluster集群
上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...
- Redis Cluster集群架构实现(四)--技术流ken
Redis集群简介 通过前面三篇博客的介绍<Redis基础认识及常用命令使用(一)--技术流ken>,<Redis基础知识补充及持久化.备份介绍(二)--技术流ken>,< ...
- 【精】搭建redis cluster集群,JedisCluster带密码访问【解决当中各种坑】!
转: [精]搭建redis cluster集群,JedisCluster带密码访问[解决当中各种坑]! 2017年05月09日 00:13:18 冉椿林博客 阅读数:18208 版权声明:本文为博主 ...
- redis cluster集群web管理工具 relumin
redis cluster集群web管理工具 relumin 下载地址 https://github.com/be-hase/relumin 只支持redis cluster模式 java环境 tar ...
随机推荐
- Eclipse工具
1 ArrayList的常见方法 * a: add(参数) 向集合中添加元素 * b: get(int index) 取出集合中的元素,get方法的参数,写入索引 * c: size() 返回集合的长 ...
- CSS 中的 px、em、rem 和 vh
区分 px:Pixel.像素. em:相对长度单位.继承父级元素的 font-size,值是相对于父级元素font-size的倍数. rem:Root em.相对于根元素(即 <html> ...
- redis系列:基于redis的分布式锁
一.介绍 这篇博文讲介绍如何一步步构建一个基于Redis的分布式锁.会从最原始的版本开始,然后根据问题进行调整,最后完成一个较为合理的分布式锁. 本篇文章会将分布式锁的实现分为两部分,一个是单机环境, ...
- Java中方法next()和nextLine()的区别
原创 Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,区别: next()不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到 ...
- 苹果微信内置浏览器cookie
苹果微信内置浏览器cookie会被自动清掉,但safari不会清除,原因还未找到,解决方法是把前端把数据通过header传到后台
- Asp.net负载均衡之Session
在WEB场中,动态网页往往会因为几台主机做了负载而产生SESSION丢失的问题,网上也有很多的介绍,我这里只将我经历的过程给大家分享一下: 系统要运行在负载平衡的 Web 场环境中,而系统配置文件we ...
- 十七、创建一个 WEB 服务器(一)
1.Node.js 创建的第一个应用 var http=require("http") http.createServer(function (req,res) { res.wri ...
- 【01】循序渐进学 docker:到底是啥
写在前面的话 首先说一下,我本身是做运维的,4 年工作,多家公司.所以可能接下来谈到的更多的是一些在工作过程中积累的个人看法.且有些并不具备普遍性,有不合适的地方,全当我在吹牛逼就行. 一开始我们得谈 ...
- C# LINQ(5)
目前都是说的单数据差距,如果多数据进行查询LINQ该如何呢? 那么LINQ就应该使用关键字 join on equals 现有代码: static void Main(string[] args) { ...
- winform datagridview数据显示不全
如果是内容是汉字,列的宽度设置不够时会自动换行,如果是数字和字母,是不会自动换行的,要把列宽设得足够,整个表格显示不全时,下面会有横向滚动条,如果看不见可能是高度超出了母控件的高度,设得低点就看见了