redis-cluster集群搭建

安装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-cluster集群搭建_第1张图片

创建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

redis-cluster集群搭建_第2张图片

命令客户端连接集群并使用

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

./redis-cli -h 127.0.0.1 -p 7001 -c

查看集群状态
cluster info
查看集群中的节点
cluster nodes

redis-cluster集群搭建_第3张图片

添加数据看看

redis-cluster集群搭建_第4张图片
由图可以知道我们存放的key:001根据crc16算法算出值然后对16384取余算出的值恰好落在分配到7001的槽中,所以就存放到7001中。我们去7002进行获取的时候。会重定向到7001中进行获取。

交互流程图

redis-cluster集群搭建_第5张图片

集群扩容

数据迁移
1.新节点加入
2.节点下线
3.负载不均衡需要调整slot分别
redis-cluster集群搭建_第6张图片

添加7007节点作为新节点,并启动

启动7007节点 进入bin目录进行启动

./redis-server redis.conf

申请加入集群

添加节点7007去meet7001申请加入集群

./redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001

redis-cluster集群搭建_第7张图片
查看是否加入集群
cluster nodes
在这里插入图片描述
已经连接但没有分配hash槽
第一步:对该节点进行hash槽分配,这样该主节点才可以存储数据

./redis-cli --cluster reshard 127.0.0.1:7007

reshard分配hash槽 后面跟上ip和端口 给某个节点分配
redis-cluster集群搭建_第8张图片

第二步:输入要分配槽的数量
在这里插入图片描述
第三步:输入接收槽的节点id
在这里插入图片描述
根据自己机器上的7007的id进行填写
redis-cluster集群搭建_第9张图片
第四步:输入源节点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

redis-cluster集群搭建_第10张图片
查看集群节点 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

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

你可能感兴趣的:(redis,redis,缓存,数据库)