一:环境
虚拟机 centos7 + redis-5.0.4.tar.gz,搭建为三主三从集群模式
二:Redis 单机安装步骤
在/var 建文件夹 redis-cluster/7001
mkdir -p /var/redis-cluster/7001 之后会用到
1:获取redis资源
wget http://download.redis.io/redis-5.0.4.tar.gz
2:解压
tar -xzvf redis-5.0.4.tar.gz
3:安装
cd redis-5.0.4
make
cd src
make install PREFIX=/var/redis-cluster/7001
cd ..
cp redis.conf /var/redis-cluster/7001/bin
到此单机的基础环境就算好了,下面进行一系列的配置
三:Redis Cluster 集群的配置步骤
写在前面:要求是搭建三主三从集群架构,所以/var/redis-cluster/目录下分别会有7001,7002,7003,7004,7005,7006 六个目录进行分别搭建,先把7001的redis.conf的配置好,直接复制就ok了;
1:编辑7001目录下的配置文件redis.conf 以下是相关配置
注释
#bind 127.0.0.1
protected-mode no
端口
port 7001
后台运行
daemonize yes
支持集群
cluster-enabled yes
2:改好配置之后进行复制7001 目录到 7002-7006
cp -r 7001 7002
cp -r 7001 7003
cp -r 7001 7004
cp -r 7001 7005
cp -r 7001 7006
3:将7002-7006的redis.conf文件的port端口依次改成目录对应端口
4:为了方便启动,在/var/redis-cluster 下写一个脚本start.sh
vi start.sh
将下面内容复制到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 ..
5:修改start.sh文件权限
chmod u+x start.sh (赋写和执行的权限)
6:到任意一个redis实例的bin目录下执行以下命令
cd /var/redis-cluster/7001/bin
./redis-cli --cluster create 192.168.127.128:7001
192.168.127.128:7002 192.168.127.128:7003 192.168.127.128:7004
192.168.127.128:7005 192.168.127.128:7006 --cluster-replicas 1
至此,三主三从集群架构搭建完成;
四:验证
1:验证,
cd /var/redis-cluster/7001/bin
./redis-cli -h 127.0.0.1 -p 7001 -c
2:查看集群状态
cluster info
3:查看集群节点
cluster nodes
五:扩容
1:添加主节点,按上面步骤增加一个主节点实例,端口为7007,在7001的bin目录下执行
./redis-cli --cluster add-node 192.168.127.128:7007 192.168.127.128:7001
2:给刚添加的7007结点分配槽
./redis-cli --cluster reshard 192.168.127.128:7007
输入要分配的槽数量
How many slots do you want to move (from 1 to 16384)? 3000
输入接收槽的结点id
50b073163bc4058e89d285dc5dfc42a0d1a222f2
3:为7007增加从节点
./redis-cli --cluster add-node 192.168.127.128:7008 192.168.127.128:7007 --cluster-slave --cluster-master-id 50b073163bc4058e89d285dc5dfc42a0d1a222f2