redis-cluster集群搭建

此内容有部分转载,如有冲突,请联系本人,我会删除的。

搭建:

这里我准备了6个节点,就是6台虚拟机来测试。

IP:

192.168.200.31    192.168.200.32    192.168.200.33

192.168.200.34    192.168.200.35    192.168.200.36

首先就是安装redis,支持clusterredis只有3.0+版本。

正常的修改配置文件,相比单机版多了几条:

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

以上这几条基本可以看做是开启cluster功能。(但是切记,配置了这个功能以后,不要指定主从的IP具体那一条看下面图片)

 redis-cluster集群搭建

装完redis以后正常启动

redis-server /usr/local/redis/redis.conf 

将此命令复制

cp redis-trib.rb /usr/local/redis/bin/

ln -s /usr/local/redis/bin/* /usr/local/bin/

然后需要安装几个依赖包

yum -y install ruby ruby-devel rubygems rpm-build

如果6.5的镜像不够,可以配置公网YUM源,我就是这么装的,一个阿里的一个网易的

然后就算你是公网yum装完了也有可能遇到ruby报错,看下面这个ERROR

 

如果报这个错,请按照这个地址上的方法操作,贼鸡详细,贼鸡好用:

http://blog.csdn.net/fengye_yulu/article/details/77628094

我自己也给贴出来

 

 

在执行gem install redis时 
提示:

    gem install redis

    ERROR:  Error installing redis:

            redis requires Ruby version >= 2.2.2.

查了查资料,CentOS7 yum库中ruby的版本支持到 2.0.0,可gem 安装redis需要最低是2.2.2,自己编译的ruby源码,再执行还是报错…最后google结合几篇文章解决了: 
采用rvm来更新ruby: 
1.安装RVM:

    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

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

    find / -name rvm -print

/usr/local/rvm 
/usr/local/rvm/src/rvm 
/usr/local/rvm/src/rvm/bin/rvm 
/usr/local/rvm/src/rvm/lib/rvm 
/usr/local/rvm/src/rvm/scripts/rvm 
/usr/local/rvm/bin/rvm 
/usr/local/rvm/lib/rvm 
/usr/local/rvm/scripts/rvm

    source /usr/local/rvm/scripts/rvm

2.查看rvm库中已知的ruby版本

    rvm list known

MRI Rubies 
[ruby-]1.8.6[-p420] 
[ruby-]1.8.7[-head] # security released on head 
[ruby-]1.9.1[-p431] 
[ruby-]1.9.2[-p330] 
[ruby-]1.9.3[-p551] 
[ruby-]2.0.0[-p648] 
[ruby-]2.1[.10] 
[ruby-]2.2[.6] 
[ruby-]2.3[.3] 
[ruby-]2.4[.0] 
ruby-head 
…. 
3.安装一个ruby版本

rvm install 2.3.3

No checksum for downloaded archive, recording checksum in user configuration. 
ruby-2.3.3 - #extracting rubygems-2.6.12…. 
ruby-2.3.3 - #removing old rubygems……… 
ruby-2.3.3 - #installing rubygems-2.6.12……………………. 
ruby-2.3.3 - #gemset created /usr/local/rvm/gems/[email protected] 
ruby-2.3.3 - #importing gemset /usr/local/rvm/gemsets/global.gems…………..| 
ruby-2.3.3 - #generating global wrappers…….. 
ruby-2.3.3 - #gemset created /usr/local/rvm/gems/ruby-2.3.3 
ruby-2.3.3 - #importing gemsetfile /usr/local/rvm/gemsets/default.gems evaluated to empty gem list 
ruby-2.3.3 - #generating default wrappers…….. 
ruby-2.3.3 - #adjusting #shebangs for (gem irb erb ri rdoc testrb rake). 
Install of ruby-2.3.3 - #complete 
Ruby was built without documentation, to build it run: rvm docs generate-ri 
4.使用一个ruby版本

rvm use 2.3.3

Using /usr/local/rvm/gems/ruby-2.3.3 
[5].设置默认版本

rvm use 2.3.3 --default

Using /usr/local/rvm/gems/ruby-2.3.3 
[6].卸载一个已知版本

rvm remove 2.0.0

查看ruby版本:

ruby --version

ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

安装redis:

gem install redis

Fetching: redis-4.0.0.gem (100%) 
Successfully installed redis-4.0.0 
Parsing documentation for redis-4.0.0 
Installing ri documentation for redis-4.0.0 
Done installing documentation for redis after 1 seconds 
1 gem installed

 

以上gem install redis 做完,就可以执行下面这个命令实现集群生成了,然后输出内容如下:

redis-trib.rb create --replicas 1 192.168.200.31:6379 192.168.200.32:6379 192.168.200.33:6379 192.168.200.34:6379 192.168.200.35:6379 192.168.200.36:6379

 这里要注意了,如果你是很懒的,直接scp目录过去的,那小心nodes.conf这个文件,如果里面的nodesID相同,那就会出现

Waiting for the cluster to join.........................................................后面点个没完,连接不上的问题。

解决办法就是把每个节点上的那个文件删掉,然后重启redis就好了。

如果发生主从连接不上的状态,用info命令查看后发现masterslave无法正常连接,有可能是redis.conf配置文件里给设定了master密码,把密码那条删掉就好了。

redis-cluster集群搭建

redis-cluster集群搭建

记住-c参数。

 redis-cluster集群搭建

 最后,故障转移测试,    放宽来说cluster集群最高支持3个节点宕机,但这只是横向的,就是说,只能支持三个从节点,或者三个主节点宕机。如果有一主一从一起宕了,那就整个集群瘫痪。

有意思的是,cluster集群没有读写分离,所有主从都可以写入和读出。如果非要做也可以,进行二次开发。