一、需求背景
存在3台服务器,使用其搭建nginx集群,用户通过3个地址都能访问配置的同一个nginx前端页面。
服务器1:192.168.3.88(Master)
服务器2:192.168.3.45(Node45)
服务器3:192.168.3.47(Node47)
分别在Node45和Node47上运行3个nginx容器,自动调度资源。
用户通过192.168.3.88(Master)地址进行访问。
二、集群配置
确保各集群节点正常:
Master:
编写docker-compose.yml文件,内容如下:
version: '3'
services:
nginx:
image: nginx:latest
ports:
volumes:
networks:
deploy:
replicas: 6
restart_policy:
condition: on-failure
placement:
constraints:
#- node.role == manager # 部署到Manager节点
networks:
Node 45及Node 47:
确保所挂载文件或目录/docker/nginx/nginx.conf、/docker/nginx/web与Master完全一致。
确保nginx.conf和web目录在部署的服务器上是存在且可访问的。
确保Docker Swarm集群中的每个节点都具有相同的挂载点和目录结构。如果某个节点上的挂载点或目录结构与其他节点不匹配,可能会导致挂载配置错误。
二、集群启动
使用以下命令在Docker Swarm中部署启动服务:
docker stack deploy -c docker-compose.yml nginx-stack
使用以下命令查看集群服务:
docker service ls
查看集群服务的日志:
docker service logs nginx-stack_nginx
查看服务的运行状态和任务的日志:
docker service ps nginx-stack_nginx
[root@Master ~]# docker service ps nginx-stack_nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
s1hrih9v7qi4 nginx-stack_nginx.1 nginx:latest Node47 Running Running 2 hours ago
rx85gtk4owwm nginx-stack_nginx.2 nginx:latest Node45 Running Running 2 hours ago
96733b368zyz nginx-stack_nginx.3 nginx:latest Node47 Running Running 2 hours ago
alin56v0dm0q nginx-stack_nginx.4 nginx:latest Node45 Running Running 2 hours ago
ju91cbjkvkr2 nginx-stack_nginx.5 nginx:latest Node45 Running Running 2 hours ago
31tgdjum55v8 nginx-stack_nginx.6 nginx:latest Node47 Running Running 2 hours ago