上一节部署了只有一个副本的Service,不过对于web服务,我们通常会运行多个实例,这样可以做负载均衡,同时也能提高可用性。
 
swarm 要实现这个目标非常简单,增加Service 的副本数就可以了。在 swarm-manager 上执行如下命令
 
root@host03:~# docker service scale web_server=5
web_server scaled to 5
overall progress: 5 out of 5 tasks
1/5: running   [==================================================>]
2/5: running   [==================================================>]
3/5: running   [==================================================>]
4/5: running   [==================================================>]
5/5: running   [==================================================>]
verify: Service converged
 
root@host03:~# docker service ps web_server    #    副本数增加过程中
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE              ERROR               PORTS
jykct1jmfrte        web_server.1        httpd:latest        host03              Running             Running 20 minutes ago                         
n4afxlx16tny        web_server.2        httpd:latest        host03              Running             Running 13 seconds ago                         
kmtovvs8i1rk        web_server.3        httpd:latest        host01              Running             Preparing 14 seconds ago                       
mlsb1ey4n65r        web_server.4        httpd:latest        host02              Running             Preparing 14 seconds ago                       
a08aabmfiprh        web_server.5        httpd:latest        host02              Running             Preparing 14 seconds ago                       
root@host03:~# docker service ps web_server    #    副本数增加完毕
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
jykct1jmfrte        web_server.1        httpd:latest        host03              Running             Running 21 minutes ago                       
n4afxlx16tny        web_server.2        httpd:latest        host03              Running             Running 52 seconds ago                       
kmtovvs8i1rk        web_server.3        httpd:latest        host01              Running             Running 29 seconds ago                       
mlsb1ey4n65r        web_server.4        httpd:latest        host02              Running             Running 31 seconds ago                       
a08aabmfiprh        web_server.5        httpd:latest        host02              Running             Running 31 seconds ago       
root@host03:~# docker service ls    #    要求副本数和实际副本数均已达到 5 
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
9aa10i3l6xjw        web_server          replicated          5/5                 httpd:latest     
 
设置 swarm-manager 为仅manager模式
 
root@host03:~# docker node update --availability drain host03    #    将 swarm-manager(host03)设置为仅 manager
host03
root@host03:~# docker node ls    #    host03 AVAILABILITY 已经变成 Drain
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
hvt2ez9e7zvqm2hz8nix1eke7     host01              Ready               Active                                  18.09.6
asn5ufnogzkyqigk4mizatoer     host02              Ready               Active                                  18.09.6
h6rzavsz2vjxstwj3pytiebjb *   host03              Ready               Drain               Leader              18.09.6
root@host03:~# docker service ps web_server    #    可以看到 host03 上的容器都已 shutdown,另外在host01 上新起了两个容器
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE               ERROR               PORTS
tznw0lrn8wh8        web_server.1        httpd:latest        host01              Running             Running 14 seconds ago                          
jykct1jmfrte         \_ web_server.1    httpd:latest        host03              Shutdown            Shutdown 15 seconds ago                         
4x32c9x1hizg        web_server.2        httpd:latest        host01              Running             Running 14 seconds ago                          
n4afxlx16tny         \_ web_server.2    httpd:latest        host03              Shutdown            Shutdown 15 seconds ago                         
kmtovvs8i1rk        web_server.3        httpd:latest        host01              Running             Running about an hour ago                       
mlsb1ey4n65r        web_server.4        httpd:latest        host02              Running             Running about an hour ago                       
a08aabmfiprh        web_server.5        httpd:latest        host02              Running             Running about an hour ago                       
 
弹性收缩,将副本数由 5 降到 3
 
root@host03:~# docker service scale web_server=3    #    副本数设置为 3
web_server scaled to 3
overall progress: 3 out of 3 tasks
1/3: running   [==================================================>]
2/3: running   [==================================================>]
3/3: running   [==================================================>]
verify: Service converged
root@host03:~# docker service ps web_server    #    可以查看编号为 3 和 5 的容器被删除了
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE               ERROR               PORTS
tznw0lrn8wh8        web_server.1        httpd:latest        host01              Running             Running 2 minutes ago                           
jykct1jmfrte         \_ web_server.1    httpd:latest        host03              Shutdown            Shutdown 2 minutes ago                          
4x32c9x1hizg        web_server.2        httpd:latest        host01              Running             Running 2 minutes ago                           
n4afxlx16tny         \_ web_server.2    httpd:latest        host03              Shutdown            Shutdown 2 minutes ago                          
mlsb1ey4n65r        web_server.4        httpd:latest        host02              Running             Running about an hour ago     
 

097、如何实现Service伸缩?(Swarm04)的更多相关文章

  1. 如何实现 Service 伸缩?- 每天5分钟玩转 Docker 容器技术(97)

    上一节部署了只有一个副本的 Service,不过对于 web 服务,我们通常会运行多个实例.这样可以负载均衡,同时也能提供高可用. swarm 要实现这个目标非常简单,增加 service 的副本数就 ...

  2. centos7下安装docker(22.docker swarm-----service)

    运行service 执行以下命令: docker service create --name web-server httpd 通过docker service ls查看swarm中的service ...

  3. 人人都可以开发高可用高伸缩应用——论Azure Service Fabric的意义

    今天推荐的文章其实是微软的一篇官方公告,宣布其即将发布的一个支撑高可用高伸缩云服务的框架--Azure Service Fabric. 前两天,微软Azure平台的CTO Mark Russinovi ...

  4. 无状态服务(stateless service)

    一.定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本 ...

  5. 【阿里云产品公测】弹性伸缩服务ESS之试用初体验

    弹性伸缩服务ESS之试用初体验 作者:云郎 2014/10/15 阿里云弹性伸缩服务(Elastic Scaling Service)是根据用户的业务需求和策略,自动调整其弹性计算服务器(ECS)的管 ...

  6. 这个知识点不错,,学习一下先。。。无状态服务(stateless service)(转)

    这样的应用,显得高级一些哟~~:) +================== http://kyfxbl.iteye.com/blog/1831869 ========================= ...

  7. Windows Azure Service Bus 推动财务服务门户的高可用性和可伸缩性

    抵押贷款公司和评估管理公司面临着快速.复杂且数据量极大的业务流程.他们需要可快速.轻松设置且容量几乎无限的可伸缩的企业级服务,来对处理评估订单以及自动化流程本身所产生的所有文档和数据进行管理. 这听起 ...

  8. 转载文章:Windows Azure 七月份更新:SQL 数据库、流量管理器、自动伸缩、虚拟机

    转载文章:Windows Azure 七月份更新:SQL 数据库.流量管理器.自动伸缩.虚拟机 今天上午,我们发布了一些重大的 Windows Azure 更新.这些新的增强功能包括: · SQL 数 ...

  9. 探索Windows Azure 监控和自动伸缩系列1 - 连接中国区Azure

    最近准备基于Microsoft Azure Management Libraries 实现虚拟机的监控.主要的需求就是获取虚拟机内置的性能计数器数据,基于性能计数器实现后续的监控和自动伸缩. 作为这一 ...

随机推荐

  1. Spring boot之返回json数据

    1.步骤: 1. 编写实体类Demo 2. 编写getDemo()方法 3. 测试 2.项目构建 编写实体类Demo package com.kfit; /** * 这是一个测试实体类. */ pub ...

  2. 将Bean转换为Json形式的一个工具类

    这边遇到一个问题:  1.做一个bean类,实现一个函数,能够把bean生成json字符串.按字段作为key,字段值作为value的方式生成,并且按key的ascii码的升序生成.     2.提示: ...

  3. dubbo源码阅读笔记-如何引用远程服务,变成invoker

    1 消费端如何通过注册中心获取远程服务的invoker? RegistryDirectory.subscribe从注册中心中获取provider的url,通过DubboProtocol的refer方法 ...

  4. 事件源event.target

    今天在了解检测浏览器是否能播放不同类型的视频时发现以下代码 <script> function supportType(e,vidType,codType) { myVid=documen ...

  5. 剑指offer31----栈的压入、弹出序列

    题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对 ...

  6. csp2019 Emiya家今天的饭题解

    qwq 由于窝太菜了,实在是不会,所以在题解的帮助下过掉了这道题. 写此博客来整理一下思路 正文 传送 简化一下题意:现在有\(n\)行\(m\)列数,选\(k\)个数的合法方案需满足: 1.一行最多 ...

  7. 线性回归和正则化(Regularization)

    python风控建模实战lendingClub(博主录制,包含大量回归建模脚本和和正则化解释,2K超清分辨率) https://study.163.com/course/courseMain.htm? ...

  8. git使用遇到的问题

    1.我新建了一个django项目,然后又在git上新建了一个仓库,然后我在django的项目文件内,将git上的项目clone到这个文件内的时候 git clone https://gitee.com ...

  9. iOS 图表工具charts之CandleStickChartView(K线)

    关于charts的系列视图介绍传送门: iOS 图表工具charts介绍 iOS 图表工具charts之LineChartView iOS 图表工具charts之BarChartView iOS 图表 ...

  10. web开发(九) 使用javamail进行发送邮件,(使用QQ,163,新浪邮箱服务器)

    在网上看见一篇不错的文章,写的详细. 以下内容引用那篇博文.转载于<http://www.cnblogs.com/whgk/p/6506027.html>,在此仅供学习参考之用. 一.发送 ...