我安装Redis的服务器操作系统为Red Hat Enterprise Linux Server release 7.6(Maipo)因为之前已经安装了单机版本的Redis5.0.5,所以需要先停止Redis,停止命令如下:

1
src/redis-cli shutdown

居然没有停掉,看了下是因为我的redis设置了密码,接下来执行以下命令

1
2
3
src/redis-cli -h 8.8.8.8 -p 6379
auth [密码]
shutdown

现在显示redis已经成功被shutdown,接下来我们就来搭建集群模式吧

编译安装

输入以下命令

1
tar -zxvf redis-5.0.5.tar.gz

然后进行编译安装

1
2
cd redis-5.0.5
make

居然报错了,大概看了下提示gcc未安装,接下来我们安装gcc,下载gcc-4.8.5.tar.gz后执行以下命令

1
2
3
tar -zxvf gcc-4.8.5.tar.gz
cd gcc-4.8.5
rpm -ivh *.rpm --nodeps --force

安装的时候可能需要root权限,我的gcc-4.8.5.tar.gz中有以下文件

1
2
3
4
5
6
7
cpp-4.8.5-28.el7.x86_64.rpm
gcc-4.8.5-28.el7.x86_64.rpm
glibc-devel-2.17-222.el7.x86_64.rpm
glibc-headers-2.17-222.el7.x86_64.rpm
kerne 1-headers-3.10.0-862.el7.x86_64.rpm
1ibmpc-1.0.1-3.el7.x86_64.rpm
mpfr-3.1.1-4.el7.x86_64.rpm

等gcc安装完成后,我们再次执行以下命令

1
2
cd redis-5.0.5
make

居然还是报错,这次报什么jemalloc错误,为了解决这个报错我们使用下面的命令

1
2
cd redis-5.0.5
make MALLOC=libc/jemalloc

好了一切编译欧克,我们先启动测试下,是否能成功启动,输入以下命令

1
2
cd redis-5.0.5
src/redis-server redis.conf

从控制台打印信息看,启动一切ok

配置集群

首先创建几个文件夹,命令如下

1
2
3
4
5
6
7
8
9
cd redis-5.0.5
mkdir conf
mkdir datas
mkdir logs
mkdir pid
cd datas
mkdir 7001
mkdir 7002
mkdir 7003

redis集群最少需要6个节点(三从三主),我这边的机器是两台服务器,所以每台机器启动三个节点,因为三个配置文件中有部分内容是重复的,所以我们先来抽取重复内容,重复内容放到redis-5.0.5/conf/redis.conf中,内容如下

1
2
3
4
5
6
7
8
9
10
11
cluster -enabled yes
loglevel notice
cluster-node-timeout 15000
appendonly yes
appendfsync no
daemonize yes
protected-mode no
cluster-require-full-coverage no
cluster-migration-barrier 1
requirepass redis
masterauth redis

然后创建redis-5.0.5/conf/redis-7001.conf中,内容如下

1
2
3
4
5
6
7
8
include /opt/redis-5.0.5/conf/redis.conf
port 7001
cluster-config-file nodes-7001.conf
pidfile /opt/redis-5.0.5/pid/redis_7001.pid
dir /opt/redis-5.0.5/datas/7001/
dbfilename dump-7001.rdb
appendfilename "appendonly-7001.aof"
logfile "/opt/redis-5.0.5/logs/7001.log"

7002端口和7003端口对应的配置文件,可以执行以下命令来生成

1
2
sed 's/7001/7002/g' redis-7001.conf > redis-7002.conf
sed 's/7001/7003/g' redis-7001.conf > redis-7003.conf

启动集群

为了方便启动集群,我们来创建几个脚本吧,把启动命令全部写在脚本中,启动脚本为 start.sh。

1
2
3
4
5
#!/bin/sh
REDIS_HOME=/opt/redis
$REDIS_HOME/redis-5.0.5/src/redis-server $REDIS_HOME/conf/redis-7001.conf
$REDIS_HOME/redis-5.0.5/src/redis-server $REDIS_HOME/conf/redis-7002.conf
$REDIS_HOME/redis-5.0.5/src/redis-server $REDIS_HOME/conf/redis-7003.conf

为了让脚本能执行,我们给脚本加个执行权限,执行以下命令

1
chmod u+x start.sh

接下来,我们把/opt/redis文件夹压缩并传到另一台机器上,执行以下命令

1
2
tar -zcvf redis.tar.gz redis
scp redis.tar.gz sqczm@8.8.8.8:/opt

我们用ssh登陆另一台服务器,然后解压刚才传过去文件

启动集群

再启动集群前,我们需要先启动单点的redis,直接执行start.sh脚本即可(两台机器上都要执行这个脚本),运行起来后我们可以查看当前的redis进程

1
2
./start.sh
ps -ef|grep redis

单点的redis启动完毕后,我们再来将单点的redis加入到集群中,我们还需要创建一个集群启动脚本

1
2
#!/bin/sh
./redis-5.0.5/src/redis-cli -a redis --cluster create 8.8.8.8:7001 8.8.8.8:7002 8.8.8.8:7003 8.8.8.9:7001 8.8.8.9:7002 8.8.8.9:7003 --cluster-replicas 1

启动成功后,我们可以使用以下命令来测试状态

1
2
3
4
redis-cli -h 8.8.8.8 -p 7001 
auth redis
cluster info
cluster nodes

至此我们的集群创建并启动完毕

其它更详细的集群搭建过程,可参考CSDN的这篇博文