centos7下安装docker(22.docker swarm-----service)
运行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)的更多相关文章
- Centos7下安装与卸载docker应用容器引擎
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Li ...
- docker(一) Centos7下安装docker
docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...
- Docker学习之Centos7下安装
Docker学习之Centos7下安装 centos7 64下直接使用yum安装docker环境,步骤如下: 卸载旧版本docker sudo yum remove docker docker-com ...
- CentOS7下安装docker(Docker系列1)
CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...
- centos7下安装docker与镜像加速
1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...
- Docker学习笔记3:CentOS7下安装Docker-Compose
Docker-Compose是一个部署多个容器的简单但是非常必要的工具. 安装Docker-Compose之前,请先安装 python-pip,请参考我的另一篇博文CentOS7下安装python-p ...
- CentOS7下安装NVIDIA独立显卡驱动出现X service error问题解决方法
问题症状: 最近在CentOS7下安装NVIDIA独立显卡驱动的过程中出现X service error问题,如下图所示: 解决方法: 0.到NVIDIA 官网上下载驱动文件(.run 格式) : N ...
- MariaDB Centos7 下安装MariaDB
Centos7 下安装MariaDB by:授客 QQ:1033553122 1.下载安装文件 rpm包为例,对于标准服务器安装,至少需要下载client,shared,serve文件(安装时如果少了 ...
- centos7 下安装rpm的mysql 5.7
在centos7下安装mysql5.7 一:下载mysql 去官网上去下载:这里我下载的二进制格式的 https://dev.mysql.com/downloads/mysql/ 去下载对应平台的my ...
- CentOS7下安装SVN服务端
CentOS7下安装SVN服务 1. yum命令即可方便的完成安装# sudo yum install subversion 测试安装是否成功:# svnserve --version 更改svn的默 ...
随机推荐
- python_文件操作
说明:如有转载,请标明出处!! 一.文件操作 1.文件常用操作方法 open() f=open('文件名','r',encoding='utf-8') #三个参数,第一个文件详细路径,需要写明文件格式 ...
- 易宝支付Demo,生产中封装成简洁的代付接口,不用request如何获取项目运行时的真实路径
最近项目在做融360引流,涉及到了易宝支付的代扣和代付.易宝官方给出的demo只能简单运行,而且都是通过form表单的形式提交,返回XML格式.同时接口代码都写在了JSP中看起来不友好.项目在生成中想 ...
- Java学习笔记之——包
可以利用包,把不同的类分类存放,方便管理 在同一个包下不允许出现同名的类,可以利用分包达到可以出现同名的类 (1)包的创建: 命名:尽量做到不重复 一般:域名倒置作为前缀,再加上功能等分包 eg: ...
- JS之document.cookie详解以及$.cookie的使用
什么是cookie? cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie ...
- CSS效果:CSS3实现模拟select以及其中的三角形
如图实现这样的效果: html代码如下: <div class="select-bg"> <select class="select-green&quo ...
- 将HTML页面自动保存为PDF文件并上传的两种方式(一)-前端(react)方式
一.业务场景 公司的样本检测报告以React页面的形式生成,已调整为A4大小的样式并已实现分页,业务上需要将这个网页生成PDF文件,并上传到服务器,后续会将这个文件发送给客户(这里不考虑). 二.原来 ...
- Eclipse For JavaSE安装、配置、测试
Eclipse For JavaSE安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.安装与配置 4.JavaSE开发测试 5.ADT安装与Android开发测试 6. ...
- C# 对象持久化
本文以一个简单的小例子,简述对象持久化的相关知识,仅供学习分享使用,如有不足之处,还请指正. 概述 对象持久化是指将内存中的对象保存到可永久保存的存储设备中(如磁盘)的一种技术. 本文介绍的是除数据库 ...
- <自动化测试方案_1>第一章、为什么要做自动化测试?(Why)
第一章.为什么要做自动化测试?(Why) 测试的产品分为:桌面程序(C/S).web应用(B/S) 我们的产品是B/S (一)迭代中省去人力测试非新增功能: 在项目中由于测试时间的限制,测试中只能实现 ...
- Spring集成ElasticSearch搜索引擎
目录 前期安装 Maven支持库安装 添加log4j的配置文件 创建Client客户端 实现增删改查以及符合查询 实现查询数据 实现添加数据 实现删除数据 实现修改数据 实现复合查询数据 Elasti ...