RedisCluster搭建 前言 现在越来越多的公司开始使用redis cluster,这就要求大家能够学会快速搭建redis cluster集群,在官网上也是有很详细的入门指导,本文章只是自己搭建后总结,主要使用两种方式搭建:1. 官网上使用的redis-trib.rb脚本构建集群;2. 使用shel 命令搭建。
准备 因为两种方式都需要提前启动好相应的redis实例,因为将公共步骤放在准备工作中。这一步比较简单,主要是按端口新建不同文件夹,然后复制redis.conf,修改其中port对应的端口。集群高可用需要至少三个node,本次采用3 master、3slave架构。步骤如下: 1.
1 2 mkdir 9000 cp redis.conf 9000/
修改复制后的redis.conf: cluster-enabled yes port 9000
1 src/redis-server 9000/redis.conf
然后重复以上操作 9001-9005
rb脚本创建 准备操作中已经建立了6个独立的node,接下来执行以下脚本:
1 /src/redis-trib.rb create --replicas 1 127.0.0.1:9000 127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003 127.0.0.1:9004 127.0.0.1:9005
在执行脚本后,确认自动计算的分配方案,即可搭建好redis cluster集群
shell创建 1.集群meet
1 2 3 4 5 src/redis-cli -p 9000 cluster meet 127.0.0.1 9001 src/redis-cli -p 9000 cluster meet 127.0.0.1 9002 src/redis-cli -p 9000 cluster meet 127.0.0.1 9003 src/redis-cli -p 9000 cluster meet 127.0.0.1 9004 src/redis-cli -p 9000 cluster meet 127.0.0.1 9005
2.划分master,slave
1 2 3 4 5 6 7 src/redis-cli -c -h 127.0.0.1 -p 9001 cluster nodes 14fca7a90ad3f680c9466c018cb890b5a8717c15 127.0.0.1:9005 master - 0 1468651448427 0 connected a3fb3e01351afad2aa67affaaef5e2f689c3a007 127.0.0.1:9001 myself,master - 0 0 5 connected fcb1557f223b6a7e34d1653e3e255f60eedf8d1f 127.0.0.1:9002 master - 0 1468651450831 0 connected 0966d47c01d6725206fa04c0d673072a87cbc76a 127.0.0.1:9003 master - 0 1468651449829 2 connected 5ba760249e5dfc478f5066a98922e0f3268075fd 127.0.0.1:9000 master - 0 1468651448827 1 connected c0688867266abd0e08781a1acff4d12bf140b017 127.0.0.1:9004 master - 0 1468651451871 3 connected
根绝ID指定为哪个node的slave
1 2 3 src/redis-cli -c -h 127.0.0.1 -p 9003 cluster replicate 5ba760249e5dfc478f5066a98922e0f3268075fd src/redis-cli -c -h 127.0.0.1 -p 9004 cluster replicate a3fb3e01351afad2aa67affaaef5e2f689c3a007 src/redis-cli -c -h 127.0.0.1 -p 9005 cluster replicate fcb1557f223b6a7e34d1653e3e255f60eedf8d1f
3.分配slot 因为cluster addslots命令不支持区间分配slot,因此只能借助shell实现分配slot redis.sh如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #/bin/sh function addslots() { for i in `seq $2 $3`;do src/redis-cli -p $1 cluster addslots $i done } case $1 in addslots) echo "add slots ..." addslots $2 $3 $4; ;; *) echo "Usage: inetpanel [addslots]" ;; esac
执行shell
1 2 3 ./redis.sh addslots 9000 0 5460 ./redis.sh addslots 9001 5461 10921 ./redis.sh addslots 9002 10922 16383
至此redis cluster 搭建完毕!