redis5集群安装

单机

安装

cd /home

wget wget http://download.redis.io/releases/redis-5.0.5.tar.gz

tar xzf redis-5.0.5.tar.gz

cd redis-5.0.5

make & make install

#设置后台运行

vi redis.conf

daemonize yes

#启动

redis-server /home/redis-5.0.5/redis.conf
#测试连接

redis-cli ping

返回 pong 说明连接成功

卸载

#停止服务

redis-cli shutdown

#删除make的时候生成的几个redisXXX的文件

rm -rf /usr/local/bin/redis-*

#删除redis目录

rm -rf /home/redis-5.0.5

集群

安装

创建集群节点

cd /home

mkdir redis-cluster

cd redis-cluster/

mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

mkdir bin

cd bin

cp /usr/local/bin/redis-* .

cd /home

cp redis-5.0.5/redis.conf redis-cluster/9001

修改各节点配置文件选项
先改一个9001节点

cd /home/redis-cluster/9001

vi redis.conf

port 9001(每个节点的端口号) daemonize yes(后台运行) dir
/home/redis-cluster/9001/data/(数据文件存放位置) pidfile
/var/run/redis_9001.pid(pid 9001和port要对应) cluster-enabled yes(启动集群模式)
cluster-config-file nodes-9001.conf(9001和port要对应) cluster-node-timeout
15000 appendonly yes

然后复制redis.conf到其他节点

cp redis.conf ../9002

cp redis.conf ../9003

cp redis.conf ../9004

cp redis.conf ../9005

cp redis.conf ../9006

全局替换端口,在vi命令模式下进行替换

:%s/9001/9002/g

:%s/9001/9003/g

:%s/9001/9004/g

:%s/9001/9005/g

:%s/9001/9006/g

编写集群启动脚本

cd /home/redis-cluster/bin

vi redis-cluster-start.sh

#!/bin/sh

redis-server /home/redis-cluster/9001/redis.conf redis-server
/home/redis-cluster/9002/redis.conf redis-server
/home/redis-cluster/9003/redis.conf redis-server
/home/redis-cluster/9004/redis.conf redis-server
/home/redis-cluster/9005/redis.conf redis-server
/home/redis-cluster/9006/redis.conf

chmod 777 redis-cluster-start.sh

#启动

./redis-cluster-start.sh

#查看启动服务

ps -ef | grep redis

在这里插入图片描述
根据节点创建集群

redis-cli --cluster create 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005 127.0.0.1:9006 --cluster-replicas 1

redis5集群安装_第1张图片

状态检查

redis-cli -c -h 127.0.0.1 -p 9001

cluster info

redis5集群安装_第2张图片

cluster nodes

在这里插入图片描述

redis-cli --cluster info 127.0.0.1:9001

在这里插入图片描述

 redis-cli --cluster check 127.0.0.1:9001

redis5集群安装_第3张图片

关闭集群

redis5提供了关闭集群的工具,在目录 /home/redis-5.0.5/utils/create-cluster下

cd /home/redis-5.0.5/utils/create-cluster

vi create-cluster

#修改port为9000

redis5集群安装_第4张图片

端口PROT设置为9000,NODES为6,工具会自动累加1 生成 9001-9006 六个节点 用于操作.

执行如下命令关闭集群

cd /home/redis-5.0.5/utils/create-cluster

./create-cluster stop

在这里插入图片描述

启动集群

使用之前编写的脚本启动

/home/redis-cluster/bin/redis-cluster-start.sh

删除节点

redis-cli --cluster check 127.0.0.1:9001 # 此命令查看 node id

redis5集群安装_第5张图片
#删除标注的从节点

redis-cli --cluster del-node 127.0.0.1:9004 121566f7bf121584b5e9435ad2b7025835cf7055

在这里插入图片描述

再次check一下,发现节点已经删除了
redis5集群安装_第6张图片

接下来删除一个主节点

redis-cli --cluster del-node 127.0.0.1:9003 1cd54f2a84382a2bbcb9c91563b4ba7fe148f972

在这里插入图片描述

删除失败了,因为主节点不可以直接删除,必须先将slot槽重新移动到其他主节点那里再进行删除,不然存放的数据就丢失了。

#迁移slot

redis-cli --cluster reshard 127.0.0.1:9003

How many slots do you want to move (from 1 to 16384)?  #全部迁出,设置数量值 5461(上图可以查到)

What is the receiving node ID? #迁出到主节点id 235a89e80cc1df2c34332b90909f95bf88409bb3

Please enter all the source node IDs.

Type 'all' to use all the nodes as source nodes for the hash slots. Type 'done' once you entered all the source nodes IDs. Source node #1:
#这里让填写源数据节点,这里是9003的id 1cd54f2a84382a2bbcb9c91563b4ba7fe148f972

Source node #2: done   #输入done表示可以开始生成迁移计划

..........

Do you want to proceed with the proposed reshard plan (yes/no)? yes
#输入yes表示可以开始执行迁移计划

..........

再次check一下,发现槽已经空了
redis5集群安装_第7张图片

这个时候就可以删除9003这个主节点了

redis-cli --cluster del-node 127.0.0.1:9001 1cd54f2a84382a2bbcb9c91563b4ba7fe148f972

在这里插入图片描述

删除成功,再次check一下,9003节点已经没有了
redis5集群安装_第8张图片

新增节点

#基本命令

redis-cli --cluster add-node {新节点IP}:{新节点端口} {任意集群节点IP}:{对应端口} #添加为主节点

–cluster-slave --cluster-master-id {对应的主节点ID} # 在上一条命令后面加上此行命令将新节点添加为 对应主节点的从节点

若是添加 从节点则立即可用了,添加的是 主节点的话,还需要 reshard 分配 slots

#选取新添加的主节点id,进行reshard

redis-cli --cluster reshard {新主节点IP}:{新主节点PORT}

#之后按照提示操作即可

尝试一下,新增一个主节点9003

redis-cli --cluster add-node 127.0.0.1:9003 127.0.0.1:9001

redis5集群安装_第9张图片

新增失败了,原因是之前删除9003节点时会自动停止节点服务,启动一下

redis-server /home/redis-cluster/9003/redis.conf

在这里插入图片描述

然后再次执行新增命令

redis-cli --cluster add-node 127.0.0.1:9003 127.0.0.1:9001

redis5集群安装_第10张图片

还是没成功,这是因为之前删除了9003节点,但是对应的文件没有删除导致的。

cd /home/redis-cluster/9003/data

在这里插入图片描述

#删除以上3个文件,同时清空数据库

rm -rf *

redis-cli -h 127.0.0.1 -p 9003

127.0.0.1:9003> flushdb

#重启9003节点

127.0.0.1:9003> shutdown

redis-server /home/redis-cluster/9003/redis.conf

#再次执行新增命令

redis-cli --cluster add-node 127.0.0.1:9003 127.0.0.1:9001

redis5集群安装_第11张图片成功
因为是主节点,所以接下来需要分配slot(当添加节点以后,新增的节点不会有任何数据,因为它没分配任何的slot(hash槽),这是拿来存放数据的,Master必须得有才能存放数据。那么我们需要手动为新节点分配slot。)。

这步操作跟之前删除主节点迁移slot类似,故此省略。。。

分配后的集群状态
redis5集群安装_第12张图片

为9003节点新增一个子节点(9004)

redis-cli --cluster add-node 127.0.0.1:9004 127.0.0.1:9001 --cluster-slave --cluster-master-id 587b912f185a55092c12eb627f560d6f89e02fb8

redis5集群安装_第13张图片
新增后的集群状态
redis5集群安装_第14张图片

参考:

https://redis.io/topics/cluster-tutorial

https://blog.csdn.net/u014225733/article/details/84548368

https://blog.csdn.net/u014225733/article/details/84553441

https://my.oschina.net/ruoli/blog/2252393

https://blog.csdn.net/weixin_37882382/article/details/83538367

https://blog.csdn.net/Howinfun/article/details/81938161

你可能感兴趣的:(redis)