redis-4.0.9集群

环境准备

操作系统:CentOS6.5

三台虚拟机IP:192.168.105.136,192.168.105.137,192.168.105.152

下载redis

官方网址:https://redis.io/download

本文所用到的版本为:redis-4.0.9.tar.gz

下载成功后在系统(192.168.105.152)上创建一个目录

[root@malonglong /]# mkdir redis

然后将安装包redis-4.0.9.tar.gz拷贝到redis目录下

[root@malonglong redis]# pwd

/redis

[root@malonglong redis]# ls

redis-4.0.9.tar.gz

安装gcc

[root@malonglong redis]# yum install gcc

Is this ok [y/N]: y

安装pstree

[root@malonglong redis]# yum install psmisc

Is this ok [y/N]: y

解压redis tar包

[root@malonglong redis]# tar -zxvf redis-4.0.9.tar.gz

编译安装

[root@malonglong redis-4.0.9]# make

[root@malonglong redis-4.0.9]# make install

启动redis

[root@malonglong src]# redis-server /redis/redis-4.0.9/redis.conf

启动成功后,如下图

打开redis客户端进行测试

以上表示已经启动成功,而且能正常使用。

在linux上安装redis相对来说比较简单,这一步大家应该都能搞定。

Redis集群

redis集群要求至少3主3从,这里我使用三台机器,每台机器安装三个redis节点。

因为redis集群需要安装ruby,配置集群,所以在一台机器上安装好之后,再拷贝其它两台机器,这样我们做的重复工作就比较少了,以下为三个机器的各个节点。

192.168.105.136:6001

192.168.105.136:6002

192.168.105.136:6003

192.168.105.137:6004

192.168.105.137:6005

192.168.105.137:6006

192.168.105.152:6007

192.168.105.152:6008

192.168.105.152:6009

安装ruby

[root@malonglong redis-4.0.9]# yum -y install ruby ruby-devel rubygems rpm-build

[root@malonglong redis-4.0.9]# gem install redis

安装过程中出现了一个错误

Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2,解决办法是 先安装rvm,再把ruby版本提升至2.4.0,解决方法如下

1. 安装curl

[root@malonglong ~]# sudo yum install curl

Is this ok [y/N]: y

2. 安装rvm

此过程如果出现 curl: (35) SSL connect error 升级网络安全服务即可

[root@malonglong ~]# yum update nss

Is this ok [y/N]: y

如果出现gpg: Can't check signature: No public key,执行以下即可解决此问题

[root@malonglong ~]# command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -

3. 添加source

[root@malonglong ~]# source /usr/local/rvm/scripts/rvm

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

[root@malonglong ~]# rvm list known

5. 安装一个ruby版本

[root@malonglong ~]# rvm install 2.4.0

6. 使用一个ruby版本

[root@malonglong ~]# rvm use 2.4.0

7. 卸载一个已知版本

[root@malonglong ~]# rvm remove 2.2.2

8. 查看版本

[root@malonglong ~]# ruby --version

9. 再安装redis

[root@malonglong ~]# gem install redis

安装成功,如下图

修改redis.conf

打开redis.conf文件,把下面列出来的配置项全部注释掉,将下面7条拷贝到redis.conf文件末尾

port 6007

bind 192.168.105.152

daemonize yes

cluster-enabled yes

cluster-config-file nodes-6007.conf

cluster-node-timeout 15000

pidfile /var/run/redis_6007.pid

创建redis节点

1. 在redis目录下创建文件夹6007,6008,6009

[root@malonglong redis-4.0.9]# mkdir 6007 6008 6009

在每个文件夹下面拷贝一个redis.conf文件,将以下3条中对应的端口修改成各自的节点端口

port 6008

cluster-config-file nodes-6008.conf

pidfile /var/run/redis_6008.pid

每个节点对应一个redis.conf文件,有多少个节点需要修改多少 次,修改后如下图所示

修改完成后启动对应的节点,启动时显性启动

[root@malonglong src]# redis-server /redis/redis-4.0.9/6007/redis.conf

[root@malonglong src]# redis-server /redis/redis-4.0.9/6008/redis.conf

[root@malonglong src]# redis-server /redis/redis-4.0.9/6009/redis.conf

检查各 Redis节点的启动情况

[root@malonglong ~]# ps aux|grep redis

从上图可知192.168.105.152上的三个redis节点运行正常。

克隆系统

克隆两台操作系统,并且每台系统的redis.conf中的bind修改成对应的IP,port修改成对应的端口。

开端口

所有服务器需要开通redis的客户端连接端口和集群总线端口,集群总线端口为redis客户端连接的端口 +10000,如redis端口为6007,则集群总线端口为16007

启动集群

启动集群之前每台服务器上的redis节点都需要启动。

[root@malonglong ~]# /redis/redis-4.0.9/src/redis-trib.rb create --replicas 1 192.168.105.136:6001 192.168.105.136:6002 192.168.105.136:6003 192.168.105.137:6004 192.168.105.137:6005 192.168.105.137:6006 192.168.105.152:6007 192.168.105.152:6008 192.168.105.152:6009

创建集群时出现了一个错误,如下图

此问题的原因是rubygem没有安装

[root@malonglong ~]# yum install -y rubygems

继续创建集群,出现如下图错误

出现此问题的原因是:安装完redis后,对其进行过操作,有数据存在。

解决方法

1. 删除此路径下的 pidfile /var/run/redis_*.pid 文件

2. 删除dbfilename dump.rdb文件

3. 重启redis

继续创建集群,还是有点问题

/usr/local/rvm/gems/ruby-2.4.0/gems/redis-4.0.1/lib/redis/client.rb:119:in `call': ERR Slot 14935 is already busy (Redis::CommandError)

造成此问题的原因是:上一次配置集群失败时留下的配置信息导致的,删除nodes-*.conf文件,重启redis节点。

将所有集群节点的配置文件(nodes-*.conf)删除就可以了。好了,集群已创建成功

仔细观察这张图,其中

192.168.105.136:6001

192.168.105.137:6004

192.168.105.152:6007

192.168.105.136:6002

被自动设置成了主节点

192.168.105.136:6003

192.168.105.137:6005

192.168.105.137:6006

192.168.105.152:6008

192.168.105.152:6009

被自动设置成了从节点,而且每个从节点对应哪个主节点都有说明。

访问redis集群

在192.168.105.152机器上进行redis集群的连接

root@malonglong src]# redis-cli -h 192.168.105.152 -c -p 6007

在192.168.105.152:6007节点上写一条数据,如下图

退出redis客户端,再连接到192.168.105.136:6001节点上进行查询

[root@malonglong src]# redis-cli -h 192.168.105.136 -c -p 6001

好了,成功了!

以上如果有疑问,可留言交流~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G1Z5XT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券