redis5集群安装

1、简要说明

2018年十月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是放弃 Ruby的集群方式,改为 使用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。

2、创建集群步骤

1、创建目录

​ 新建目录:/usr/local/redis/redis_cluster

2、下载源码并解压编译

wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar xzf redis-5.0.0.tar.gz
cd redis-5.0.0
make && make install

3、创建6个Redis配置文件

​ 6个配置文件不能在同一个目录,此处我们定义如下:

/usr/local/redis/redis_cluster/7000/redis.conf
/usr/local/redis/redis_cluster/7001/redis.conf
/usr/local/redis/redis_cluster/7002/redis.conf
/usr/local/redis/redis_cluster/7003/redis.conf
/usr/local/redis/redis_cluster/7004/redis.conf
/usr/local/redis/redis_cluster/7005/redis.conf

配置文件的内容为:

port 7001  #端口
cluster-enabled yes #启用集群模式
cluster-config-file nodes.conf
cluster-node-timeout 5000 #超时时间
appendonly yes
daemonize yes #后台运行
protected-mode no #非保护模式
pidfile  /var/run/redis_7001.pid
#requirepass xxx (设置redis访问密码)
#masterauth xxx (设置集群节点间访问密码,跟上面一致)

其中 port 和 pidfile 需要随着 文件夹的不同调增。

4、启动节点

redis-server  /usr/local/redis/redis_cluster/7000/redis.conf
redis-server  /usr/local/redis/redis_cluster/7001/redis.conf
redis-server  /usr/local/redis/redis_cluster/7002/redis.conf
redis-server  /usr/local/redis/redis_cluster/7003/redis.conf
redis-server  /usr/local/redis/redis_cluster/7004/redis.conf
redis-server  /usr/local/redis/redis_cluster/7005/redis.conf

5、启动集群

/usr/local/redis/redis-5.0.0/src/redis-cli --cluster create --cluster-replicas 1 10.10.2.134:7000 10.10.2.134:7001 10.10.2.134:7002 10.10.2.134:7003 10.10.2.134:7004 10.10.2.134:7005

3、集群其他操作

redis5 提供了集群的工具,在如下目录:

/usr/local/redis/redis-5.0.0/utils/create-cluster/create-cluster,修改端口PROT设置为6999,NODES为6,工具会自动累加1 生成 7000-7005 六个节点 用于操作。

1、关闭集群

/usr/local/redis/redis-5.0.0/utils/create-cluster/create-cluster stop

2、重新启动集群 (不能指定redis.conf文件,慎用)

/usr/local/redis/redis-5.0.0/utils/create-cluster/create-cluster start

3、使用脚本文件启动集群

cd /usr/local/redis/redis_cluster/7000
redis-server redis.conf
cd /usr/local/redis/redis_cluster/7001
redis-server redis.conf
cd /usr/local/redis/redis_cluster/7002
redis-server redis.conf
cd /usr/local/redis/redis_cluster/7003
redis-server redis.conf
cd /usr/local/redis/redis_cluster/7004
redis-server redis.conf
cd /usr/local/redis/redis_cluster/7005
redis-server redis.conf

4、开始水平扩展

1、增加节点

cd /usr/local/redis/redis_cluster
mkdir 7006 7007
cp 7000/redis.conf 7006
cp 7000/redis.conf 7007

按之前的方法修改7006、7007中redis.conf参数,修改完成后进行启动

配置7006为集群主节点(设置了密码为123456)
redis-cli --cluster add-node 10.10.2.134:7006 10.10.2.134:7000 -a 123456

7000为已知存在节点

手工分配hash槽

使用redis-cli命令为7006分配hash槽,找到集群中的任意一个主节点(7000),对其进行重新分片工作

redis-cli --cluster reshard 10.10.2.134:7000 -a 123456

在这里插入图片描述

会询问要分多少个槽出来(1000)?分给哪个节点(7006)

在这里插入图片描述

all是随机的,比如说我们要分出1000个,则3个主节点分别拿出333个,333个,334个节点分别8007,这里我们选择done,从7000拿1000个给7006

添加从节点到集群中
redis-cli --cluster add-node 10.10.2.134:7007 10.10.2.134:7000 -a 123456

可以看到7007是一个master节点,没有被分配任何的hash槽。 我们需要执行replicate命令来指定当前节点(从节点)的主节点id为哪个,首先需要连接新加的7006节点的客户端,然后使用集群命令进行操作,把当前的7007(slave)节点指定到一个主节点下

redis-cli -c -h 10.10.2.134 -p 7007
CLUSTER REPLICATE aa5524c6666d457b629e5e943025314734284dd3
查看节点状态

在这里插入图片描述

至此,我们扩展redis集群已经实现

2、删除节点

删除从节点
redis-cli --cluster del-node 10.10.2.134:7007 dcbb43ff44cbd42e31a4d94c1da05eaccceffb96
删除主节点

我们尝试删除之前加入的主节点,这个步骤相对比较麻烦一些,因为主节点的里面是有分配了hash槽的,所以我们这里必须先把节点里的hash槽放入到其他的可用主节点中去,然后再进行移除节点操作,不然会出现数据丢失问题(目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能)

#master的数据迁移到一个节点上
redis-cli --cluster reshard 10.10.2.134:7006
#删除节点
redis-cli --cluster del-node 10.10.2.134:7006 aa5524c6666d457b629e5e943025314734284dd3
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值