1、准备工作
1.1 配置文件
从官网下载redis.conf配置文件。并将配置文件中的相关配置按照下方进行修改:
# 注释掉bind
# bind 127.0.0.1
port ${PORT}
# 设置集群的密码
requirepass ${password}
# 主节点的密码
masterauth ${password}
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip ${IP}
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
1.2 编写创建文件脚本
由于集群至少需要6个节点,如果手动进行创建会比较繁琐,因此使用脚本文件直接进行创建(就是将上方的redis.conf中的定义参数进行替换 )。
# 使用本机IP
ip=127.0.0.1
# 定义集群密码
password=123456
for port in `seq 6380 6385`; do \
mkdir -p ./cluster-node-${port}/conf \
&& PORT=${port} envsubst < ./redis.conf > ./cluster-node-${port}/conf/redis.conf \
&& mkdir -p ./cluster-node-${port}/data \
&& mkdir -p ./cluster-node-${port}/logs; \
done
2、安装容器
2.1 创建文件
将redis.conf和redis-cluster-config.sh文件放到同一个目录下,然后执行脚本文件。
[java@localhost docker]$ bash redis-cluster-config.sh

2.2 创建容器
在目录下新建docker-compose.yml文件,并在文件中添加如下内容:
version: "3.3"
services:
redis-master-6380:
container_name: redis-master-6380
image: redis:6.2.6-alpine
ports:
- 6380:6380
- 16380:16380
volumes:
- ./cluster-node-6380/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./cluster-node-6380/logs:/usr/local/redis/logs
- ./cluster-node-6380/data:/data
environment:
- TZ=Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: always
redis-master-6381:
container_name: redis-master-6381
image: redis:6.2.6-alpine
ports:
- 6381:6381
- 16381:16381
volumes:
- ./cluster-node-6381/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./cluster-node-6381/logs:/usr/local/redis/logs
- ./cluster-node-6381/data:/data
environment:
- TZ=Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: always
redis-master-6382:
container_name: redis-master-6382
image: redis:6.2.6-alpine
ports:
- 6382:6382
- 16382:16382
volumes:
- ./cluster-node-6382/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./cluster-node-6382/logs:/usr/local/redis/logs
- ./cluster-node-6382/data:/data
environment:
- TZ=Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: always
redis-slave-6383:
container_name: redis-slave-6383
image: redis:6.2.6-alpine
ports:
- 6383:6383
- 16383:16383
volumes:
- ./cluster-node-6383/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./cluster-node-6383/logs:/usr/local/redis/logs
- ./cluster-node-6383/data:/data
environment:
- TZ=Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: always
redis-slave-6384:
container_name: redis-slave-6384
image: redis:6.2.6-alpine
ports:
- 6384:6384
- 16384:16384
volumes:
- ./cluster-node-6384/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./cluster-node-6384/logs:/usr/local/redis/logs
- ./cluster-node-6384/data:/data
environment:
- TZ=Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: always
redis-slave-6385:
container_name: redis-slave-6385
image: redis:6.2.6-alpine
ports:
- 6385:6385
- 16385:16385
volumes:
- ./cluster-node-6385/conf/redis.conf:/usr/local/etc/redis/redis.conf
- ./cluster-node-6385/logs:/usr/local/redis/logs
- ./cluster-node-6385/data:/data
environment:
- TZ=Asia/Shanghai
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
restart: always
启动docker容器的创建:
[java@localhost docker]$ sudo docker-compose up -d
等待容器创建完成使用docker ps进行查看。

3、创建集群
通过上面步骤创建完容器后,需要手动创建集群环境。
# 注意:此处的ip(127.0.0.1)和密码(123456)需要和上面redis-cluster-config.sh中的配置一致
[java@localhost docker]$ sudo docker exec -it redis-master-6380 redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 -a 123456 --cluster-replicas 1
等待集群创建完成。
Comments NOTHING