Redis实操系列
目录
核心流程
实现目标
环境准备
环境搭建
1.创建相关文件夹
2.进入conf文件夹,创建redis-*.conf配置文件,并进行其内容编辑
3.启动Redis并检查Redis是否启动成功
4.使用redis-cli启动Cluster集群并查看集群信息
启动Cluster集群
查看集群信息
其他查看集群/节点信息命令
5.Cluster集群的扩容与缩容
节点扩容
分配卡槽/卡槽迁移/卡槽缩容
删除节点
注意:环境搭建在一台虚拟机上演示
cd /usr;
#创建目录
mkdir -p soft/redis7cluster;
cd soft/redis7cluster;
#创建配置目录
mkdir conf;
#创建持久化目录
mkdir data;
#创建日志目录
mkdir log;
创建完成后各文件夹路径如图所示
#进入配置目录
cd conf;
touch redis-6379.conf;
touch redis-6380.conf;
touch redis-6381.conf;
touch redis-6382.conf;
touch redis-6383.conf;
touch redis-6384.conf;
分别编辑6个conf文件,将以下配置写入配置文件中,每个配置文件根据端口号对相应的配置做相应的更改
#不限定ip访问
bind 0.0.0.0
#端口号6379
port 6379
#开启后台运行
daemonize yes
#设置访问密码
requirepass 123456
#日志文件路径
logfile "/usr/soft/redis7cluster/log/6379.log"
#持久化文件名称
dbfilename "db-6379.rdb"
#持久化文件的存储目录
dir "/usr/soft/redis7cluster/data"
#AOF持久化开关
appendonly yes
#AOF文件名,默认是"appendonly.aof",AOF文件的保存路径,同RDB的路径一致
appendfilename "appendonly-6379.aof"
#主节点密码
masterauth 123456
#是否开启集群
cluster-enabled yes
#生成的node文件,记录集群节点信息,默认为nodes.conf,为防止冲突,改为nodes-port.conf,默认目录为持久化目录
cluster-config-file nodes-6379.conf
#节点连接超时时间
cluster-node-timeout 20000
#集群节点的IP,当前节点的IP
cluster-announce-ip 192.168.237.133
#集群节点映射端口
cluster-announce-port 6379
#集群节点总线端口,节点之间互相通信,常规方式为端口号+1万
cluster-announce-bus-port 16379
启动redis
redis-server /usr/soft/redis7cluster/conf/redis-6379.conf;
redis-server /usr/soft/redis7cluster/conf/redis-6380.conf;
redis-server /usr/soft/redis7cluster/conf/redis-6381.conf;
redis-server /usr/soft/redis7cluster/conf/redis-6382.conf;
redis-server /usr/soft/redis7cluster/conf/redis-6383.conf;
redis-server /usr/soft/redis7cluster/conf/redis-6384.conf;
检查redis是否启动成功
ps -ef|grep redis
Redis启动成功
#--cluster 构建集群的全部节点
#--cluster-replicas 1 主从节点比例 1代表一主一从的方式
redis-cli -a 123456 --cluster create 192.168.237.133:6379 192.168.237.133:6380 192.168.237.133:6381 192.168.237.133:6382 192.168.237.133:6383 192.168.237.133:6384 --cluster-replicas 1
redis-cli -a 123456 --cluster check 192.168.237.133:6379
注意:主从节点为自动分配
#-c 表示以cluster集群模式连接到redis
redis-cli -c -a 123456 -p 6379
#集群信息
cluster info
#节点信息
cluster nodes
按照上述配置方式新增端口号为6385与6386的conf配置文件并启动redis,启动完成后的redis节点如下图所示
将6385节点加到集群中
#将6385添加到6380的集群中
#add-node 新增节点
#192.168.237.133:6386 第一个 IP:端口为要添加的节点
#192.168.237.133:6380 第二个 IP:端口为现有的集群(集群中的随便一个节点都可以)
redis-cli -a 123456 --cluster add-node 192.168.237.133:6385 192.168.237.133:6380
查看集群信息,如下图中可以看到6385添加到集群中,默认是master节点并没有分配卡槽
将6386添加到集群中,并将6386设置为6385的从节点
#将6386添加到6380的集群中,并作为6385的从节点
#add-node 新增节点
#192.168.237.133:6386 第一个 IP:端口为要添加的节点
#192.168.237.133:6380 第二个 IP:端口为现有的集群(集群中的随便一个节点都可以)
#--cluster-slave 当前节点为从节点
#b7c791a875669a7c201ab2dbebba3ff5264afc1c 集群主节点的node ID
redis-cli -a 123456 --cluster add-node 192.168.237.133:6386 192.168.237.133:6380 --cluster-slave --cluster-master-id b7c791a875669a7c201ab2dbebba3ff5264afc1c
分配卡槽:为6385分配卡槽
redis-cli -a 123456 --cluster reshard 192.168.237.133:6380
执行命令之后会提示想扩充一个master到多少个卡槽,目前共是4个master节点,平均每个是4096个。之后提示移动到哪个node ID上,把6385的node ID赋复制过来即可。之后再提示以什么方式分配:all是集群中的所有的卡槽都可以当做源卡槽进行分配,这里是平均分所以选all;done需要指定node ID,从特定的节点上分配卡槽到6385,一般用于某个节点较多的情况。
分配完卡槽之后查看集群状态,如下图所有卡槽已重新分配到各个节点
卡槽迁移:将6385的一个卡槽迁移到6379上
#卡槽迁移到其他节点下
#192.168.237.133:6380 ip:port为集群中的任意ip:port
#--cluster-from 要删除卡槽的master节点,后跟其节点的node ID
#--cluster-to 要接收卡槽的master节点,后跟其节点的node ID
#--cluster-slots 卡槽转移的数量,后跟数量
redis-cli -a 123456 --cluster reshard 192.168.237.133:6380 --cluster-from a1daab87a26b408715aa85e54304d59ee99e862e --cluster-to bd1bd9dc7f684d5a4cbc9b5e98c1dda4523d5a2d --cluster-slots 1
迁移完成后查看集群状态,如下图一个卡槽已由6385迁移到6379
删除集群中的节点之前,需要把要删除节点的卡槽清空,如要删除6385节点时,使用卡槽迁移清空6385节点的卡槽,然后对该节点进行删除
#del-node 删除节点
#192.168.237.133:6379 集群中的一个主节点ip:port
#b7c791a875669a7c201ab2dbebba3ff5264afc1c 要删除的节点的node ID
redis-cli -a 123456 --cluster del-node 192.168.237.133:6379 b7c791a875669a7c201ab2dbebba3ff5264afc1c