Redis集群搭建(单设备,多设备)

准备

⑴ 系统环境:Nitrux-Release-1.0.9-5 和 Centos-7
⑵Redis版本:Redis-4.0.8
国内下载地址(比较慢):https://redis.io/
国外下载地址:http://www.redis.cn/

第一步 安装Redis

已经安装过的直接看第二步

安装的就简单了,把安装包下载下来,解压,编译,运行即可。

命令行下移动到软件包所存放的目录,运行下面指令解压

tar -zxvf redis-4.0.8.tar.gz

多台服务器搭建redis集群 redis多机部署_Redis

解压完成后移动到任意目录,看你喜欢,不移动也是可以的。我这里被我移动到了/home/alex/Software/redis-4.0.8/6379这个目录下面:

多台服务器搭建redis集群 redis多机部署_Centos_02

执行指令make进行编译:

多台服务器搭建redis集群 redis多机部署_集群_03

等待编译完成后,执行指令

src/redis-server

多台服务器搭建redis集群 redis多机部署_多台服务器搭建redis集群_04

出现如下界面说明安装并运行成功。

多台服务器搭建redis集群 redis多机部署_集群_05

完美。

第二步 单设备集群配置

在单机情况下,我们要用6个端口模拟6台主机,实现单设备集群。现在就一步一往下走。

1、修改redis.conf文件

修改redis.conf文件,可以先拷贝一份再做修改

cp redis.conf redis.conf2

多台服务器搭建redis集群 redis多机部署_Redis_06

修改我们刚刚拷贝的文件,需要修改的内容如下:

⑴屏蔽限制本地访问,在bind 127.0.0.1之前加#

多台服务器搭建redis集群 redis多机部署_集群_07

protected-mode后的yes改为no

多台服务器搭建redis集群 redis多机部署_Linux_08

daemonize后的no改为yes

多台服务器搭建redis集群 redis多机部署_Centos_09

⑷去掉cluster-enabled yes前面的#(按Esc键退出i编辑模式,输入/,再输入cluster-enabled,回车,就可以快速找到)

多台服务器搭建redis集群 redis多机部署_多台服务器搭建redis集群_10

⑸去掉cluster-node-timeout 15000前面的#(按Esc键退出i编辑模式,输入/,再输入cluster-node-timeout,回车,就可以快速找到)

多台服务器搭建redis集群 redis多机部署_Centos_11

执行完上面五步,按Escwq退出保存。

2、拷贝redis文件夹

将上面修改完成的redis.conf文件的文件夹分别拷贝一份到刚刚创建的6个文件夹里面。

cp -r redis cluster/7000
cp -r redis cluster/7001
cp -r redis cluster/7002
cp -r redis cluster/7003
cp -r redis cluster/7004
cp -r redis cluster/7005

多台服务器搭建redis集群 redis多机部署_多台服务器搭建redis集群_12

3、再次修改redis.conf文件

刚刚并没有修改端口号,现在就到各个文件夹底下修改redis.conf文件里面port后面的数字,即端口号,对应各个文件夹。

再次修改<code>redis.conf</code>文件1

再次修改<code>redis.conf</code>文件2

修改结果

再次修改<code>redis.conf</code>文件3

4、分别启动Redis服务

需要修改的部分已经完全修改完成,现在分别启动6个不同端口的服务。(切记,进入对应目录启动)

src/redis-server ./redis.conf

多台服务器搭建redis集群 redis多机部署_Centos_16

各个服务启动成功

多台服务器搭建redis集群 redis多机部署_集群_17

5、集群配置

进入/home/alex/Software/redis-4.0.8/cluster/7005/src下,执行创建集群语句,报了一个错,如下(没报错的可以忽略)

./redis-trib.rb  create  --replicas  1   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  127.0.0.1:7000

多台服务器搭建redis集群 redis多机部署_Linux_18

出现报错:安装ruby和redis接口

apt install ruby
gem install redis

多台服务器搭建redis集群 redis多机部署_Centos_19

多台服务器搭建redis集群 redis多机部署_Redis_20

安装完成后,再次执行创建集群指令:

多台服务器搭建redis集群 redis多机部署_Linux_21

单机集群配置成功

多台服务器搭建redis集群 redis多机部署_集群_22

第三步 多设备集群配置

第三部分我将介绍多台设备的集群配置以及在原有的集群配置上面加入新的设备。

环境介绍:虚拟机3台

多台服务器搭建redis集群 redis多机部署_集群_23

它们的IP地址分别是:
1. Nitrux-Release-1.0.9-5: 10.16.71.126 (别名Node1)
2. CentOS-64-01: 10.16.71.149 (别名Node2)
3. CentOS-64-02: 10.16.71.125 (别名Node3)

多台设备的集群配置

这一部分我就不会再详细介绍,多设备集群实现与单机集群的实现大同小异。所以,我就把不同的地方拿出来介绍一下,其他与单机集群相同的我就不再重复介绍。

上面我们给出了3个虚拟机,在这部分我只需要用到其中两个,如果说你会配置两个就一定会配置三个四个,所以说我在这里只用到两个。

好,现在选择Node1和Node2作为本次操作演示。在Node1启动4个Redis服务,在Node2启动2个Redis服务。

不同点一

bind需要填写真实地址

多台服务器搭建redis集群 redis多机部署_Redis_24

不同点二

文件名称不可相同,自定。(按Esc键退出i编辑模式,输入/,再输入cluster-config-file,回车,就可以快速找到)

多台服务器搭建redis集群 redis多机部署_多台服务器搭建redis集群_25

其他照常

⑴启动Node2的2个Reids服务

多台服务器搭建redis集群 redis多机部署_集群_26

⑵启动Node1的4个Reids服务

多台服务器搭建redis集群 redis多机部署_Centos_27

⑶创建集群

./redis-trib.rb  create  --replicas  1 10.16.71.126:7000 10.16.71.126:7001 10.16.71.126:7002 10.16.71.126:7003 10.16.71.149:7000 10.16.71.149:7001

多台服务器搭建redis集群 redis多机部署_Linux_28

创建集群成功,和单机操作方式完全相同

多台服务器搭建redis集群 redis多机部署_集群_29

⑷测试一下

多台服务器搭建redis集群 redis多机部署_多台服务器搭建redis集群_30

完美

可能出现错误

(有新错误欢迎留言告知)

错误1:

无法连接到远程Redis服务器。

多台服务器搭建redis集群 redis多机部署_Linux_31

此时在远程服务器输入以下指令可以解决

iptables -F

集群加入新设备

当集群各个节点扛不住业务的需要时,我们可能需要往集群里添加新的节点以供业务的正常使用,现在介绍如何添加新节点。

⑴在Node3上面启动2两个Redis服务

多台服务器搭建redis集群 redis多机部署_Redis_32

⑵加入主节点

./redis-trib.rb add-node 10.16.71.125:7000 10.16.71.126:7001

第一个地址为要加入集群的地址
第二个地址为存在集群内的任意主地址

多台服务器搭建redis集群 redis多机部署_Linux_33

src/redis-cli -c -h 10.16.71.126 -p 7002 cluster nodes

检查一下发现已经添加进来

多台服务器搭建redis集群 redis多机部署_Redis_34

⑶加入为从节点

./redis-trib.rb add-node --slave --master-id 7614c25cc902f21da6725a39b310422707395aa9  10.16.71.125:7001 10.16.71.126:7003

接下来还要把7001做为7000的从节点也加入到集群里边儿来,这里的话我们首先要记住7001这个主节点的节点id,从节点加入到集群的时候要用到.。

第一个参数:从节点对应主节点的id号
第二个参数:从节点本身
第三个参数:在集群内的任意一个才节点的地址

多台服务器搭建redis集群 redis多机部署_多台服务器搭建redis集群_35

验证一下:

多台服务器搭建redis集群 redis多机部署_Linux_36

好,已经加进来了。

参考内容

  1. redis集群搭建(同机器、不同机器搭建)
  2. Redis Cluster error
    https://stackoverflow.com/questions/37193338/redis-cluster-error
  3. Could not connect to Redis No route to host问题解决
  4. (error) MOVED 原因和解决方案
    https://www.fashici.com/tech/356.html
  5. redis cluster 集群配置示例: 创建, 添加节点, 重新分片, 删除节点