Redis集群部署文档(centos6系统)
(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)
127.0.0.1:7000
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
http://download.csdn.net/detail/qq_22929803/9375119 redis安装包下载地址
http://download.csdn.net/detail/qq_22929803/9375122 jedis架包下载地址
首先到http://download.redis.io/releases/下载redis-3.0.5.tar.gz或者其他版本的
将下载来的文件上传到服务器然后
tar -xvf redis-3.0.5.tar.gz
cd redis-3.0.5
#如果不加参数,linux下会报错
make MALLOC=libc
编译好以后启动
#启动redis
src/redis-server &
#关闭redis
src/redis-cli shutdown
测试redis
$ src/redis-cli
127.0.0.1:6379> set a test
OK
127.0.0.1:6379> get a
"test"
$
这样就代表成功安装了
接下来安装redis cluster集群搭建
#建立redis运行目录
mkdir -p /usr/local/redis/cluster/7000/
#复制默认的配置文档
cp redis-3.0.5/redis.conf /usr/local/redis/cluster/7000/redis.conf
#把编译好的server复制到运行目录
cp redis-3.0.5/src/redis-server /usr/local/redis/cluster/7000/
修改/usr/local/redis/cluster/7000/redis.conf文件
vi /usr/local/redis/cluster/7000/redis.conf
vi redis.conf
##修改配置文件中的下面选项
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
再把redis/src下面的redis-server启动脚本移到
/usr/local/redis/cluster/7000下面
cp /home/redis/src/redis-3.0.5/src/redis-server /usr/local/redis/cluster/7000/
##修改完redis.conf配置文件中的这些配置项之后把这个配置文件分别拷贝到7001/7002/7003/7004/7005目录下面
cp /usr/local/redis/cluster/7000/ /usr/local/redis/cluster/7001/
cp /usr/local/redis/cluster/7000/ /usr/local/redis/cluster/7002/
cp /usr/local/redis/cluster/7000/ /usr/local/redis/cluster/7003/
cp /usr/local/redis/cluster/7000/ /usr/local/redis/cluster/7004/
cp /usr/local/redis/cluster/7000/ /usr/local/redis/cluster/7005/
##注意:拷贝完成之后要修改7002/7003/7004/7005目录下面redis.conf文件中的port参数,分别改为对应的文件夹的名称
分别启动这6个redis实例
cd /usr/local/redis/cluster/7000
redis-server redis.conf
cd /usr/local/redis/cluster/7001
redis-server redis.conf
cd /usr/local/redis/cluster/7002
redis-server redis.conf
cd /usr/local/redis/cluster/7003
redis-server redis.conf
cd /usr/local/redis/cluster/7004
redis-server redis.conf
cd /usr/local/redis/cluster/7005
redis-server redis.conf
启动之后用ps -aux |grep redis 查看下
[root@hadoop1 7000]# ps -aux |grep redis
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 3123 0.1 0.0 129340 2616 ? Ssl 11:11 0:02 ./redis-server *:7000 [cluster]
root 3135 0.1 0.0 129372 2644 ? Ssl 11:11 0:01 ./redis-server *:7001 [cluster]
root 3141 0.1 0.0 129372 2680 ? Ssl 11:12 0:01 ./redis-server *:7002 [cluster]
root 3145 0.1 0.0 128360 2588 ? Ssl 11:12 0:01 ./redis-server *:7003 [cluster]
root 3149 0.1 0.0 128356 2600 ? Ssl 11:12 0:01 ./redis-server *:7004 [cluster]
root 3153 0.1 0.0 128352 2596 ? Ssl 11:12 0:01 ./redis-server *:7005 [cluster]
root 3244 0.0 0.0 103256 848 pts/0 S+ 11:34 0:00 grep redis
如果是这样的则代表成功
执行redis的创建集群命令创建集群
cd /home/redis/src/redis-3.0.5/src
./redis-trib.rb create --replicas 1 127.0.0.1:7000 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
执行上面的命令的时候会报错,因为是执行的ruby的脚本,需要ruby的环境
错误内容:/usr/bin/env: ruby: No such file or directory
所以需要安装ruby的环境,这里推荐使用yum install ruby安装
yum install ruby
然后再执行第6步的创建集群命令,还会报错,提示缺少rubygems组件,使用yum安装
错误内容:
./redis-trib.rb:24:in `require': no such file to load -- rubygems (LoadError)
from ./redis-trib.rb:24
yum install rubygems
再次执行第6步的命令,还会报错,提示不能加载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)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from ./redis-trib.rb:25
gem install redis
如果再执行还报
Connecting to node 127.0.0.1:7000: [ERR] Sorry, can't connect to node 127.0.0.1:7000
这个错误的话那就查看下你6个端口是否都启动了,没启动的话会报上面的错误
命令输入后
[root@hadoop1 src]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 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
>>> Creating cluster
Connecting to node 127.0.0.1:7000: OK
Connecting to node 127.0.0.1:7001: OK
Connecting to node 127.0.0.1:7002: OK
Connecting to node 127.0.0.1:7003: OK
Connecting to node 127.0.0.1:7004: OK
Connecting to node 127.0.0.1:7005: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: ed3a2dc06dd2b07a7df2f5036c8a5c73407125e1 127.0.0.1:7000
slots:0-5460 (5461 slots) master
M: b99d5eeb2122f86f8da149cab291d821316d2a61 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
M: cecf3694476229d11dfc9ae9117f381c84b43ab6 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
S: c99e2ff123d19444363a9ee4444f5b139dd1fe41 127.0.0.1:7003
replicates ed3a2dc06dd2b07a7df2f5036c8a5c73407125e1
S: e4b3b0fe2ffdfdb705f49bfb62265840aca4055b 127.0.0.1:7004
replicates b99d5eeb2122f86f8da149cab291d821316d2a61
S: 440e8743f546aa9a0d0f44d660eca577de6f1218 127.0.0.1:7005
replicates cecf3694476229d11dfc9ae9117f381c84b43ab6
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: ed3a2dc06dd2b07a7df2f5036c8a5c73407125e1 127.0.0.1:7000
slots:0-5460 (5461 slots) master
M: b99d5eeb2122f86f8da149cab291d821316d2a61 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
M: cecf3694476229d11dfc9ae9117f381c84b43ab6 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
M: c99e2ff123d19444363a9ee4444f5b139dd1fe41 127.0.0.1:7003
slots: (0 slots) master
replicates ed3a2dc06dd2b07a7df2f5036c8a5c73407125e1
M: e4b3b0fe2ffdfdb705f49bfb62265840aca4055b 127.0.0.1:7004
slots: (0 slots) master
replicates b99d5eeb2122f86f8da149cab291d821316d2a61
M: 440e8743f546aa9a0d0f44d660eca577de6f1218 127.0.0.1:7005
slots: (0 slots) master
replicates cecf3694476229d11dfc9ae9117f381c84b43ab6
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@hadoop1 src]# ./redis-cli -c -p 7000
127.0.0.1:7000> set foo bbb
-> Redirected to slot [12182] located at 127.0.0.1:7002
OK
127.0.0.1:7002> set foo ccc
OK
127.0.0.1:7002> get foo
"ccc"
127.0.0.1:7002> set foo1 aaa
OK
127.0.0.1:7002> get foo1
"aaa"
127.0.0.1:7002> set foo 222
OK
127.0.0.1:7002>
再到
cd /usr/local/redis/cluster/7002
cat appendonly.aof
*2
$6
SELECT
$1
0
*3
$3
set
$3
foo
$3
bbb
*3
$3
set
$3
foo
$3
ccc
*3
$3
set
$4
foo1
$3
aaa
*3
$3
set
$3
foo
$3
222
这样则代表集群安装成功了,接下来将接受通过Jedis来连接集群