一、集群搭建

RedisCluster最少需要三台主服务器,三台从服务器
	端口号分别为:7001~7006
	其中7001 7002 7003为主,7004 7005 7006为从
	这里伪集群在一个服务器里搭建
  1. 创建7001实例
mkdir redis-cluster/7001 -p
cd redis-cluster/
mkdir 7002 7003 7004 7005 7006
  1. 解压redis,安装
cd redis-5.0.10/src/
make install PREFIX=/usr/local/redis-cluster/7001/
cd ../
cp redis.conf /usr/local/redis-cluster/7001/bin/
cd /usr/local/redis-cluster/7001/bin/
  1. 编辑redis.conf文件,修改port为7001
#注释bind 127.0.0.1
#bind 127.0.0.1
#修改
protected-mode no
port 7001
daemonize yes
#放开注释cluster-enabled yes
cluster-enabled yes
  1. 复制7001,创建7002~7006实例,注意端口修改
cd ../../
cp -r 7001/* 7002/
cp -r 7001/* 7003/
cp -r 7001/* 7004/
cp -r 7001/* 7005/
cp -r 7001/* 7006/

vim 7002/bin/redis.conf
port 7002
vim 7003/bin/redis.conf
port 7003
vim 7004/bin/redis.conf
port 7004
vim 7005/bin/redis.conf
port 7005
vim 7006/bin/redis.conf
port 7006
  1. 创建start.sh,启动所有的实例
vim start.sh

#写入脚本
cd 7001/bin
./redis-server redis.conf
cd ../../

cd 7002/bin
./redis-server redis.conf
cd ../../

cd 7003/bin
./redis-server redis.conf
cd ../../

cd 7004/bin
./redis-server redis.conf
cd ../../

cd 7005/bin
./redis-server redis.conf
cd ../../

cd 7006/bin
./redis-server redis.conf
cd ../../
  1. 赋写和执行的权限
chmod u+x start.sh
./start.sh

redis code 集群重启 redis集群重新搭建_vim

  1. 创建Redis集群(创建时Redis里不要有数据)
    cluster-replicas : 1主1从机 前三个为主
    最后的1表示备份一份,因为一主对应一从
cd 7001/bin/
./redis-cli --cluster create 192.168.200.136:7001 192.168.200.136:7002 192.168.200.136:7003 192.168.200.136:7004 192.168.200.136:7005 192.168.200.136:7006 --cluster-replicas 1

redis code 集群重启 redis集群重新搭建_redis code 集群重启_02

  1. 查看
cat nodes.conf

redis code 集群重启 redis集群重新搭建_vim_03

  1. 连接集群
    连接:
./redis-cli -h 127.0.0.1 -p 7001 -c

注意:-c 表示是以redis集群方式进行连接

测试:

redis code 集群重启 redis集群重新搭建_redis_04


查看集群状态

cluster info

redis code 集群重启 redis集群重新搭建_redis_05


查看节点:

cluster nodes

redis code 集群重启 redis集群重新搭建_结点_06

二、扩容

  1. 添加主节点 7007
mkdir 7007

redis code 集群重启 redis集群重新搭建_结点_07

cd /root/redis-5.0.10/src/
 make install PREFIX=/usr/local/redis-cluster/7007
 cd /usr/local/redis-cluster/
 cp /root/redis-5.0.10/redis.conf /usr/local/redis-cluster/7007/bin/

编辑redis.conf

# 将daemonize由no改为yes 
daemonize yes 
# 注释掉bind 127.0.0.1 
# bind 127.0.0.1 
# 是否开启保护模式,由yes该为no 
protected-mode no
#解开cluster-enabled yes的注释
cluster-enabled yes
  1. 启动7007
cd ../../
cd 7007/bin/
./redis-server redis.conf
  1. 将7007加入集群
./redis-cli --cluster add-node 192.168.200.136:7007 192.168.200.136:7001

redis code 集群重启 redis集群重新搭建_redis code 集群重启_08


查看

./redis-cli -h 127.0.0.1 -p 7001
cluster nodes

redis code 集群重启 redis集群重新搭建_结点_09

  1. hash槽重新分配(数据迁移)
./redis-cli --cluster reshard 192.168.200.136:7007

redis code 集群重启 redis集群重新搭建_redis code 集群重启_10


这里要输入分槽数(1~16384),这里用3000做演示

接着会提示What is the receiving node ID?

这里输入7007的id,在上面的查看这一步cluster nodes可以查看7007的id

redis code 集群重启 redis集群重新搭建_vim_11


接着会提示:

redis code 集群重启 redis集群重新搭建_vim_12


这里输入all

之后有提示则yes

完成后查看

cat nodes.conf

redis code 集群重启 redis集群重新搭建_redis code 集群重启_13


可与i看到7007已经分配好槽了

  1. 创建7008,添加7008从结点,将7008作为7007的从结点
cd ../../
cp -r 7007 7008

编辑redis.conf

cd 7008/bin/
vim redis.conf
#修改port为7008
port 7008
  1. 启动7008
./redis-server redis.conf
  1. 添加从节点7008
#./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -- cluster-master-id 主节点id
./redis-cli --cluster add-node 192.168.200.136:7008 192.168.200.136:7007 --cluster-slave --cluster-master-id e19bc34e78f6f03f91fd096916d1480b2c13a98d

redis code 集群重启 redis集群重新搭建_redis_14


查看

./redis-cli -p 7008 -c
cluster nodes

redis code 集群重启 redis集群重新搭建_redis_15

三、缩容

删除已经占有hash槽的结点会失败
	需要将该结点占用的hash槽分配出去
./redis-cli --cluster del-node 192.168.200.136:7008 9e2fd2c696ee5daffac8a77ca5dc2ee2ad53b7b3