目前redis 3.0以上版本都支持集群(cluster)了,安装包可以到官网上去下载:http://redis.io/download。在安装集群之前,必先安装redis(本文以redis-3.0.3为例),安装过程可以参考我的另一篇文章:Ubuntu server 15.0.4安装Redis
实现目标:新建6个instance,3个master,3个slave;
# mkdir cluster
# mkdir 7000 7001 7002 7003 7004 7005
这里我们创建了6个集群实力的节点目录备用。
# cp redis.conf ./cluster/redis.conf
打开文件编辑:
#sudo vi redis.conf这里可以使用最简单的vi命令来实现编辑和保存修改。
(2)、按Esc停止编辑状态;
(3)、使用:wq保存并退出文件编辑。
在port端口出修改port值并添加cluster的配置项,如下:
port 7000 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
# cp redis.conf ./7000/redis.conf
操作与2.4所述类似,这里只需要改port 就可以了。
#redis-server redis.conf
依次启动其他剩余节点,这里需要启动7000-7005的节点。
# ps -ef|grep redis
src下面的ruby脚本,建立集群: --replicas 1 的意思是每个master有1个slave。
./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
使用redis-cli命令,任意选择一个节点测试:
# ./redis-trib.rb check 127.0.0.1:7000
这里可以看到各个节点的角色是主(master)节点还是从(slave)节点。
先在cluster路径下创建7006,然后将7006节点实例启动:
# ./redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000
这里以7006节点为例,先查询节点的信息:
找到7006M所示的base64字符(M master节点的ID,S slave节点的ID),即上图红色区域值:
再次chek,集群已经把7006节点移除了。
注:这是因为没有安装ruby环境。
apt命令不能安装ruby,如果linux安装很久没用的情况下,需要执行sudo apt-get update。
注:sudo apt-get update作用是更新Linux系统资源访问连接(主要是deb包)。
执行安装ruby出现以下错误:
注意:这里直接用sudo gem intall redis 资源请求地址会报错,可以使用淘宝的gemsruby资源库(https://ruby.taobao.org/),基于 HTTP 协议的镜像服务, 请在配置中使用 HTTPS 协议代替。
Redis集群官方英文资料:http://redis.io/topics/cluster-tutorial
Redis集群官方中文资料:http://www.redis.cn/topics/cluster-tutorial.html
ruby + gem 常用命令:http://www.2cto.com/os/201307/227238.html
RubyGems 镜像 - 淘宝网:https://ruby.taobao.org/
通过redis-trib.rb脚本构建并增删改查redis cluster集群:http://www.tuicool.com/articles/bUVRNn2
待续。。。。。。。
集群的启动、停止,是否能通过一个命令来实现呢?英文文档上说了有,但是没测试成功,后续继续研究之,如果有深入研究的欢迎一起讨论!