1 下载redis
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
2 解压,安装
tar zxvf redis-3.0.6.tar.gz
cd redis-3.0.6
3 下载编译环境并编译
yum install readline-devel pcre-devel openssl-devel perl gcc
make && make install
4 创建存放多个实例的目录
mkdir /export/servers/redis/cluster -p
5 修改配置文件
cd /export/servers/redis/cluster
将redis中的redis.conf文件复制到实例目录下
cp /export/servers/redis-3.0.6/redis.conf /export/servers/redis/cluster/7001
修改7001目录下的redis.conf
port 7001
daemonize yes
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 5000
appendonly yes
将7001下的redis.conf复制到7002,7003,分别修改port 7001和cluster-config-file nodes-7001.conf
6 启动3个redis实例
cd export/servers/redis/cluster/7001
redis-server redis.conf
cd export/servers/redis/cluster/7002
redis-server redis.conf
cd export/servers/redis/cluster/7003
redis-server redis.conf
7 查看进程否存在
ps -ef | grep redis
8 下载依赖
yum install ruby rubygems -y
安装gem-redis
下载地址:https://rubygems.org/gems/redis/versions/3.0.0
gem install -l redis-3.0.0.gem
将集群管理程序复制到 export/servers/redis
9 创建集群
redis-trib create --replicas 0 192.168.72.100:7001 192.168.72.100:7002 192.168.72.100:7003
命令的意义如下:
给定 redis-trib.rb 程序的命令是 create , 这表示我们希望创建一个新的集群。
选项 --replicas 1 表示我们希望为集群中的每个主节点创建一个从节点。 0 表示为创建集群中的主节点,不创建从节点之后跟着的其他参数则是实例的地址列表, 我们希望程序使用这些地址所指示的实例来创建新集群。
接着, redis-trib 会打印出一份预想中的配置给你看, 如果你觉得没问题的话, 就可以输入 yes , redis-trib 就会将这份配置应用到集群当中:
测试,启动客户端
遇到的问题:
[root@node01 redis]# redis-trib create --replicas 0 node01:7001 node01:7002 node01:7003
>>> Creating cluster
>>> Performing hash slots allocation on 3 nodes...
Using 3 masters:
node01:7001
node01:7002
node01:7003
M: 2747b824b0b5fe6531fe43f9dc9af7408b59b27b node01:7001
slots:0-5460 (5461 slots) master
M: 3e7b0360d6a74160b9942f2c55c9c57d6f629ea7 node01:7002
slots:5461-10922 (5462 slots) master
M: f1fea27a1d98b2c640f71e60edfa87c3749fd77b node01:7003
slots:10923-16383 (5461 slots) master
Can I set the above configuration? (type 'yes' to accept): yes
/usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis/client.rb:79:in `call': ERR Slot 4648 is already busy (Redis::CommandError)
from /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis.rb:2190:in `method_missing'
from /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis.rb:36:in `synchronize'
from /usr/lib/ruby/1.8/monitor.rb:242:in `mon_synchronize'
from /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis.rb:36:in `synchronize'
from /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis.rb:2189:in `method_missing'
from ./redis-trib:212:in `flush_node_config'
from ./redis-trib:711:in `flush_nodes_config'
from ./redis-trib:710:in `each'
from ./redis-trib:710:in `flush_nodes_config'
from ./redis-trib:1209:in `create_cluster_cmd'
from ./redis-trib:1609:in `send'
from ./redis-trib:1609
参考了很多博客,修改了
7001下的redis.conf复制到7002,7003,分别修改port 7001和cluster-config-file nodes-7001.conf
通过重启实例,重新创建集群,问题解决。