安装redis所需环境
yum install -y gcc-c++
 yum install -y wget
创建文件夹
cd /
mkdir redis/redis-cluster/7001
cd redis/redis-cluster
mkdir 7002 7003 7004 7005 7006 7007 7008
 
下载redis压缩包并解压安装
wget https://download.redis.io/redis-stable.tar.gz 
tar -zxvf redis-stable.tar.gz
# 安装redis
cd redis-stable
make install PREFIX=/redis/redis-cluster/7001
#拷贝配置文件
cp ./redis.conf /redis/redis-cluster/7001
cd /redis/redis-cluster/7001
vi  redis.conf
 
修改配置 将下面几个参数修改
#bind 0.0.0.0 #允许访问的ip
 #protected-mode no #保护模式
 #port 7001 #运行端口
 #daemonize yes #后台启动
 #cluster-enabled yes #开启集群
#运行测试
./redis-server redis.conf 
#客户端连接进行操作
./redis-cli -h 127.0.0.1 -p 7001
 
集群搭建三主三从

开始复制配置好的7001文件夹下的文件
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7002
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7003
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7004
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7005
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7006
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7007
cp -r /redis/redis-cluster/7001/* /redis/redis-cluster/7008
 
复制完成后修改对应的端口
创建启动脚本进行启动
vi start.sh
 
内容
cd 7001/bin
./redis-server redis.conf
cd ..
cd ..
cd 7002/bin
./redis-server redis.conf
cd ..
cd ..
cd 7003/bin
./redis-server redis.conf
cd ..
cd ..
cd 7004/bin
./redis-server redis.conf
cd ..
cd ..
cd 7005/bin
./redis-server redis.conf
cd ..
cd ..
cd 7006/bin
./redis-server redis.conf
cd ..
cd ..
 
授权
chmod u+x start.sh
 
启动
./start.sh
 
查看有无启动成功
ps -ef | grep redis
 

创建redis集群时redis里不要数据
进入到一个redis,bin目录下执行命令
注意ip一定不能用127.0.0.1 不然外部无法重定向访问集群 cluster-replicas后面的1表示一个主机有几个从机 因为现在只有一个因此是1 工作中根据具体从机数
演示:
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
 

命令客户端连接集群并使用
注意:-c表示以redis集群方式进行连接
./redis-cli -h 127.0.0.1 -p 7001 -c
 
查看集群状态
 cluster info
 查看集群中的节点
 cluster nodes

添加数据看看

 由图可以知道我们存放的key:001根据crc16算法算出值然后对16384取余算出的值恰好落在分配到7001的槽中,所以就存放到7001中。我们去7002进行获取的时候。会重定向到7001中进行获取。
交互流程图

集群扩容
数据迁移
 1.新节点加入
 2.节点下线
 3.负载不均衡需要调整slot分别
 
添加7007节点作为新节点,并启动
启动7007节点 进入bin目录进行启动
./redis-server redis.conf
 
申请加入集群
添加节点7007去meet7001申请加入集群
./redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001
 

 查看是否加入集群
 cluster nodes
 
 已经连接但没有分配hash槽
 第一步:对该节点进行hash槽分配,这样该主节点才可以存储数据
./redis-cli --cluster reshard 127.0.0.1:7007
 
reshard分配hash槽 后面跟上ip和端口 给某个节点分配
 
第二步:输入要分配槽的数量
 
 第三步:输入接收槽的节点id
 
 根据自己机器上的7007的id进行填写
 
 第四步:输入源节点id输入all完工
 第五步:输入yes开始移动槽到目标节点id
 第六步:查询节点
 cluster nodes
 
 添加7008从节点,将7008作为7007的从节点 首先启动7008
./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -cluster-master-id 主节点id
./redis-cli --cluster add-node 127.0.0.1:7008 127.0.1.1:7007 --cluster-slave --cluster-master-id 8a91a546a42b897bf72487105aae756c08589fa1
 

 查看集群节点 7007 7008均已上线
集群缩容
缩容命令
./redis-cli --cluster del-node 127.0.0.1:7008 8a91a546a42b897bf72487105aae756c08589fa1
 
注意:删除已经占有的hash槽的节点会失败,必须先分出去 否则报错如下:
 [ERR] Node 127.0.0.1:7008 is not empty! Reshard data away and try again.
 开始hash槽重新分配—参考上面hash槽分配步骤
./redis-cli --cluster reshard 127.0.0.1:7008
 

 *** The specified node (8969be5eb5ac8fd1cf5965a2b2f6d431300b0552) is not known or not a master, please retry.
 当出现这个错误代表要删除的节点不是master节点重新主节点7007
 注意要点:在重新分配槽根据当前节点的槽的数量一致,不然执行不成功
 
 再次删除7007删除成功
 
 如果需要新节点–按照集训扩展章节操作即可。


















