Redis集群(2)-部署集群

本文详细介绍了如何部署Redis集群,包括集群前的准备工作,使用redis-trib.rb工具创建集群,向集群添加和移除节点,以及处理哈希槽的重新分配。还探讨了在集群中发送数据操作命令的机制,并阐述了集群的故障恢复流程,特别是节点故障时的主从切换和集群状态的处理策略。
摘要由CSDN通过智能技术生成

部署前准备

因为进行Redis集群部署操作的实验需要启停较多的Redis服务,因此,我写了如下两个简单的脚本来辅助启停本机Redis应用。
要使用集群功能,Redis 服务必须要先打开 cluster-enabled 配置选项,修改path/to/redis.conf 文件中的 cluster-enabled 配置项的值为 yes

启动redis实例startRedis.sh

#!/usr/bin/bash

#在本机启动N个redis实例,redis实例的端口从6379开始,每启动一个实例端口递增1
#如:启动两个redis实例,两个实例的端口分别为 6379和6380
#脚本默认使用当前目录下的myRedis.conf文件作为配置文件。此配置文件中必须要有cluster-enabled yes配置项,以开启Redis集群功能
#在当前目录下根据启动Redis的端口创建子目录,每个redis的aof、rdb、config等文件都在相应的子目录下

declare -i port=6378
declare -i n=$1
declare -i i=1
echo "启动redis实例个数为:$n"
test $n -le 0 && n=1            #若启动脚本没有带参数,默认启动1个redis实例
while [ $i -le $n ]
do
        port=$((port+1))
        echo "开始启动redis实例,监听端口$port"
        # 若当前目录下不存在相应端口的子目录,则创建
        test -d $port || mkdir $port
        # 启动Redis服务
        redis-server myRedis.conf --port $port --cluster-config-file nodes-$port.conf --appendfilename appendonly-$port.aof --dbfilename dump-$port.rdb --dir ./$port &
        i=$((i+1))
done
echo "所有redis实例启动成功!"

exit 0

停止redis实例stopRedis.sh

#!/usr/bin/bash

#停止本机所有的redis服务

#获取本机所有redis服务的端口
portArr=`ps -ef | grep redis-server | sed '/grep/'d | awk '{print $9}' | awk -F : '{print $2}'`
echo "所有的redis服务端口 $portArr"

for port in $portArr
do
        echo "停止$port端口上的redis服务"
        redis-cli -p $port shutdown
done

exit 0

启停脚本的使用范例:

//在本机上启动6个Redis服务,端口为6379-6384
[root@localhost]# bash startRedis.sh 6
//停止本机的所有Redis服务
[root@localhost]# bash stopRedis.sh

部署Redis集群

本文章中使用Redis自带的redis-trib.rb工具来进行Redis集群的部署,redis-trib.rb是用ruby编写的,所有要先安装ruby,然后安装redis gem依赖包。

//centos系统下安装ruby,执行以下命令
//其他安装方式参看官方文档
[root@localhost]# yum install ruby
//安装redis-trib.rb依赖的gem包redis
[root@localhost]# gem install redis

//启动redis服务,创建6个redis服务,端口以6379开始递增
[root@localhost]# bash startRedis.sh 6

//创建部署redis集群
[root@localhost]# /home/ojh/redis/redis-stable/src/redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

向集群中增加节点

若要向集群中增加节点只要向新节点发送CLUSTER MEET ip port命令即可,其中ip和port是原集群中任一节点的ip和端口。原集群中节点接收到meet命令后会通过Gossip协议通知集群中每一个节点,因此新节点仅需meet集群中任一节点即可。
节点添加到集群中后,可以通过CLUSTER REPLICATE nodeId命令将节点设置为节点nodeId的从服务。
下面例子向集群中增加一主一从两个节点:

//启动redis服务,增加到集群中的新节点
[root@localhost]# mkdir 6385
[root@localhost]# redis-server myRedis.conf --port 6385 --cluster-config-file nodes-6385.conf --appendfilename appendonly-6385.aof --dbfilename dump-6385.rdb --dir ./6385 &

//启动后看新节点的nodes config文件可以看到新节点还没加入到集群中
[root@localhost redisCuster]# cat 6385/nodes-6385.conf 
cb3e00c246f4e7eea69eafdf2bf73851c0bc2e54 :0 myself,master - 0 0 0 connected
vars currentEpoch 0 lastVoteEpoch 0

//向新节点发送CLUSTER MEET ip port命令
[root@localhost]# redis-cli -p 6385
127.0.0.1:6385> CLUSTER MEET 127.0.0.1 6383

//meet后再看6385的config文件,可以看到6385已经成功添加到集群上了
[root
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值