Redis Cluster 分布式集群,牺牲了数据的强一致性,来保证数据的可用性。也就是所谓的Redis从一个单纯的NoSQL内存数据库变成了分布式NoSQL数据库,CAP(Consistency & Availability & Partition-Tolerancy)模型也从CP变成了AP,三者只能取其二。
redis安装
下载地址可以到官方下载或者下载本站地址
配置修改
修改redis配置文件/home/work/redis/bin/redis.conf 如下内容
为保证集群的稳定性,数据冗余为1则至少需要3台Master和3台Slave(即一主对应一从),那么我们将开启6个端口来支持这6个redis服务(端口分别为6380-6385)。因此需要将redis配置拷贝6份,我们将配置也重命名为redis.conf.端口号,如图:
启动服务
可以按照/home/work/redis/bin/redis.server /home/work/redis/bin/conf/redis.conf.xxx 方式来启动6个实例,也可以批量启动
为了方便我提供了一个快速启动的脚本(见文末附件),即可以用如下方式启动、重启、或者停止服务。
如果执行顺利可以查看6个服务进程是否都已经启动。如果有问题可以按照日志进行排查(往往因为pid或log无权限写入,而导致启动失败)。
查看进程是否正常:
查看进程pid是否生成到对应文件:
集群部署
上面操作完成后,6个实例之间并没有任何关联,现在需要用到redis-trib管理器,但它依赖于ruby,因此需要先安装ruby以及rubygems
安装ruby之前需要先安装开发包支持
加入环境变量
|
|
下载rubygems
|
|
创建集群命令
格式如:/home/work/soft/redis-3.0.3/src/redis-trib.rb create –replicas ip1:port1 ip2:port2 ….
2)查看集群节点:
添加数据
接下来我们向集群中添加一些数据,执行命令:
连接集群
启动redis-cli时要加-c选项,不加-c选项如果查询到某个值不在该节点上会提示error
就能看到以错误形式显示出的MOVED重定向信息。
向集群添加节点
现在我们向集群中增加2个节点,一个Master和一个Salve节点,端口分别为(6386和6387)
首先和刚才一样复制2份redis配置,如下:
接下来启动新增的2个redis服务:
查看进程pid已经写入成功:
现在我们将端口为6386的节点作为Master添加到集群中,执行命令如:
我们再次查看集群节点可以看到端口为6386的node已经成为了Master.
接下来我们将端口为6387的作为Slave节点添加到端口为6386的Master下面,需要记录上图中的第一列中的MasterId执行命令如下:
查看一下添加的节点:
Resharding
接下来我们可以对集群中的slots重新分配,比如我们需要将端口为6380的Master中的5000slot分配给6386端口的Master,则可以执行如下命令:
我们再次查询key为”yh_2”时发现已经重定向到了6386端口上。
我们在来看下一下集群节点:
最后附上本文资源:redis启动脚本, redis-3.0.3 , rubygem 。
(The End)