一、引言
再过一个周末,终于可以按步就班的工作了,想想就开心,哈哈哈哈~~~~
之前咱们从redis单机版、数据类型、高级应用、整合spring,终于到我们redis集群了。redis搭建redis集群也一样的简单,但是redis搭建集群涉及到了ruby脚本语言,可能有些同学听说过。ruby是一位日本的朋友开发的,具体介绍点击这里来查看!
二、redis集群环境的安装
为了保证ruby脚本能正常运行,所以我们先得安装ruby,按顺序执行以下命令。
yum install ruby
yum install rubygems
cd /usr/local/src/
wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem
gem install redis-3.2.1.gem
三、搭建redis集群
集群结构:咱们搭建3个redis的集群,每一个redis是一主一备,只是为了保证redis更高效的工作。如果在redis集群中并且没有备份节点的情况下,只要有其中一个redis服务挂掉了,则整个redis集群不可用,所以需要一个备份节点来保证。还是和以前一样,搭建在一台服务器上, 按实际来说应该是每一台服务上安装一个redis即可。
步骤一:创建redis的6个实例,一主一备,所以是6个redis实例。将单机版中的redis、或者是说将安装后的redis,其中有一个bin目录,复制到redis-cluster目录下,并改名为redis01、02、03.....,最后复制完成如下图。
安装单机版redis,可参考这篇文章:Linux搭建redis单机版环境
mkdir /usr/local/redis-cluster
cp -r bin /usr/local/redis-cluster/redis01 #先要进入redis安装目录,在执行此命令,记住需要改名执行6次
步骤二:修改每一个redis.conf文件,设置redis启动的端口号,切记不能重复,小编这里设置的端口号是:7001~7006。并且把 cluster-enabled yes 注释去掉。
步骤三:在redis安装解压包中,src目录下有个redis-trib.rb,复制到redis-cluster中。
cp src/*.rb /usr/local/redis-cluster/ #先需要进入到redis安装包解压后的目录中执行
步骤四:把6个redis实例全部启动。
步骤五:使用redis-trib.rb文件创建redis集群,这个.rb的文件也就是ruby脚本语言,执行以下命令。最后如下图,则表示搭建成功了。
./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006
四、可能会遇到的问题
问题一:`call': ERR Slot 0 is already busy (Redis::CommandError),Slot槽被占用了,可能是因为之前的redis配置信息、旧数据没有清理干净。
解决办法:使用客户端登录每一个redis实例,执行 flushall 和 cluster reset 就可以了。
问题二:Waiting for the cluster to join....... 一直在等待
解决办法:这个是因为redis集群不仅仅要开发redis客户端连接的端口号,还需要将redis集群总线的端口号开发。
redis总线的端口号是:redis连接端口+10000 ,比如连接端口7001,那么总线端口是17001