之前介绍过《Docker部署可用于生产环境的Redis集群》,本篇再补充一下在没有Docker环境的前提下,部署Redis集群。

环境要求及准备

  • CentOS 7
  • redis-5.0.13安装包
  • 系统已经安装Development Tools

如果没有安装Development Tools的话,需要先安装一下:

1
yum groupinstall 'Development Tools'

部署规划

服务器IP 7000节点 7001节点 7002节点
10.10.11.54 Y Y Y
10.10.11.55 Y Y Y

编译安装

解压

1
mdkdir /usr/local/redis && tar -zxvf redis-5.0.13.tar.gz -C /usr/local/redis

编译并安装

1
2
3
4
5
cd /usr/local/redis/redis-5.0.13/deps;
make hiredis lua jemalloc linenoise
# 编译
cd /usr/local/redis/redis-5.0.13
make && make install

创建Redis节点配置

创建Redis相关目录

1
2
3
4
mkdir -p /data/redis
# 创建redis-7000 - redis-7002
mkdir -p /data/redis/redis-700{0..2}/data
mkdir -p /data/redis/redis-700{0..2}/conf

创建redis配置模板

1
touch /data/redis/redis-cluster.tmpl

填写如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# redis端口
port ${PORT}
# 关闭保护模式
protected-mode no
# 守护进程
daemonize yes
# 开启集群
cluster-enabled yes
# 集群节点配置 ,注意这里的文件 nodes.conf 的位置,是指在启动redis时的当前目录创建nodes.conf,也可以修改为绝对路径:/data/redis/redis-${PORT}/data/nodes.conf
cluster-config-file nodes.conf
# 超时
cluster-node-timeout 5000
# 集群节点IP host模式为宿主机IP 另一台服务器请修改为 :10.10.11.55
cluster-announce-ip 10.10.11.54
# 集群节点端口 7000 - 7002
cluster-announce-port ${PORT}
# 集群间通讯端口 17000 - 17002
cluster-announce-bus-port 1${PORT}
# 开启 appendonly 备份模式
appendonly yes
# 每秒钟备份
appendfsync everysec
# 对aof文件进行压缩时,是否执行同步操作
no-appendfsync-on-rewrite no
# 当目前aof文件大小超过上一次重写时的aof文件大小的100%时会再次进行重写
auto-aof-rewrite-percentage 100
# 重写前AOF文件的大小最小值 默认 64mb
auto-aof-rewrite-min-size 5120mb
# 关闭快照备份
save ""

创建各节点的配置文件

1
2
3
for port in `seq 7000 7002`; do \
PORT=${port} envsubst < /data/redis/redis-cluster.tmpl > /data/redis/redis-${port}/conf/redis.conf; \
done

创建Redis集群

启动各节点的Redis实例

1
2
3
4
5
cd /data/redis/redis-7000/data/ && redis-server /data/redis/redis-7000/conf/redis.conf;

cd /data/redis/redis-7001/data/ && redis-server /data/redis/redis-7001/conf/redis.conf;

cd /data/redis/redis-7002/data/ && redis-server /data/redis/redis-7002/conf/redis.conf;

如果redis-server不存在,可以将路径写全为:/usr/local/redis/redis-5.0.13/src/redis-server。如果配置了cluster-config-file的绝对路径,也可以使用下面的方式启动(如果不熟悉的话不太建议):

1
2
3
for port in `seq 7000 7002`; do \
PORT=${port} /usr/local/redis/redis-5.0.13/src/redis-server /data/redis/redis-${port}/conf/redis.conf; \
done

创建集群

1
redis-cli --cluster create 10.10.11.54:7000 10.10.11.54:7001 10.10.11.54:7002 10.10.11.55:7000 10.10.11.55:7001 10.10.11.55:7002 --cluster-replicas 1
  • cluster-replicas 从节点个数,1表示每个主节点需要1个从节点,目前的规模是三主三从

检查Redis集群

1
2
3
4
redis-cli -h 10.10.11.54 -p 7000

# 集群信息
CLUSTER INFO