Redis集群搭建及扩容
Posted Lossdate
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis集群搭建及扩容相关的知识,希望对你有一定的参考价值。
一、集群搭建
RedisCluster最少需要三台主服务器,三台从服务器
端口号分别为:7001~7006
其中7001 7002 7003为主,7004 7005 7006为从
这里伪集群在一个服务器里搭建
-
创建7001实例
mkdir redis-cluster/7001 -p cd redis-cluster/ mkdir 7002 7003 7004 7005 7006
-
解压redis,安装
cd redis-5.0.10/src/ make install PREFIX=/usr/local/redis-cluster/7001/ cd ../ cp redis.conf /usr/local/redis-cluster/7001/bin/ cd /usr/local/redis-cluster/7001/bin/
-
编辑redis.conf文件,修改port为7001
#注释bind 127.0.0.1 #bind 127.0.0.1 #修改 protected-mode no port 7001 daemonize yes #放开注释cluster-enabled yes cluster-enabled yes
-
复制7001,创建7002~7006实例,注意端口修改
cd ../../ cp -r 7001/* 7002/ cp -r 7001/* 7003/ cp -r 7001/* 7004/ cp -r 7001/* 7005/ cp -r 7001/* 7006/ vim 7002/bin/redis.conf port 7002 vim 7003/bin/redis.conf port 7003 vim 7004/bin/redis.conf port 7004 vim 7005/bin/redis.conf port 7005 vim 7006/bin/redis.conf port 7006
-
创建start.sh,启动所有的实例
vim start.sh #写入脚本 cd 7001/bin ./redis-server redis.conf cd ../../ cd 7002/bin ./redis-server redis.conf cd ../../ cd 7003/bin ./redis-server redis.conf cd ../../ cd 7004/bin ./redis-server redis.conf cd ../../ cd 7005/bin ./redis-server redis.conf cd ../../ cd 7006/bin ./redis-server redis.conf cd ../../
-
赋写和执行的权限
chmod u+x start.sh ./start.sh
-
创建Redis集群(创建时Redis里不要有数据)
cluster-replicas : 1主1从机 前三个为主
最后的1表示备份一份,因为一主对应一从cd 7001/bin/ ./redis-cli --cluster create 192.168.200.136:7001 192.168.200.136:7002 192.168.200.136:7003 192.168.200.136:7004 192.168.200.136:7005 192.168.200.136:7006 --cluster-replicas 1
-
查看
cat nodes.conf
-
连接集群
连接:./redis-cli -h 127.0.0.1 -p 7001 -c
注意:-c 表示是以redis集群方式进行连接
测试:
查看集群状态cluster info
查看节点:cluster nodes
二、扩容
-
添加主节点 7007
mkdir 7007
cd /root/redis-5.0.10/src/ make install PREFIX=/usr/local/redis-cluster/7007 cd /usr/local/redis-cluster/ cp /root/redis-5.0.10/redis.conf /usr/local/redis-cluster/7007/bin/
编辑redis.conf
# 将daemonize由no改为yes daemonize yes # 注释掉bind 127.0.0.1 # bind 127.0.0.1 # 是否开启保护模式,由yes该为no protected-mode no #解开cluster-enabled yes的注释 cluster-enabled yes
-
启动7007
cd ../../ cd 7007/bin/ ./redis-server redis.conf
-
将7007加入集群
./redis-cli --cluster add-node 192.168.200.136:7007 192.168.200.136:7001
查看./redis-cli -h 127.0.0.1 -p 7001 cluster nodes
-
hash槽重新分配(数据迁移)
./redis-cli --cluster reshard 192.168.200.136:7007
这里要输入分槽数(1~16384),这里用3000做演示
接着会提示What is the receiving node ID?
这里输入7007的id,在上面的查看这一步cluster nodes可以查看7007的id
接着会提示:
这里输入all
之后有提示则yes
完成后查看cat nodes.conf
可与i看到7007已经分配好槽了 -
创建7008,添加7008从结点,将7008作为7007的从结点
cd ../../ cp -r 7007 7008
编辑redis.conf
cd 7008/bin/ vim redis.conf #修改port为7008 port 7008
-
启动7008
./redis-server redis.conf
-
添加从节点7008
#./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave -- cluster-master-id 主节点id ./redis-cli --cluster add-node 192.168.200.136:7008 192.168.200.136:7007 --cluster-slave --cluster-master-id e19bc34e78f6f03f91fd096916d1480b2c13a98d
查看./redis-cli -p 7008 -c cluster nodes
三、缩容
删除已经占有hash槽的结点会失败
需要将该结点占用的hash槽分配出去
./redis-cli --cluster del-node 192.168.200.136:7008 9e2fd2c696ee5daffac8a77ca5dc2ee2ad53b7b3
以上是关于Redis集群搭建及扩容的主要内容,如果未能解决你的问题,请参考以下文章