因为是实验性质,所以我是使用一个虚拟机创建了6个redis实例.
分别是运行在本机的7001,7002,7003,7004,7005,7006 6个端口上,为3主3从结构
1.创建redis-cluster文件夹:
mkdir -p /usr/local/redis-cluster/
2.创建每个节点的目录
mkdir 7001 7002 7003 7004 7005 7006
3.修改 redis.conf
700x这些是根据不同节点的名字来的,如果是是7002的节点,那么端口号也要是7002,以此类推
port 7001
daemonize yes
dir /usr/local/redis-cluster/7001
appendonly yes
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
4.copy redis.conf到每个节点的文件夹内,建议用vi的 :%s/7001/700x/g 来整天替换里面的端口和文件夹信息这样效率会比较高
copy /usr/local/redis-cluster/7001/redis.conf ../7002 ../7003 ../7004 ../7005 ../7006
5.启动每个redis 实例
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf
6.安装ruby和rubygems,并安装ruby的redis扩展
apt-get install ruby
apt-get install rubygems
gem install redis
7.启动cluster设置,在redis的编译文件夹里,找到 redis-trib.rb
./redis-trib.rb create --replicas 1 1.1.1.2:7001 1.1.1.2:7002 1.1.1.2:7003 1.1.1.2:7004 1.1.1.2:7005 1.1.1.2:7006
命令显示
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
1.1.1.2:7001
1.1.1.2:7002
1.1.1.2:7003
Adding replica 1.1.1.2:7004 to 1.1.1.2:7001
Adding replica 1.1.1.2:7005 to 1.1.1.2:7002
Adding replica 1.1.1.2:7006 to 1.1.1.2:7003
M: c71b628db058d5b7907c91491aa33ed16a76ad66 1.1.1.2:7001
slots:0-5460 (5461 slots) master
M: 9ce1d76fe3fac744466088050e227859d88875cd 1.1.1.2:7002
slots:5461-10922 (5462 slots) master
M: fdf06f99b9ae32fbbddc8b3e196659487dfccf6f 1.1.1.2:7003
slots:10923-16383 (5461 slots) master
S: 70670e2a0c7f212306582836b4acf58aae9897f0 1.1.1.2:7004
replicates c71b628db058d5b7907c91491aa33ed16a76ad66
S: 70c02ebfe21fd9de0fe47b0fce4887657babbe21 1.1.1.2:7005
replicates 9ce1d76fe3fac744466088050e227859d88875cd
S: eb0b49e4de19a9af2bf672d579e71e98c5169c7a 1.1.1.2:7006
replicates fdf06f99b9ae32fbbddc8b3e196659487dfccf6f
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 1.1.1.2:7001)
M: c71b628db058d5b7907c91491aa33ed16a76ad66 1.1.1.2:7001
slots:0-5460 (5461 slots) master
M: 9ce1d76fe3fac744466088050e227859d88875cd 1.1.1.2:7002
slots:5461-10922 (5462 slots) master
M: fdf06f99b9ae32fbbddc8b3e196659487dfccf6f 1.1.1.2:7003
slots:10923-16383 (5461 slots) master
M: 70670e2a0c7f212306582836b4acf58aae9897f0 1.1.1.2:7004
slots: (0 slots) master
replicates c71b628db058d5b7907c91491aa33ed16a76ad66
M: 70c02ebfe21fd9de0fe47b0fce4887657babbe21 1.1.1.2:7005
slots: (0 slots) master
replicates 9ce1d76fe3fac744466088050e227859d88875cd
M: eb0b49e4de19a9af2bf672d579e71e98c5169c7a 1.1.1.2:7006
slots: (0 slots) master
replicates fdf06f99b9ae32fbbddc8b3e196659487dfccf6f
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
创建OK了
8.登陆
redis-cli -c -h 1.1.1.2 -p 7003
输入
CLUSTER nodes
##显示如下信息
eb0b49e4de19a9af2bf672d579e71e98c5169c7a 1.1.1.2:7006 slave fdf06f99b9ae32fbbddc8b3e196659487dfccf6f 0 1473577533840 6 connected
fdf06f99b9ae32fbbddc8b3e196659487dfccf6f 1.1.1.2:7003 myself,master - 0 0 3 connected 10923-16383
70670e2a0c7f212306582836b4acf58aae9897f0 1.1.1.2:7004 slave c71b628db058d5b7907c91491aa33ed16a76ad66 0 1473577535862 4 connected
70c02ebfe21fd9de0fe47b0fce4887657babbe21 1.1.1.2:7005 slave 9ce1d76fe3fac744466088050e227859d88875cd 0 1473577532827 5 connected
9ce1d76fe3fac744466088050e227859d88875cd 1.1.1.2:7002 master - 0 1473577531815 2 connected 5461-10922
c71b628db058d5b7907c91491aa33ed16a76ad66 1.1.1.2:7001 master - 0 1473577534851 1 connected 0-5460
9.在任何一台master上,set 一个数值,那么在其他节点上都可以get到,集群搭建成功!