使用3台服务器搭建Docker 下的集群化nginx服务【测试成功】

艺帆风顺 发布于 2025-04-02 14 次阅读


一、需求背景

    存在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: - "80:80" volumes: - /docker/nginx/nginx.conf:/etc/nginx/nginx.conf - /docker/nginx/web:/usr/share/nginx/html networks: - nginx-network deploy: replicas: 6 restart_policy: condition: on-failure placement: constraints: - node.role == worker # 部署到worker节点 #- node.role == manager # 部署到Manager节点networks: nginx-network:

        Node 45及Node 47:

           确保所挂载文件或目录/docker/nginx/nginx.conf、/docker/nginx/web与Master完全一致。

        确保nginx.confweb目录在部署的服务器上是存在且可访问的。

        确保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_nginxID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTSs1hrih9v7qi4 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