当前位置: 代码迷 >> 综合 >> Docker进阶之路(十):docker swarm+docker stack+docker service实现多应用的集群部署,动态扩容缩容
  详细解决方案

Docker进阶之路(十):docker swarm+docker stack+docker service实现多应用的集群部署,动态扩容缩容

热度:23   发布时间:2024-01-30 02:03:02.0

一、前言

在前面一篇博文中,我们使用docker swarm+docker service实现了单应用的集群部署,那么在多应用的情况下,比如现在有100个应用,如何快速部署到多台服务器上呢,下面为你详细介绍

二、主要步骤

1.将镜像上传到自己的私有仓库中
2.在docker-compose.yml中编排服务
3.创建docker swarm集群
4.使用docker stack 集群化部署
5.使用docker service 动态扩容缩容

由于我没有创建私有仓库,因此第一步就略过,直接从第二步开始

三、开始实现多应用的集群部署

1.在docker-compose.yml文件中编排要部署的服务

我们需要同时部署5个web服务和1个nginx服务,docker-compose.yml文件内容如下

version: '3'
services:web:image: registrydeploy:replicas: 5resources:limits:cpus: "0.1"memory: 50Mupdate_config:parallelism: 2delay: 10srestart_policy:condition: on-failureports:- 5000depends_on:- nginxnginx:image: nginxports:- 80:80deploy:placement:constraints: [node.role == worker]

解释下上面的文件内容
version: '3' yml文件版本为3版本
services: 表示服务节点,所有要编排的服务都放在services节点下,上面我们编排了web服务和nginx服务

web 服务:
1.image: registry表示基础镜像是registry
2.replicas: 5表示要同时部署5个副本
3.update_config更新策略
parallelism: 2表示同时更新2个
delay: 10s每次更新延迟10s
4.restart_policy: 重启策略
condition: on-failure失败时重启
5.ports: 对外暴露的端口
6.depends_on: 要依赖的服务

nginx 服务:
constraints: [node.role == worker]指定部署在worker节点

2.创建docker swarm集群

有如下主机:
docker01 192.168.130.171
docker02 192.168.130.167

在docker01主机中执行如下命令,初始化swarm集群,并指定docker01为manager节点

docker swarm init --advertise-addr 192.168.130.171

在docker02中执行得到的如下指令,作为worker节点加入到swarm集群中

docker swarm join --token SWMTKN-1-1ggq6sciczsd7vpedokozjfodl2atqinaz6tbceh29sf2bmvfm-3mmj3gsqcbkiqljbshntp8reg 192.168.130.171:2377

在docker01上执行docker node ls命令, 如下结果表示集群创建成功

root@docker01:/home/ubuntu/app# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
s1ese4mjlqdxohpwj1g82cnwi *   docker01            Ready               Active              Leader              19.03.7
zliejeuf0kj352fgtb69tzf7q     docker02            Ready               Active                                  19.03.11
3.使用docker stack 集群化部署

在docker01上执行docker stack deploy -c ./docker-compose.yml app命令,同时部署web服务和nginx服务
在这里插入图片描述
上面的命令,-c 指定 docker-compose.yml文件路径,并指定名称为app

docker stack ls查看执行结果
在这里插入图片描述
docker service ls查看服务情况,docker自动将app作为前缀加在服务的前台,得到名称分别为app_nginx和app_web的服务
在这里插入图片描述

docker stack ps app查看服务的部署情况,发现nginx服务部署在docker02上面,web服务有5个副本,2个在docker01上,3个在docker02上
在这里插入图片描述
到这里我们就实现了多服务的集群化部署

4.使用docker service 动态扩容缩容
4.1动态扩容

执行docker service scale app_web=10命令,将web服务扩容到10个
在这里插入图片描述
docker service ps app_web查看扩容结果,发现web服务已经自动扩容到10个
在这里插入图片描述

4.2动态缩容

执行docker service scale app_web=3命令,将web服务缩容到3个
在这里插入图片描述
docker service ps app_web查看缩容结果,发现web服务已经自动缩容到3个
在这里插入图片描述
到此,基于docker多应用的集群部署,动态扩容缩容就全部结束了,欢迎留言交流

  相关解决方案