docker 手工redis7.x cluster

IP 端口
192.168.0.81 6379/6380
192.168.0.82 6379/6380
192.168.0.114 6379/6380
js 复制代码
mdkir /data/{6379,6380}
js 复制代码
cat <<END> /data/6379.conf
# 端口号
port 6379

# 设置客户端连接后进行任何其他指定前需要使用的密码
#requirepass 123456
## 当master服务设置了密码保护时(用requirepass制定的密码)
# slav服务连接master的密码
#masterauth 123456

# daemonize no 将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
daemonize no

# 任何主机都可以连接到redis
bind 0.0.0.0

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
protected-mode no

# 开启AOF
appendonly yes

# 集群开关,如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。
cluster-enabled yes

# 集群配置文件的名称,此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
cluster-config-file nodes.conf

# 节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 15000

# 以下三个配置参数静态设定节点的运行参数, 包括对外IP, 普通Redis命令端口和集群桥接端口

# Redis Cluster 不支持NATted环境和IP地址或TCP端口被重映射(remapped)的环境。
# Docker使用一种名叫port mapping的技术, 运行于Docker容器内的程序实际对外使用的端口和监听的端口可不相同. 为了让Docker 兼容Redis Cluster, 需要使用Docker的host network模式。
#为了使Redis集群在这样的环境中工作,静态每个节点都知道需要其公共地址的配置
cluster-announce-ip 192.168.0.81

# 客户端连接端口
cluster-announce-port 6379

# 总线端口为普通端口port+10000,所谓Cluster bus, 即使用一种二进制协议(binary protocol)进行集群内点对点(node-to-node)通讯, 包括节点失效检测, 配置更新, 故障转移(failover)认证等
cluster-announce-bus-port 16379
END
js 复制代码
cat <<END> /data/6380.conf


# 端口号
port 6380

# 设置客户端连接后进行任何其他指定前需要使用的密码
#requirepass 123456
## 当master服务设置了密码保护时(用requirepass制定的密码)
# slav服务连接master的密码
#masterauth 123456

# daemonize no 将daemonize yes注释起来或者 daemonize no设置,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败
daemonize no

# 任何主机都可以连接到redis
bind 0.0.0.0

# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。
protected-mode no

# 开启AOF
appendonly yes

# 集群开关,如果配置yes则开启集群功能,此redis实例作为集群的一个节点,否则,它是一个普通的单一的redis实例。
cluster-enabled yes

# 集群配置文件的名称,此配置文件不能人工编辑,它是集群节点自动维护的文件,主要用于记录集群中有哪些节点、他们的状态以及一些持久化参数等,方便在重启时恢复这些状态。通常是在收到请求之后这个文件就会被更新。
cluster-config-file nodes.conf

# 节点互连超时的阀值。集群节点超时毫秒数
cluster-node-timeout 15000

# 以下三个配置参数静态设定节点的运行参数, 包括对外IP, 普通Redis命令端口和集群桥接端口

# Redis Cluster 不支持NATted环境和IP地址或TCP端口被重映射(remapped)的环境。
# Docker使用一种名叫port mapping的技术, 运行于Docker容器内的程序实际对外使用的端口和监听的端口可不相同. 为了让Docker 兼容Redis Cluster, 需要使用Docker的host network模式。
#为了使Redis集群在这样的环境中工作,静态每个节点都知道需要其公共地址的配置
cluster-announce-ip 192.168.0.81

# 客户端连接端口
cluster-announce-port 6380

# 总线端口为普通端口port+10000,所谓Cluster bus, 即使用一种二进制协议(binary protocol)进行集群内点对点(node-to-node)通讯, 包括节点失效检测, 配置更新, 故障转移(failover)认证等
cluster-announce-bus-port 16380
END

此处注意要绑定本地的主网卡IP 不是docker容器里的IP

最后启动

js 复制代码
#6379

docker run -d --name redis-6379 \
--net host --privileged=true \
-v /data/6379.conf:/etc/redis/redis.conf \
-v /data/6379:/data \
redis:7.0.8 redis-server /etc/redis/redis.conf
js 复制代码
#6380
docker run -d --name redis-6380 \
--net host --privileged=true \
-v /data/6380.conf:/etc/redis/redis.conf \
-v /data/6380:/data \
redis:7.0.8 redis-server /etc/redis/redis.conf
最后把他们串起来
js 复制代码
redis-cli --cluster create 192.168.0.114:6379 192.168.0.114:6380 192.168.0.81:6379 192.168.0.81:6380 192.168.0.82:6379 192.168.0.82:6380 --cluster-replicas 1
相关推荐
Patrick_Wilson4 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy4 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭4 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩5 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵6 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1116 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽7 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康9 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn8612 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
JLWcai2025100912 天前
铸造领域树脂砂轮|金利威多场景解决方案,20 + 配方覆盖全需求
mongodb·zookeeper·eureka·spark·rabbitmq·memcached·storm