在虚拟机下创建redis集群。
redis版本:redis-3.2.0.tar.gz
将tar包解压到指定目录下,如:/home/xingyun/
进入/home/xingyun/ 目录下,操作如下命令:
tar -xvzf redis-3.2.0.tar.gz
mv redis-3.2.0 redis redis
cd redis
make
make install在 /home/xingyun/ 目录下创建文件夹 redis_cluster ,然后在次文件夹下创建6个文件夹
mkdir /home/xingyun/redis_cluster
cd redis_cluster
mkdir redis-7001
mkdir redis-7002
mkdir redis-7003
mkdir redis-7004
mkdir redis-7005
mkdir redis-7006依次将redis安装文件拷贝到redis-7001,redis-7002,……
cp -rf /home/xingyun/redis/* /home/xingyun/redis_cluster/redis-7001/
cp -rf /home/xingyun/redis/* /home/xingyun/redis_cluster/redis-7002/
cp -rf /home/xingyun/redis/* /home/xingyun/redis_cluster/redis-7003/
cp -rf /home/xingyun/redis/* /home/xingyun/redis_cluster/redis-7004/
cp -rf /home/xingyun/redis/* /home/xingyun/redis_cluster/redis-7005/
cp -rf /home/xingyun/redis/* /home/xingyun/redis_cluster/redis-7006/redis-7001,redis-7002,….代表每个redis实例,修改每个实例的 redis.conf 文件,主要修改如下属性:
port 7001 (每个实例对应自己的端口,依次为7001,7002....) daemonize yes cluster-enabled yes (是否启用集群) cluster-config-file nodes.conf cluster-node-timeout 15000 appendonly yes logfile "/home/xingyun/redis_cluster/redis_cluster.log" (日志文件路径可以自己定义)
分别启动每个redis实例
启动:
cd /home/xingyun/redis_cluster/redis-7001/
./src/redis-server redis.conf
验证是否启动成功:
ps -ef | grep redis依次启动剩下的实例
全部启动成功后结果如下:
进入任意一个redis实例文件夹下,如redis-7001,执行redis集群创建命令创建集群
cd /home/xingyun/redis_clustere/redis-7001/src
./redis-trib.rb通过 ./redis-trid.rb 可以查看redis集群所有可用到的命令,这里我们选用create命令,创建命令如下:
./redis-trib.rb create –replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004
127.0.0.1:7005 127.0.0.1:7006说明:
#redis-trib.rb的create子命令构建
#–replicas 则指定了为Redis Cluster中的每个Master节点配备几个Slave节点
#节点角色由顺序决定,先master之后是slave集群启动成功如下:
![redis集群启动成功](https://img-blog.csdn.net/20160708195933200)
注意观察 主从配置:
默认的前三个节点 7001,7002,7003 是主,后三个节点 7004,7005,7006 是从
redis集群存储的key是在slot(槽)中,一个slot可以保存多个key,计算key属于哪个slot的公式
为 slot_number = crc16(key) %16384, 其中crc16 位16位的循环冗余校验和函数,redis集群会将slot
均为给每个节点,如图上节点7001分配5461个slot,7002分配5462个slot
如果是部署在不同的服务器,请根据主从分配规则,分开在不同的服务器,至此redis集群搭建成功!使用 redis-cli 命令进入集群环境
redis-cli -c -p 7001
注意问题,在按照redis集群时可能会出现下面错误
1.执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境
错误内容:/usr/bin/env: ruby: No such file or directory
所以需要安装ruby的环境,这里推荐使用yum install ruby安装 yum install ruby
2.然后再执行创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装
错误内容: ./redis-trib.rb:24:in `require’: no such file to load – rubygems (LoadError) from ./redis-trib.rb:24安装 yum install rubygems
再次执行执行创建集群命令,还会报错,提示不能加载redis,是因为缺少redis和ruby的接口,使用gem 安装
错误内容:
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
gem_original_require': no such file to load -- redis (LoadError)
require’
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
from ./redis-trib.rb:25安装 gem install redis