Redis集群搭建步骤

手动创建6个Redis实例

1.在/usr/local/redis 5.0.5/目录创建目录cluster ,然后在它下面创建7001至7006六个文件夹

2.在六个文件夹下新建redis.conf文件,内容如下:
port 7001
cluster- enabled yes
cluster- config-file nodes. conf
cluster- node -t imeout 5000
appendonly yes
daemonize yes
#bind 0.0.0.0
protected-mode no

端口分别是7001、7002、 7003、 7004、 7005、 7006
3.把redis-server和redis -cli两个脚本复制到7001到7006的文件夹下
4.分别进入六个文件夹,启动6个redis实例:
./redis-server ./redis.conf
5.安装ruby和redis库(原来的Redis3.x)
yum install ruby -y
6.使用这6个redis实例来创建集群: (只需要在一 台机器上执行即可)

, /redis-cli --cluster create 192.168.72.128:7001 192.168.72.128:7002
192.168.72.128: 7003
192.168.72.128: 7004
192.168.72.128:7005
192.168.72.128: 7006 --cluster-replicas 1
注:在原来1旧版本使用如下命令创建集群:
./redis-trib.rb create - - replicasτ 1
192.168.230.128: 7001
192. 168.230.128: 7002
192.168.230.128:7003 192.168.230.128:7004 192.168.230.128:7005 192.168.230.128: 7006
这个命令用于创建一个新的集群, 选项--replicas 1表示我们希望为集群中的每
个主节点创建一个从节点。
之后跟着的其他参数则是这个集群实例的地址列表, 3个master及3个slave ,
redis- cli会输出一份预想中的配置信息给你,如果你觉得没问题的话,则可以
输入yes ,redis -cli就会将这份配置应用到集群当中让各个节点开始互相通讯,

最后可以得到如下信息:
[OK] AlI 16384 slots covered
这表示集群中的16384个槽都有至少一个主节点在处理 ,集群运作正常;

测试Redis Cluster
测试Redis 集群比较简单的办法就是使用redis-cliy, 接下来我们将使用

redis-cli为例来进行演示;

通过redis-cli客户端连接上任意的一个主redis , 执行命令:
./redis-cli -c -p 7001
redis-cli启动时,加-c选项表示集群模式去连redis ,-p表示端口;
比如执行: set k1 v1
key落到别的槽, redis-cli 会转发给别的槽去执行;
只有master会分配槽, slave 是没有槽的, slave复制它的master ;

查看槽位分配:
./redis-cli --cluster check 127.0.0.1:7001
./redis-trib.rb check 127.0.0.1:7000

从图可看出,Redis 集群16384个槽位只对master分配不对slave分配,slave
只复制master ,不写数据;
./redis-cli -c -p 7001 cluster nodes

CLUSTER NODES命令的输出看起来有点复杂,其实他非常的简单,含义如下:
节点ID

IP:端口
标志: master, slave, myself, fail, ...
如果是个从节点,这里是它的主节点的NODE ID
集群最近一-次向节点发送PING 命令之后,过去了多长时间还没接到回复。
节点最近一次返回PONG回复的时间。
节点的配置纪元( configuration epoch ) :详细信息请参考Redis 集群规范。

本节点的网络连接情况:例如connected 。
节点目前包含的槽:例如127.0.0.1:7001 目前包含号码为5960至10921的
哈希槽。
停掉一个主节点后,会提升一个从为主节点,再次启动,将沦为从,我们这里是
把7001停掉后,再次启动的情况。
./redis-cli -c -p 7001 cluster nodes

从这里可以看出, 7001成了slave ,它的master是7003
./redis-cli -p 7q01 debug segfault
可以使用debug segfault 命令,让某端口的节点崩溃;
添加一个主节点
启动新的7007节点,使用的配置文件和以前的一-样只要把端口号改- - 下即可。

过程如下:
1、进入redis-cluster目录,创建7007文件夹,把以前的redis.conf拷贝- -份
过来,改下端口;
2、进入7007目录,启动7007实例./redis-server ./redis.conf
3、./redis-cli --cluster add-node 192.168.72.128:7007 192.168.72.128:7003
参数1是要添加的节点,参数2是集群中任意一个主节点

新节点现在已经连接上了集群,成为集群的一份子,并且可以对客户端的命令
请求进行转向了,但是和其他主节点相比,新节点还有两点区别:
新节点没有包含任何数据,因为它没有包含任何哈希槽.
尽管新节点没有包含任何哈希槽,但它仍然是一个主节点 ,所以在集群需要将
某个从节点升级为新的主节点时,这个新节点不会被选中。
接下来,只要使用redis-cli 程序,将集 群中的某些哈希槽移动到新节点里
面,新节点就会成为真正的主节点了。

集群重新分片(分配hash槽)
重新分片操作基本上就是将某些节点上的哈希槽移动到另外一些节点上面,和
创建集群一样,重新分片也可以使用redis-cli 程序来执行执行以下命令可
以开始一次重新分片操作:
./redis-cli --cluster reshard 192.168. 72.128:7003

192.168.72.128:7003是集群中任意一个节点 ;

1.程序提问想移动多少个槽(从0到16384)?
我们原来是3个master ,后面添加一个master 7007 ,就是四个master了。
16384个槽4个节点分, 是4096个,我们这里输入4096表示想移动的槽的个

2.程序问我们要把移动的槽给哪个节点,要求输入节点ID。
去另外的客户端用./redis-cli -p 7003 cluster nodes查看各节点, 7007的ID
是9afb06335f007d6b00866dacdd5945af754bf9c3 ,拷贝粘贴过来;
3.问我们从哪些节点分哈希槽过来,输入all表示全部节点。
4.然后会提示: Do you want to proceed with the proposed reshard plan

(yes/no)? --输入yes
5.在重新分片结束后你可以通过如下命令检查集群状态:
./redis-cli -p 7003 cluster nodes

原文地址:https://www.cnblogs.com/dreamrobot/p/13337465.html