前置准备:
Centos7安装docker就不多说了…
- 本次目的是搭建3主3从(当然你也可以按需扩展)
- 准备三台服务器,假定IP分别为:192.168.75.128、192.168.75.129、192.168.75.130
- 安装 redis:
#拉取redis
docker pull redis:5.0.2
#创建容器并运行
docker run --name redis -p 6379:6379 -d redis:5.0.2
1、准备docker-compose.yml文件
注意:最好在服务器上找个专门的文件夹存放这些yml文件,免得后面找不到了
1.1 服务器A【192.168.75.128】
# 文件名: docker-compose.yml(部署在每台服务器上)
version: '3.3'
services:
# 服务器 192.168.75.128 配置
redis-master1:
image: redis:5.0.2
command: redis-server --port 7001 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.128
ports:
- "7001:7001"
- "17001:17001"
volumes:
- ./data/node1:/data
networks:
- redis-cluster
redis-slave1:
image: redis:5.0.2
command: redis-server --port 7002 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.128
ports:
- "7002:7002"
- "17002:17002"
volumes:
- ./data/node2:/data
networks:
- redis-cluster
# 定义 redis-cluster 网络
networks:
redis-cluster:
driver: overlay # 单机部署使用 bridge,多机部署可改用 overlay
attachable: true # 允许独立容器加入网络
# 服务器 192.168.75.129 和 192.168.75.130 的配置类似,需替换 IP 和数据目录:
# 192.168.75.129: redis-master2 (7003), redis-slave2 (7004)
# 192.168.75.130: redis-master3 (7005), redis-slave3 (7006)
1.2 服务B【192.168.75.129】
# 文件名: docker-compose.yml(部署在每台服务器上)
version: '3.3'
services:
# 服务器 192.168.75.129 配置
redis-master1:
image: redis:5.0.2
command: redis-server --port 7003 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.129
ports:
- "7003:7003"
- "17003:17003"
volumes:
- ./data/node3:/data
networks:
- redis-cluster
redis-slave1:
image: redis:5.0.2
command: redis-server --port 7004 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.129
ports:
- "7004:7004"
- "17004:17004"
volumes:
- ./data/node4:/data
networks:
- redis-cluster
# 定义 redis-cluster 网络
networks:
redis-cluster:
driver: overlay # 单机部署使用 bridge,多机部署可改用 overlay
attachable: true # 允许独立容器加入网络
# 服务器 192.168.75.128 和 192.168.75.130 的配置类似,需替换 IP 和数据目录:
# 192.168.75.128: redis-master1 (7001), redis-slave1 (7002)
# 192.168.75.130: redis-master3 (7005), redis-slave3 (7006)
1.3 服务器C【192.168.75.130】
# 文件名: docker-compose.yml(部署在每台服务器上)
version: '3.3'
services:
# 服务器 192.168.75.130 配置
redis-master1:
image: redis:5.0.2
command: redis-server --port 7005 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.130
ports:
- "7005:7005"
- "17005:17005"
volumes:
- ./data/node5:/data
networks:
- redis-cluster
redis-slave1:
image: redis:5.0
command: redis-server --port 7006 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.75.130
ports:
- "7006:7006"
- "17006:17006"
volumes:
- ./data/node6:/data
networks:
- redis-cluster
# 定义 redis-cluster 网络
networks:
redis-cluster:
driver: overlay # 单机部署使用 bridge,多机部署可改用 overlay
attachable: true # 允许独立容器加入网络
# 服务器 192.168.75.128 和 192.168.75.129 的配置类似,需替换 IP 和数据目录:
# 192.168.75.128: redis-master1 (7001), redis-slave1 (7002)
# 192.168.75.129: redis-master2 (7003), redis-slave2 (7004)
2、执行docker-compose.yml文件
2.1 执行命令:
执行前先要使用安装下docker的编排组件:yum install docker-compose
- 执行这个
yum install docker-compose
命令可能会提示没这个包,就需要执行如下命令:
更新yum源
sudo yum -y install epel-release
然后可以直接安装
yum install docker-compose
-
然后在yml文件所在目录执行如下命令:
docker-compose up -d
-
然后报错:
ERROR: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again
. -
这个提示需要使用
docker swarm init
命令搭建 Redis 集群,核心原因在于 Docker Swarm 提供了容器编排能力,而 Redis 集群的分布式特性需要依赖 Swarm 的底层架构实现多节点协同和管理。docker swarm init
会创建 Swarm 集群的管理节点(Manager),负责调度服务、维护集群状态,并为后续加入的 Worker 节点提供通信基础,同时也提供了动态扩缩容能力等能力。
2.2 初始化 Swarm 集群
若当前节点需作为 管理节点(Manager):
# 指定本机 IP 初始化 Swarm:ml-citation{ref="4,6" data="citationList"}
docker swarm init --advertise-addr <本机IP>
-
关键参数:–advertise-addr 声明管理节点的通信地址,确保其他节点可访问36。
-
成功标志:输出包含 Swarm initialized 及 Worker/Manager 加入命令
-
有如下提示就表示加入成功:
-
继续执行命令:
docker-compose up -d
执行Redis集群启动命令:
注意:执行前需要安装redis-cli工具,自行根据所需redis-lic版本安装
# --cluster-replicas 1:为每个主节点分配 1 个从节点
# 自动分配规则:前 3 个 IP 为主节点,后 3 个 IP 为从节点
redis-cli --cluster create 192.168.75.128:7001 192.168.75.129:7003 192.168.75.130:7005 192.168.75.128:7002 192.168.75.129:7004 192.168.75.130:7006 --cluster-replicas 1
- 有如下信息表示集群启动成功:
- 再验证下:
redis-cli -h 192.168.75.128 -p 7001 cluster nodes
爱在深秋~ peace !