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

一、前言

在前面一篇博文中,我们使用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: registry
      deploy:
        replicas: 5
        resources:
           limits:
              cpus: "0.1"
              memory: 50M
        update_config:
           parallelism: 2
           delay: 10s
        restart_policy:
           condition: on-failure
      ports:
        - 5000
      depends_on:
        - nginx
    nginx:
      image: nginx
      ports:
        - 80:80
      deploy:
        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多应用的集群部署,动态扩容缩容就全部结束了,欢迎留言交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值