新建目录,并建临时文件
mkdir /opt/redis-cluster && cd /opt/redis-cluster
cat > redis-cluster.tmpl <<EOF
port ${PORT}
requirepass 1234
masterauth 1234
protected-mode no
daemonize no
appendonly yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-ip 192.168.50.111
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
EOF
创建每个节点所需目录和配置文件
for port in `seq 6371 6376`; \
do \
mkdir -p ${port}/conf && \
PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf && \
mkdir -p ${port}/data;\
done
编写docker-compose文件
cat > docker-compose.yaml <<EOF
version: '3'
# 定义服务,可以多个
services:
redis-6371: # 服务名称
image: redis # 创建容器时所需的镜像
container_name: redis-6371 # 容器名称
restart: always # 容器总是重新启动
network_mode: "host" # host 网络模式
volumes: # 数据卷,目录挂载
- /opt/redis-cluster/6371/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis-cluster/6371/data:/data
command: redis-server /usr/local/etc/redis/redis.conf # 覆盖容器启动后默认执行的命令
redis-6372:
image: redis
container_name: redis-6372
restart: always
network_mode: "host"
volumes:
- /opt/redis-cluster/6372/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis-cluster/6372/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-6373:
image: redis
container_name: redis-6373
restart: always
network_mode: "host"
volumes:
- /opt/redis-cluster/6373/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis-cluster/6373/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-6374:
image: redis
container_name: redis-6374
restart: always
network_mode: "host"
volumes:
- /opt/redis-cluster/6374/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis-cluster/6374/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-6375:
image: redis
container_name: redis-6375
restart: always
network_mode: "host"
volumes:
- /opt/redis-cluster/6375/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis-cluster/6375/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-6376:
image: redis
container_name: redis-6376
restart: always
network_mode: "host"
volumes:
- /opt/redis-cluster/6376/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /opt/redis-cluster/6376/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
EOF
构造
docker-compose up -d
创建集群
docker exec -it redis-6371 bash
redis-cli -a 1234 --cluster create 192.168.50.111:6371 192.168.50.111:6372 192.168.50.111:6373 192.168.50.111:6374 192.168.50.111:6375 192.168.50.111:6376 --cluster-replicas 1
redis-cli -a 1234 --cluster check 192.168.50.111:6371
评论区