关于集群的架构请参考redis集群架构
一、准备阶段
准备阶段略长,若已经熟悉redis cluster,可以跳过
1.需要安装ruby
在开始搭建redis之前,你需要确保你本地有ruby(2.0以上),且该ruby 中有redis 扩展包。
ruby 官网地址
ruby 官网安装教程
一般我都是直接下载安装(即官网教程里的“Building from Source”)安装完毕之后记得确认是否安装成功
//查看本机是否安装ruby,以及ruby版本
//注意这里的2.3.1 以及安装时间2016-05-01
$ ruby -v
ruby 2.3.1p481 (2016-05-01 revision 45883) [universal.x86_64-darwin13]
2.需要有ruby redis包
//验证是否安装好ruby redis扩展包:[这里查看ruby 扩展包有更好的办法请告诉我,我对ruby完全不熟悉]
//如果没有安装好ruby redis,请看"2.1 安装ruby redis 扩展包",
//如果已经安装好,直接看"二 实施阶段"
# find / -name "redis"
/Library/Ruby/Gems/2.3.1/gems/redis-3.0.6/lib/redis
2.1 安装ruby redis 扩展包
//查看你本地是否有gem,如果没有安装,请看"2.2 安装gem",否则请看下面内容
$ gem -v
2.0.14
#gem install redis -v 3.0.6
//因为gems官网的镜像在国外,所以国内网络经常断连。你需要链接一个国内镜像,我用的是https://ruby.taobao.org
//查看现在镜像的来源地址
$ gem sources -l
*** CURRENT SOURCES ***
https://rubygems.org/
/**
* 增加https://ruby.taobao.org为镜像,并且移除官网的https://rubygems.org/镜像
*/
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
//查看现在镜像的来源地址
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org
//安装ruby redis 3.0.6包[这个包需要与你本地的redis包的版本一致哦]
#gem install redis -v 3.0.6
//验证是否安装好redis扩展包:[这里查看ruby 扩展包有更好的办法请告诉我,我对ruby完全不熟悉]
# find / -name "redis"
/Library/Ruby/Gems/2.3.1/gems/redis-3.0.6/lib/redis
2.2 安装gem
rubygems官网下载地址
下载后就按照正常的安装步骤安装即可
//"./configure" 该步骤可以配置安装路径,以及其他参数,请查看帮助
$ ./configure
$ make
$ sudo make install
$ gem -v
2.0.14
3.你需要了解redis的架构
redis架构相关 http://blog.youkuaiyun.com/naixiyi/article/details/51335059
4.认识redis.conf文件关于redis集群(redis cluster)的配置
要使redis以集群方式启动,而不是普通单例方式启动,需要更改redis.conf文件以下字段.保存为demo_redis.conf
//这里的port 随意你定,你只要保证该端口7000以及(7000+10000)端口是空闲的即可。前者是用于服务client的端口。后者是用于各个实例相互通信的bus port,默认为服务client端口加10000
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
5.认识redis-trib.rb脚本
该脚本的位置在./../redis-3.0.6/src/redis-trib.rb。你可以查看有的各个命令
$ ./../redis-3.0.6/src/redis-trib.rb
Usage: redis-trib <command> <options> <arguments ...>
create host1:port1 ... hostN:portN
--replicas <arg>
check host:port
info host:port
fix host:port
--timeout <arg>
reshard host:port
--from <arg>
--to <arg>
--slots <arg>
--yes
--timeout <arg>
--pipeline <arg>
rebalance host:port
--weight <arg>
--auto-weights
--threshold <arg>
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
add-node new_host:new_port existing_host:existing_port
--slave
--master-id <arg>
del-node host:port node_id
set-timeout host:port milliseconds
call host:port command arg arg .. arg
import host:port
--from <arg>
--copy
--replace
help (show this help)
流程为
二 实施阶段(使用redis-trib.rb方法)
//再次确认
//ruby 已经安装
$ ruby -v
ruby 2.3.1p481 (2016-05-01 revision 45883) [universal.x86_64-darwin13]
//ruby redis 包已经安装
# find / -name "redis"
/Library/Ruby/Gems/2.3.1/gems/redis-3.0.6/lib/redis
//大致路径为
1.创建各个实例的目录
2.启动各个目录内的实例
3.连接各个实例
4.给各个实例分配slot
5.增加实例为master
5.1启动实例
5.2增加实例为master
5.3为新增加的master 再分区(resharding) ,即从其他master移动一些slot
6.增加一个实例为salve
6.1启动实例
6.2增加实例为master
7.通过master reshard删除一个master实例
7.1 移除改master 实例的slot
7.2 del-node
8.通过master failover删除一个master实例
8.1 人工备份一个master
8.2 del-node
9.删除一个salve 实例
1.创建各个实例的目录
//一般以port为目录名
$ ls -al
total 0
drwxr-xr-x 10 admin 340 5 8 16:38 .
drwxrwxr-x+ 81 root admin 2754 5 1 23:40 ..
drwxr-xr-x 3 admin 102 5 8 16:37 9001
drwxr-xr-x 3 admin 102 5 8 16:38 9002
drwxr-xr-x 3 admin 102 5 8 16:38 9003
drwxr-xr-x 3 admin 102 5 8 16:39 9004
drwxr-xr-x 3 admin