1.Redis cluster 除了当前默认的 6379 端口, 还会在这端口的基础上 +10000 开个总线 (bus) 端口 16379,bus 是控制集群之间的通信通道, 搭建 clusters 必不可少
2. 在 docker-compose 中映射出去后, 需要配置–cluster-announce 相关参数告知本地的集群, 不然即使在 create 过程 host.docker.internal:6380 能找到相应主机, 但该主机内部会以为自己是 localhost:6379 最后导致错误
了解这两点, 就很容易实现 Docker 中的 Redis 集群搭建了
docker-compose.yml
services:
redis0:
image: redis:latest
ports:
- "6380:6379"
- "16380:16379"
command: >
redis-server
--appendonly yes
--cluster-enabled yes
--cluster-config-file nodes.conf
--cluster-announce-ip host.docker.internal
--cluster-announce-port 6380
--cluster-announce-bus-port 16380
volumes:
- redis0-data:/data
redis1:
image: redis:latest
ports:
- "6381:6379"
- "16381:16379"
command: >
redis-server
--appendonly yes
--cluster-enabled yes
--cluster-config-file nodes.conf
--cluster-announce-ip host.docker.internal
--cluster-announce-port 6381
--cluster-announce-bus-port 16381
volumes:
- redis1-data:/data
redis2:
image: redis:latest
ports:
- "6382:6379"
- "16382:16379"
command: >
redis-server
--appendonly yes
--cluster-enabled yes
--cluster-config-file nodes.conf
--cluster-announce-ip host.docker.internal
--cluster-announce-port 6382
--cluster-announce-bus-port 16382
volumes:
- redis2-data:/data
volumes:
redis0-data:
redis1-data:
redis2-data:
在文件目录下执行指令
docker-compose up -d
docker exec -it redis0 redis-cli --cluster create host.docker.internal:6380 host.docker.internal:6381 host.docker.internal:6382 --cluster-replicas 0 --cluster-yes
这样就已经搭建好了, 我们进入测试
docker exec -it redis0 redis-cli -c
# 随便输入
可以看到很丝滑的分片运作, 集群搭建成功!
正文完
发表至: 开源脚本
2024-12-12