赞
踩
docker pull redis:latest # 使用最新稳定版,也可以指定特定版本
docker network create redis-cluster-net
for i in 1 2 3; do
docker run -d --name redis-master-$i \
--network redis-cluster-net \
-p 6379${i}:6379 \
-v /path/to/redis-data/master-$i:/data \
redis:latest \
--appendonly yes \
--protected-mode no \
--port 6379 \
--cluster-enabled yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000
done
这里需要注意:
-p 6379${i}:6379
指定了对外暴露的端口,其中63791
、63792
和63793
分别是三个主节点的不同端口。-v /path/to/redis-data/master-$i:/data
是数据持久化,将容器内的/data
目录映射到宿主机的一个目录上,防止容器销毁后数据丢失。--protected-mode no
关闭保护模式,集群间的节点需要互相连接,所以需要禁用保护模式(生产环境中请谨慎考虑安全性)。for i in 1 2 3; do
docker run -d --name redis-replica-$i \
--network redis-cluster-net \
-p 6380${i}:6379 \
-v /path/to/redis-data/replica-$i:/data \
redis:latest \
--appendonly yes \
--protected-mode no \
--port 6379 \
--cluster-enabled yes \
--cluster-config-file nodes.conf \
--cluster-node-timeout 5000
done
首先,需要获取各个容器的IP地址,可以使用 docker inspect
命令获得。
然后,进入其中一个主节点的容器内部,执行集群创建命令:
docker exec -it redis-master-1 redis-cli --cluster create \
master1_ip:6379 \
master2_ip:6379 \
master3_ip:6379 \
replica1_ip:6379 \
replica2_ip:6379 \
replica3_ip:6379 \
--cluster-replicas 1
这里的 masterX_ip
和 replicaX_ip
应该替换为相应的容器IP地址。
在集群初始化之后,可以检查集群状态确保所有节点已加入:
docker exec -it redis-master-1 redis-cli -c --cluster check master1_ip:6379
请注意,实际部署时可能需要根据实际情况调整端口映射、数据卷映射以及集群配置参数。在生产环境中,还应当考虑配置哨兵模式以实现高可用性和故障转移。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。