redis搭建最小的集群,3主3从
create.sh
脚本用于快速部署一个Docker化的Redis集群。首先,脚本创建了一个自定义的Docker网络redis-net
,并指定了子网以防止IP变动。接着,脚本设置了宿主机的公网IP,并生成了六个Redis节点的配置文件,每个配置文件都启用了集群模式、密码认证和外网访问。随后,脚本通过Docker启动六个Redis容器,分别映射到宿主机的不同端口,并挂载相应的配置文件。在容器启动后,脚本等待10秒以确保所有节点就绪,最后使用redis-cli
创建Redis集群,指定主从复制比例为1:1,并提供了密码认证。运行该脚本后,用户可以通过宿主机IP和指定端口访问Redis集群。
create.sh 创建docker-redis集群
#!/bin/bash# 创建 Docker 网络(指定子网,避免 IP 变动)
docker network create --subnet=172.18.0.0/16 redis-net# 设置宿主机公网 IP(替换为你的实际公网 IP 或域名)
HOST_IP="192.168.0.220" # 如果是内网测试,可以用内网IP;公网需用公网IP
echo "使用宿主机IP: ${HOST_IP}"# 创建 Redis 配置文件(关键:允许外网访问 + 密码认证)
for port in $(seq 7001 7006); docat > redis-${port}.conf <<EOF
bind 0.0.0.0
protected-mode no
port ${port}
requirepass 123456
masterauth 123456
cluster-enabled yes
cluster-config-file nodes-${port}.conf
cluster-node-timeout 5000
cluster-announce-ip ${HOST_IP}
cluster-announce-port ${port}
appendonly yes
EOF# 启动容器(映射宿主机端口到容器)docker run -d --name redis-${port} \--net redis-net \-p ${port}:${port} \-p 1${port}:1${port} \-v $(pwd)/redis-${port}.conf:/usr/local/etc/redis/redis.conf \redis:latest redis-server /usr/local/etc/redis/redis.conf
done# 等待所有节点启动(避免集群创建时节点未就绪)
sleep 10# 创建集群(必须使用宿主机公网IP + 密码参数)
docker run -it --rm --net redis-net redis:latest redis-cli \--cluster create \${HOST_IP}:7001 ${HOST_IP}:7002 ${HOST_IP}:7003 \${HOST_IP}:7004 ${HOST_IP}:7005 ${HOST_IP}:7006 \--cluster-replicas 1 \-a 123456
运行 create.sh
集群
连接效果: