Redis

Redis

/ 0 评 / 0

redis集群是一个无中心节点的分布式redis存储架构,可以在多个节点之间进行数据共享,解决了redis高可用、可扩展等问题,redis集群提供了以下两个好处:
1、将数据自动切分(split)到多个节点

环境:centos7

一、Redis安装
下载redis
wget http://download.redis.io/releases/redis-5.0.12.tar.gz
tar -zxvf redis-5.0.12.tar.gz
cd redis-5.0.12
make
cd src

二、创建集群需要的目录并拷贝redis

mkdir -p /etc/redis/clustertest/

mkdir -p /etc/redis/clustertest/7000

mkdir -p /etc/redis/clustertest/7001

mkdir -p /etc/redis/clustertest/7002

mkdir -p /etc/redis/clustertest/7003

mkdir -p /etc/redis/clustertest/7004

mkdir -p /etc/redis/clustertest/7005

cp /usr/local/src/redis-5.0.12/redis.conf /etc/redis/clustertest/7000/7000.conf

cp /usr/local/src/redis-5.0.12/redis.conf /etc/redis/clustertest/7002/7002.conf

cp /usr/local/src/redis-5.0.12/redis.conf /etc/redis/clustertest/7003/7003.conf

cp /usr/local/src/redis-5.0.12/redis.conf /etc/redis/clustertest/7004/7004.conf

cp /usr/local/src/redis-5.0.12/redis.conf /etc/redis/clustertest/7005/7005.conf

三、修改配置文件7000.conf

daemonize yes

port 7000

appendonly yes

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

再修改7001,7002,7003,7004,7005目录下的配置文件的port,使得redis.conf中的port与其父目录名称一致

四、启动6个redis

mkdir -p /opt/app/redis/bin

cp /usr/local/bin/* /opt/app/redis/bin/

cd /opt/app/redis/bin/

redis-server /etc/redis/clustertest/7000/7000.conf

redis-server /etc/redis/clustertest/7001/7001.conf

redis-server /etc/redis/clustertest/7002/7002.conf

redis-server /etc/redis/clustertest/7003/7003.conf

redis-server /etc/redis/clustertest/7004/7004.conf

redis-server /etc/redis/clustertest/7005/7005.conf

五、创建redis集群

yum install ruby rubygems

gem install redis

cd /usr/local/src/redis-5.0.12/src/

./redis-trib.rb create —replicas 1 10.9.10.17:7000 10.9.10.17:7001 10.9.10.17:7002 10.9.10.17:7003 10.9.10.17:7004 10.9.10.17:7005

至此redis集群即搭建成功!

六、redis集群常用命令
1、进入集群环境
redis-cli -c -p 7000
2、查看redis整个集群的状态,节点信息以及主从关系
redis-cli -c -p 7000 cluster nodes
3、添加Mater节点到集群
3.1、创建端口为7006的新实例,并启动该实例
3.2、将7006加入到集群
cd /usr/local/src/redis-5.0.12/src;
./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
3.3、 查看节点信息,看7006节点是否添加成功
redis-cli -c -p 7000 cluster nodes
3.4、给新添加的7006节点分配哈希槽
./redis-trib.rb reshard 127.0.0.1:7000
3.5、查看7006节点是否变成master节点(connected是否在0-999范围)
redis-cli -p 7000 cluster nodes | grep master | grep 7006
4、添加Slave节点到集群
4.1、创建端口为7007的新实例,并启动该实例
4.2、将7007加入到集群
cd /usr/local/src/redis-5.0.12/src;
./redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7000
4.3、查看节点信息,看7007节点是否添加成功
redis-cli -c -p 7000 cluster nodes
4.4、设置7007成为7006的slave
redis-cli -c -p 7007 cluster replicate cee383ab949eeb33d58aacde89c9cfb8eaa65eab(7006的nodeID)
4.5、查看7007节点是否变成7006的slave节点
redis-cli -p 7000 cluster nodes | grep slave | grep 7007
5、删除一个Slave节点
./redis-trib.rb del-node 127.0.0.1:7007 ‘9fc511d059eb7fccae41663d495e73275e942aec’
6、删除一个Master节点
6.1、删除master节点之前首先要使用reshard移除master的全部slot
./redis-trib.rb reshard 127.0.0.1:7006
6.2、删除空7006节点