Docker 快速搭建 Redis 主从集群(单机版)

in Tech Docker Redis

简介

Redis 集群至少需要三个主节点,为了高可用,至少各配一个从节点,总共需要六个节点。基于单机 Centos 8 系统搭建,因此需要开放六个端口加以区分。

端口开放范围

6379 ~ 6384

编辑基础配置文件

vi /data/redis/redis-cluster.tmpl

port ${PORT}
requirepass password
masterauth password
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip xxx.xx.xxx.xxx
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes

port #端口
requirepass #密码
masterauth #主节点的认证密码
cluster-enabled #是否开启集群
cluster-config-file #集群配置文件
cluster-node-timeout #集群节点超时时间
cluster-announce-ip #集群通信IP。开放给外部网络访问,需要公网ip
cluster-announce-port #集群端口
cluster-announce-bus-port #集群总线端口(10000+port)
appendonly #AOF 持久化

创建各个节点的配置文件

在 /data/redis/ 路径下执行如下命令

for port in $(seq 6379 6384); \
do \
  mkdir -p ./${port}/conf  \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

创建各个节点容器

for port in $(seq 6379 6384); \
do \
   docker run -it -d \
  --name redis-${port} \
  --net host \
  --restart always \
  -v /data/redis/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  -v /data/redis/${port}/data:/data \
  redis:latest \
  redis-server /usr/local/etc/redis/redis.conf; \
done

--name 容器名称
--net 网络模式
--restart 容器启动模式
-v 挂载
redis:latest 指定镜像及版本
redis-server /usr/local/etc/redis/redis.conf 启动命令

进入任意节点

docker exec -it redis-6379 /bin/bash

组建集群

redis-cli -a password --cluster create ip:6379 ip:6380 ip:6381 ip:6382 ip:6383 ip:6384 --cluster-replicas 1

查看集群

redis-cli -a password cluster nodes

启动集群

for port in $(seq 6379 6384); \
do \
   docker start redis-${port}; \
done