Redis Cluster集群搭建与问题处理

之前在OEL上装过一次redis集群,具体操作步骤没记,今天在自己的虚拟机CenterOS装一套开发环境,遇到点坑,干脆回忆了一下,把具体过程记录下来备忘,也给大家同步一下。

一、安装Redis

到redis官网https://redis.io/download下载redis的release包,上传到linux,我这里是以前下载好的redis-3.0.6.tar.gz。

解压

tar -xvf redis-3.0.6.tar.gz

二、创建cluster目录

我这里准备搭建3主3从的redis cluster集群,于是,我在redis同级创建了目录redis-cluster目录

mkdir redis-cluster

对应6个实例,分别创建一个工作目录

mkdir 7000 7001 7002 7003 7004 7005

在每个实例工作目录中创建redis.conf文件,最小配置信息如下:

port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

 其中port根据每个节点需要对应修改

三、启动实例

分别进入刚才创建的实例主目录,启动6个实例

cd ~/redis-cluster/7000

../../redis-3.0.6/src/redis-server redis.conf &

四、安装ruby和gem

我这里下意识的直接使用yum安装了ruby和gem

yum install ruby

yum install rubygems

安装非常顺利,然而,当我执行

gem install redis 

出现了问题

 

原来Centos默认支持ruby到2.0.0,但是gem要求ruby要大于2.2.2

于是,尝试了网上的方法,通过安装RVM更新ruby版本

curl -L get.rvm.io | bash -s stable

直接报错,说是SSL证书有问题,有人写了解决办法就是安装openssl,然后生成私钥,但是我觉得太麻烦了,参考https://blog.csdn.net/dawn_chen121/article/details/51084447

后来我找到一个比较简单可行的脚本,更改命令为

curl -sSL https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash

脚本来源不清楚了,但是确实装好了RVM

接着,应用RVM

source /usr/local/rvm/scripts/rvm

查看rvm库中已知的ruby版本

rvm list known

安装一个ruby版本

rvm install 2.6

使用一个ruby版本

rvm use 2.6

卸载一个已知版本

rvm remove 2.0.0

查看版本

ruby --version

再安装redis

gem install redis

然而,虽然没有出问题,但是最后一个命令跑了5分钟了才下载了500K,全部跑完居然要3个小时,果断直接ctrl+c取消了

然后网上下载了一个ruby2.5.1的安装包

 

然后解压编译

tar -xvf ruby-2.5.1.tar.gz
./configure
make && make instal 

OK,1分钟就安装好了。

再次执行gem install redis,安装成功。

五、启动集群

cd redis-3.0.6/src/

./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-trib.rb:1573: warning: key "threshold" is duplicated and overwritten on line 1573
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7003 to 127.0.0.1:7000
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
M: 3702ba353af705e021f1ac2463dd1f6395b3f581 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: e7aa916df30bd9ff09e8b68732fab86b07037b45 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: f93b9a715d091a55a09601ec19f8485f940f40c5 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
S: cf0a61e9cb71efa017de3db8ca2ca0c94623dec5 127.0.0.1:7003
   replicates 3702ba353af705e021f1ac2463dd1f6395b3f581
S: d7a34a190ab3814cfc25833641b99ee7cae33693 127.0.0.1:7004
   replicates e7aa916df30bd9ff09e8b68732fab86b07037b45
S: 704de83f29c2f56ee305d93f63adea24d5a479c0 127.0.0.1:7005
   replicates f93b9a715d091a55a09601ec19f8485f940f40c5
Can I set the above configuration? (type 'yes' to accept): yes

 脚本自动分配了主从方案,问我同意不,我其实是想看看如果不同意会怎么样,但是懒得折腾了,直接yes

然后,配置成功

>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 3702ba353af705e021f1ac2463dd1f6395b3f581 127.0.0.1:7000
   slots:0-5460 (5461 slots) master
M: e7aa916df30bd9ff09e8b68732fab86b07037b45 127.0.0.1:7001
   slots:5461-10922 (5462 slots) master
M: f93b9a715d091a55a09601ec19f8485f940f40c5 127.0.0.1:7002
   slots:10923-16383 (5461 slots) master
M: cf0a61e9cb71efa017de3db8ca2ca0c94623dec5 127.0.0.1:7003
   slots: (0 slots) master
   replicates 3702ba353af705e021f1ac2463dd1f6395b3f581
M: d7a34a190ab3814cfc25833641b99ee7cae33693 127.0.0.1:7004
   slots: (0 slots) master
   replicates e7aa916df30bd9ff09e8b68732fab86b07037b45
M: 704de83f29c2f56ee305d93f63adea24d5a479c0 127.0.0.1:7005
   slots: (0 slots) master
   replicates f93b9a715d091a55a09601ec19f8485f940f40c5
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

16384是分片的数量,7000节点储存0-5460的数据,从库为7003,7001存储5461-10922,从库为7004,7002存储10923-16383,从库为7005,所有节点接受配置。至此,集群搭建完毕,随便连接哪一个节点端口都可以访问整个集群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值