前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis集群环境中添加和删除节点

Redis集群环境中添加和删除节点

作者头像
林老师带你学编程
发布2018-01-04 10:43:22
1.9K0
发布2018-01-04 10:43:22
举报
文章被收录于专栏:强仔仔强仔仔

上一节中说道如何在window下面安装redis集群,今天给大家介绍一下如何在redis集群环境中添加和删除节点。

首先是配置六个节点,三个为从节点,三个为主节点。

配置信息如下所示:

代码语言:javascript
复制
port 6380      #端口号
loglevel notice     #日志的记录级别,notice是适合生产环境的
logfile "E:/softtools/redis-3.0.1/Logs/redis6380_log.txt"  #指定log的保持路径,默认是创建在Redis安装目录下,如果有
appendonly yes  #数据的保存为aof格式  
appendfilename "appendonly.6380.aof"     #数据保存文件
cluster-enabled yes        #是否开启集群                              
cluster-config-file nodes.6380.conf  
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

总共配置六个这样的文件,每个配置文件的端口地址等都不一样。

进入到redis安装目录之下,输入redis-server ./Logs/redis.6380.conf启动每个节点的服务

接下来就是创建集群:

在redis目录下面执行 gem install --local E:/softtools/redis-3.2.2.gem 命令。显示以下结果接说明安装Ruby成功

然后就可以输入创建节点到集群中的命令了,命令如下所示:

redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

出现这些信息就说明添加成功,系统会让我们是否确定集群,这里我们选择yes

这样redis的集群就搭建完毕了,这里我需要解释一下的是:

这里我没有设置任何的主从redis,为什么就可以自动实现了呢?其实猫腻是在redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385这个命令里面。

replicas 1其实就是设置了主从redis了,这里的1是指是后面所有的redis服务中有一半是主服务一半是从服务。至于谁是主的、谁是从的这个都是随机分配的。

replicas 0就表示设置的节点都是主节点,没有从节点

这样redis集群就已经设置好了,下面开始接受查询节点,添加节点,删除节点的操作

一.查询节点:

首先进入某个节点的客户端中,输入以下命令进入6380节点客户端中,命令:redis-cli -c -p 6380

其中cluster nodes命令就是查看所有节点信息,这里我们可以看到是三个master、三个slave节点。

二.添加节点:

1、首先把需要添加的节点启动

在Logs配置文件目录下面创建redis.6386.conf配置文件,可以复制其它的配置文件,然后修改端口后和其它相应的内容。

配置文件信息如下所示:

代码语言:javascript
复制
port 6386
loglevel notice    
logfile "E:/softtools/redis-3.0.1/Logs/redis6386_log.txt" 
appendonly yes
appendfilename "appendonly.6386.aof"   
cluster-enabled yes                                    
cluster-config-file nodes.6386.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

2.通过上面说到的redis-server ./Logs/redis.6386.conf命令启动该服务

启动好之后会出现aof和conf这两个文件。

3.通过redis-trib.rb add-node 127.0.0.1:6386 127.0.0.1:6380 命令添加到redis集群环境中去。

这里需要注意的是:前面地址是新的添加的节点地址信息,后面是你想要复制的主节点信息,一定要是主节点才可以。

我当时犯了一个错误,就是在写了redis-trib.rb add-node 127.0.0.1:6386这样的命令,然后执行的时候一直报错,因为redis集群,在添加新的节点的时候必须要引用旧的主节点才可以。

然后可以输入cluster nodes查看节点是否添加成功。

从运行结果中可以看到,节点添加是成功的。但是节点还没分配槽给它,此时还不是可使用节点。

这里有两种选择,一种是变成从节点,一种是变成主节点

变成从节点比较简单,不需要重新分配槽。执行redis-cli -c -p 6386 cluster replicate d1feb9c8267f9b82f86db9b95bdc36c1ed28143e 命令就可以了,后面的d1feb9c8267f9b82f86db9b95bdc36c1ed28143e是主节点6380的ID号码

如果想要变成主节点就需要重新分配槽给这个新节点了。

执行 redis-trib.rb reshard 127.0.0.1:6380 命令这个主节点的IP只能是我们上面创建该节点时候跟着的旧节点的IP地址,否则错误。所以这里大家一定要注意。

这里系统会给我们选择移动槽的个数和移动给节点的ID号码,这里我设置的是移动1000,移动给新节点62aff61bb7ee6adb6131c2b0330545fd690b4843

输入all 表示从所有的主节点中随机转移,凑够1000个哈希槽,然后再输入yes,redis集群就开始分配哈希槽了。查看新节点槽分配情况,发现已经添加好了。

三.删除节点:

删除从节点的话,不需要清空槽,直接就可以删除

redis-trib.rb del-node 127.0.0.1:6386 62aff61bb7ee6adb6131c2b0330545fd690b4843

最后一个参数为需要删除节点的ID  

删除主节点的话,就需要先清空槽,然后重新分配给原先创建指定的那个节点,最后才能删除。

第一步先移动槽,上面我们分配给这个节点的槽是1000,这里我们也移动1000

redis-trib.rb reshard 127.0.0.1:6386

后面就是输入要分配给哪个节点的ID,这里我们上面是从6380节点分配过来的,所以我们就分配回去,改节点的ID为:62aff61bb7ee6adb6131c2b0330545fd690b4843,最后系统会让我们确实我们要移除节点的ID,这里我们写62aff61bb7ee6adb6131c2b0330545fd690b4843

最后就可以执行

redis-trib.rb del-node 127.0.0.1:6386 62aff61bb7ee6adb6131c2b0330545fd690b4843

命令来删除节点了,最后一个参数为需要删除的节点ID  

到这边关于redis集群节点的添加就介绍到这边了,如果对上面的内容还有什么疑义或者问题都可以加我QQ:208017534咨询。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年07月11日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档