Linux系统搭建redis-cluster集群案例
- (一)redis下载及安装
- 【1】前言介绍
- 【2】redis下载以及安装
- (1)首先要进入Linux系统的根目录
- (2)安装redis所需的环境
- (3)下载redis源码包
- (4)解压redis到根目录下
- (5)安装redis
- (6)拷贝配置文件 并修改
- (7)启动并操作
 
 
 
 
- (二)集群搭建-三主三从
- 【1】复制配置文件
- (1)在redis-cluster目录下创建多个文件7002-7008
- (2)开始复制配置好的7001文件夹下的文件
- (3)修改配置文件的端口
 
 
- 【2】创建启动脚本进行启动
- (1)创建启动文件
- (2)启动文件start.sh的内容
- (3)给启动文件授权
- (4)启动
- (5)查看启动后的线程
 
 
- 【3】创建Redis集群(创建时Redis里不要有数据)
- (1)创建redis集群
- (2)槽位分配的原理
 
 
- 【4】客户端连接集群并使用
- (1)以redis集群方式进行连接
- (2)查看集群状态
- (3)查看集群中的节点
- (4)添加数据并查看
 
 
 
 
- (三)集群扩容
- 【1】数据迁移
- 【2】添加7077节点作为新节点,并且启动
- 【3】7007申请加入集群
- 【4】给7007节点分配hash槽,这样主节点才能存储数据
- 【5】添加7008从结点,将7008作为7007的从结点
 
 
- (四)集群缩容
- 【1】删除已经占有hash槽的结点会失败
 
 
(一)redis下载及安装
【1】前言介绍
本文是在一台服务器上搭建多个redis的伪集群方式来进行讲解,后续要换成多台步骤类似。
Redis5.0前采用redis-trib进行集群的创建和管理,需要ruby支持
Redis5.0可以直接使用Redis-cli进行集群的创建和管理。本文用的是redis版本5.0.5
【2】redis下载以及安装
(1)首先要进入Linux系统的根目录
cd /
(2)安装redis所需的环境
yum install -y gcc-c++
yum install -y wget

(3)下载redis源码包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
(4)解压redis到根目录下
tar -zxf redis-5.0.5.tar.gz

(5)安装redis
安装之前,先创建好/redis/redis-cluster/7001的文件
 进入src目录
make install PREFIX=/redis/redis-cluster/7001
(6)拷贝配置文件 并修改
cp /redis-5.0.5/redis.conf /redis/redis-cluster/7001/bin
修改配置文件
 


 
(7)启动并操作
进入到redis的bin目录中进行启动
./redis-server redis.conf
客户端连接进行操作
./redis-cli -h 192.168.0.102 -p 7001
 测试安装并启动成功
测试安装并启动成功
(二)集群搭建-三主三从
【1】复制配置文件
(1)在redis-cluster目录下创建多个文件7002-7008
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
mkdir 7007
mkdir 7008

(2)开始复制配置好的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
(3)修改配置文件的端口
复制完成后,对每个目录下的配置文件进行修改,修改对应端口就可以了
 
【2】创建启动脚本进行启动
(1)创建启动文件
回到redis-cluster目录下创建启动文件
创建启动文件
touch start.sh
编辑启动文件
vim start.sh

(2)启动文件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 ..
(3)给启动文件授权
#授权
chmod u+x start.sh
(4)启动
启动前可以检查一下redis的线程是不是有已经启动的了,使用kill命令全部关闭。
./start.sh

(5)查看启动后的线程
#查看启动的线程情况
ps -ef|grep redis

【3】创建Redis集群(创建时Redis里不要有数据)
(1)创建redis集群
进入到一个redis,bin目录下执行命令。cluster-replicas后面的1表示一个主机有几个从机,因为现在只有一个因此是1,工作中是2。
./redis-cli --cluster create 192.168.0.102:7001 192.168.0.102:7002 192.168.0.102:7003 192.168.0.102:7004 192.168.0.102:7005 192.168.0.102:7006 --cluster-replicas 1

 
(2)槽位分配的原理
【4】客户端连接集群并使用
(1)以redis集群方式进行连接
注意:-c 表示是以redis集群方式进行连接
./redis-cli -h 192.168.0.102 -p 7001 -c
(2)查看集群状态
cluster info

(3)查看集群中的节点
cluster nodes

(4)添加数据并查看
从7001添加数据看看(如何选择和分配槽位slot的原理看一下)
 
 从7002查询数据
 
(三)集群扩容
【1】数据迁移
(1)新节点加入
 (2)节点下线
 (3)负载不均衡需要调整slot分布
【2】添加7077节点作为新节点,并且启动
进入7007/bin/目录,并且启动redis
./redis-server redis.conf
【3】7007申请加入集群
添加节点 7007 去meet7001申请加入集群
./redis-cli --cluster add-node 192.168.0.102:7007 192.168.0.102:7001

 连接7007的redis,查看是否已经加入集群
#连接集群
./redis-cli -h 192.168.0.102 -p 7007 -c
#查看集群信息
cluster info
#查看是否加入集群
cluster nodes
 在集群的节点中能看到7007,但是现在已经连接,还没有分配hash槽
在集群的节点中能看到7007,但是现在已经连接,还没有分配hash槽
【4】给7007节点分配hash槽,这样主节点才能存储数据
./redis-cli --cluster reshard 192.168.0.102:7007
(1)输入要分配槽数量
  (2)输入接收槽的节点id
(2)输入接收槽的节点id
 这里根据自己机器上的7007的id进行填写
 

 (3)输入节点id后再输入all就完事了
 
 (4)输入yes开始移动槽到目标结点id
 
 (5)查询节点
#连接集群
./redis-cli -h 192.168.0.102 -p 7007 -c
#查看集群信息
cluster info
#查看是否加入集群
cluster nodes

【5】添加7008从结点,将7008作为7007的从结点
(1)首先启动7008
#进入7008/bin/目录
#启动
./redis-server redis.conf
(2)添加7008从结点,将7008作为7007的从结点
./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -cluster-master-id 主节点id
./redis-cli --cluster add-node 192.168.0.102:7008 192.168.0.102:7007 --cluster-slave --cluster-master-id 2d17e4ccce0e5bf54ab893782d81d21214662ce1

 
(3)7008节点登入集群,查看节点信息
#连接集群
./redis-cli -h 192.168.0.102 -p 7008 -c
#查看集群信息
cluster info
#查看是否加入集群
cluster nodes

(四)集群缩容
【1】删除已经占有hash槽的结点会失败
(1)缩容命令
./redis-cli --cluster del-node 192.168.0.102:7008 5cc3b1ef0bf018435e65f93939d81acba6fbd603
删除已经占有hash槽的结点会失败,必须先分出去否则报错如下:
[ERR] Node 127.0.0.1:7008 is not empty! Reshard data away and try again.
(2)hash槽重新分配
 进入7008/bin/目录,开始hash槽重新分配—参考上面hash槽分配步骤
./redis-cli --cluster reshard 192.168.0.102:7008



















