运行service

执行以下命令:

docker service create --name web-server httpd

通过docker service ls查看swarm中的service

REPLICAS显示当前副本信息,1/1的意思是web-server这个service期望的容器的副本量是1,目前启动的副本量是1,也就是说web-server这个service已经部署完成了

通过docker service ps 可以查看每个service的副本的状态

可以看到web-service唯一的副本被分到docker1上,当前的状态是running,

如果不放心,可以到docker1上去确认httpd容器已经运行

当前web-server在swarm中的分布

service伸缩

上面我们只有一个副本的service,不过对于web服务,我们通常会运行多个实例。这样可以负载均衡,同时也能提供高可用。

swarm实现这个目标非常简单,增加service的副本就可以了,在swarm-manager上执行如下命令:

docker service scale web-server=5

副本数增加到5,通过docker service ls和docker service ps创建、查看副本的详细信息

可以看到一共有5个副本,2个处于运行状态,3个处于prepareing状态,由于httpd的镜像没有下载完,所以还处于运行状态

5个副本已经分布在三个节点上

默认配置下manager node也是worker node,所以swarm-manager上也运行了副本,如果不希望再manager上运行service,可以执行如下命令:

docker node update --availability drain docker     docker是swarm-manager的主机名

通过docker node ls查看各节点现在的状态:

现在swarm-manager node的状态是Drain状态,Drain表示swarm-manager已经不负责运行service,之前运行的那个service会如何处理呢?

通过docker service ps 查看一下:

swarm-manager 上的副本已经被shutdown了,为了达到5个副本数的目标,在docker1上添加了副本web-server.4

盗图

上面我们讨论的是scale up,我们还可以scale down,减少副本数,运行下面的命令:

docker service scale web-server=3

可以看到web-server.1和web-server.4这两个副本已经被删除了

Swarm Failover

故障是在所难免的,容器可能崩溃,Docker host可能宕机,不过幸运的是,swarm 已经内置了failover策略

创建service的时候,我们没有告诉swarm发生故障的时候该如何处理,只是说明了我们期望的状态(比如运行3个副本),swarm会尽最大的努力达成这个期望状态,无论发生什么状况

下面我们做swarm failover特性,关闭docker1

通过docker node ls查看swarm  node 的状态

swarm会检测到docker1的故障,并标记为Down

我们通过docker service ps web-server,查看service的状态

可以看到,web-server.3已经从docker1上迁移到docker2上,之前运行在docker1上的副本已经处于shutdown的状态

如果将docker1重新启动 ,会发生什么变化呢?

首先查看一下docker1的状态

可以看到web-server.3这个副本依然在docker2上,没有迁回docker1上

centos7下安装docker(22.docker swarm-----service)的更多相关文章

  1. Centos7下安装与卸载docker应用容器引擎

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...

  2. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  3. Docker学习之Centos7下安装

    Docker学习之Centos7下安装 centos7 64下直接使用yum安装docker环境,步骤如下: 卸载旧版本docker sudo yum remove docker docker-com ...

  4. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  5. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  6. Docker学习笔记3:CentOS7下安装Docker-Compose

    Docker-Compose是一个部署多个容器的简单但是非常必要的工具. 安装Docker-Compose之前,请先安装 python-pip,请参考我的另一篇博文CentOS7下安装python-p ...

  7. CentOS7下安装NVIDIA独立显卡驱动出现X service error问题解决方法

    问题症状: 最近在CentOS7下安装NVIDIA独立显卡驱动的过程中出现X service error问题,如下图所示: 解决方法: 0.到NVIDIA 官网上下载驱动文件(.run 格式) : N ...

  8. MariaDB Centos7 下安装MariaDB

    Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...

  9. centos7 下安装rpm的mysql 5.7

    在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...

  10. CentOS7下安装SVN服务端

    CentOS7下安装SVN服务 1. yum命令即可方便的完成安装# sudo yum install subversion 测试安装是否成功:# svnserve --version 更改svn的默 ...

随机推荐

  1. python面向对象学习(五)多态

    多态 多态:不同的 子类对象 调用相同的 父类方法,产生不同的执行结果 多态 可以 增加代码的灵活度 以 继承 和 重写父类方法 为前提 是调用方法的技巧,不会影响到类的内部设计 多态案例练习 需求 ...

  2. js对象工厂函数与构造函数

    转自:http://www.cnblogs.com/Jener/p/5920963.html ★概述:         使用对象字面量,或者向空对象中动态地添加新成员,是最简单易用的对象创建方法.然而 ...

  3. Git命令使用小结

    一.上传你的代码的基本方式 0.在github网站上登录你的账户cynthiawupore,然后新建一个仓库demo 1.初始化 $ git init 2.添加文件夹下所有文件到仓库 $ git ad ...

  4. @RequestParam加与不加的区别

    最简单的两种写法,加或不加@RequestParam注解 @RequestMapping("/list") public String test(int userId) { ret ...

  5. BZOJ3687: 简单题(dp+bitset)

    Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1138  Solved: 556[Submit][Status][Discuss] Descripti ...

  6. 2018-11-21 手工翻译Vue.js源码第一步:14个文件重命名

    背景 对现有开源项目的代码进行翻译(文件名/命名/注释) · Issue #107 · program-in-chinese/overview 简单地说, 通过翻译源码, 提高项目代码可读性(对于母语 ...

  7. 如何用ABP框架快速完成项目(5) - 用ABP一个人快速完成项目(1) - 使用代码生成器

    用ABP一个人快速完成项目有如下要点: 站在巨人的肩膀上 - 使用代码生成器 站在巨人的肩膀上 - 使用成熟控件框架, 一个框架不够就上两个, 两个不够就上三个 通过微服务模式而不是盖楼式来避免难度升 ...

  8. 归并排序(MergeSort)和快速排序(QuickSort)的一些总结问题

    归并排序(MergeSort)和快速排序(QuickSort)都是用了分治算法思想. 所谓分治算法,顾名思义,就是分而治之,就是将原问题分割成同等结构的子问题,之后将子问题逐一解决后,原问题也就得到了 ...

  9. Python 标准类库-Windows特殊服务之msvcrt

    标准类库-Windows特殊服务之msvcrt   by:授客 QQ:1033553122 广告:出售自研自动化小平台(无需编码也可用),有需要请联系 测试环境 win7 64位 Python 3.4 ...

  10. svn checkout 实用小技巧

    svn checkout 实用小技巧 by:授客 QQ:1033553122   问题描述: 用svn小乌龟软件,进行update,commit之前,先要把svn工作目录checkout到本地,那么问 ...