文档章节

应用更新和部署

xueyi28
 xueyi28
发布于 2016/05/22 15:56
字数 1359
阅读 13
收藏 0
点赞 2
评论 0

先来看我蹩脚的翻译:https://mesosphere.github.io/marathon/docs/deployments.html
应用部署

每一次应用的变动其实都是一次部署操作,部署可以有以下几个操作:
开始、停止一个或者多个应用
更新一个或者多个应用
更新一个或者多个应用
调容一个或者多个应用

部署不是立即生效的,它会花费一点时间,部署会直到所有的部署都结束才会停止
大多数的部署都是一样的,一般都是一个部署改变一个应用。如果即将部署的这个应用已经被另外一个存活的部署操作,那么这个部署操作将会被拒绝。

依赖
没有依赖的应用部署操作没有限制。如果应用之间互相依赖,那么这样的部署操作就需要执行执行的部署命令。

 

 

在上面的例子中,app依赖db

Starting : 如果dbapp都启动,db先有app启动
Stopping : 如果dbapp都停止,app先于db停止
Upgrade : 看具体的调容场景
Scaling : 如果dbapp一起调容,db先于app调容

滚动重启
有一个共性问题是,怎么样更新一个应用的版本。作为root,这里要分两步操作:开始新版本的应用,停止老的版本。这是大多数应用跟新的方式。
marathon中有一个更新的策略参数:minimumHealthCapacity,这个参数默认为开启状态。minimumHealthCapacity是一个标识应用副本数的百分比,标识了在应用整个更新期间必须要保存的健康副本数目。
minimumHealthCapacity == 0 :在新版本部署之前,所有的老版本都必须杀死。
minimumHealthCapacity == 1 :再老版本被干掉之前,所有新的版本实例会部署实施。
minimumHealthCapacity between 0 and 1 :老版本和新版本成比例的启动和停止,如果成功完成,新版本比例为100% ,老版本停止。

如果考虑依赖,稍微会有一点复杂,如果发生了一个更新操作,大体的步骤是这样的:
Scale old application db to instance count 6
Start new application of db to instance count 6
Scale old application app to instance count 16
Start new application of app to instance count 16
Stop all instances of old app
Stop all instances of old db
Scale new db to instance count to 10
Scale new application of app to instance count 20

如果你设置你minimumHealthCapacity0.5,你要注意开大你执行app的帐号权限。

强制部署

一个应用每次只能进行一个修改。其他的修改只能在第一个部署完成之后进行。你可以强制运行一个部署,打破上述规则。REST接口可以强制进行任何部署操作。

注意,强制操作一般用于防止部署失败。

如果进行了强制操作,这个应用所有的部署都将收到影响。这样可能会给系统留下一个互相矛盾的状态。特别是,当应用正在回滚更新时,应用可能会在有新老任务一块伴随的情况下结束。新的部署如果没有更新应用,它依然会保持在这个状态,直到显现的部署被实施。

对比一下,只有单独的应用可以安全的强制更新。
所以说,强制类操作最好用在部署出错的时候进行。

"upgradeStrategy":{"minimumHealthCapacity":0.5,"maximumOverCapacity":0.5},

minimumHealthCapacity == 0 : all old instances can be killed, before the new version is deployed.
minimumHealthCapacity == 1 : all instances of the new version is deployed side by side, before the old version is stopped
minimumHealthCapacity between 0 and 1 : scale old version to minimumHealthCapacity and start the new version to minimumHealthCapacity side by side. If this is completed successfully then the new version is scaled to 100% and the old version is stopped.

部署时最少要保留的实例数,防止所有的实例
minimumHealthCapacity (Optional. Default: 1.0) - a number between 0and 1 that is multiplied with the instance count. This is the minimum number of healthy nodes that do not sacrifice overall application purpose. Marathon will make sure, during the upgrade process, that at any point of time this number of healthy instances are up.

部署时最大能启动的实例数量
maximumOverCapacity (Optional. Default: 1.0) - a number between 0 and 1 which is multiplied with the instance count. This is the maximum number of additional instances launched at any point of time during the upgrade process.

maximumOverCapacity如果是1,那在应用部署的时候,新实例和老实例是等量共存的。
如果是0,只能是老实例已经确定停止了,新实例才部署.

minimumHealthCapacity=1且maximumOverCapacity=0,在部署中会至少新增一个实例,不会说就不执行部署了。


The default maximumOverCapacity is 1, which means that all old and new instances can co-exist during the upgrade process. A value of 0.1 means that during the upgrade process 10% more capacity than usual may be used for old and new instances. A value of 0.0 means that even during the upgrade process no more capacity may be used for the new instances than usual. Only when an old version is stopped, a new instance can be deployed.

If minimumHealthCapacity is 1 and maximumOverCapacity is 0, at least one additional new instance is launched in the beginning of the upgrade process. When it is healthy, one of the old instances is stopped. After it is stopped, another new instance is started, and so on.

A combination of minimumHealthCapacity equal to 0.9 and maximumOverCapacity equal to 0 results in a rolling update, replacing 10% of the instances at a time, keeping at least 90% of the app online at any point of time during the upgrade.

A combination of minimumHealthCapacity equal to 1.0 and maximumOverCapacity equal to 0.1 results in a rolling update, replacing 10% of the instances at a time and keeping at least 100% of the app online at any point of time during the upgrade with 10% of additional capacity.
 

本文转载自:http://blog.csdn.net/kangqi7000/article/details/51475398

共有 人打赏支持
xueyi28
粉丝 7
博文 88
码字总数 33322
作品 0
南宁
更新APP-执行滚动更新

目标: 使用kubectl做一次滚动更新 更新一个应用 用户期望应用一直是可用的,而开发者期望一天部署多次新版本。 在k8s里,这是通过滚动更新来实现的。 Rolling updates允许增量更新新的Pods实...

趁你还年轻233 ⋅ 03/12 ⋅ 0

Docker和持续交付部署类型

在本篇博文的姊妹篇《五步走战略建立良好的持续交付流程》中,我们看到了高性能IT团队如何采用Docker来实现持续交付(CD)的最佳实践。其中,CD可以通过大量的部署方法实现,而Docker只是帮助...

Docker ⋅ 02/03 ⋅ 0

Docker和持续交付、持续部署类型

王杰 译 在本篇博文的姊妹篇《 五步走战略建立良好的持续交付流程》中,我们看到了高性能IT团队如何采用Docker来实现持续交付(CD)的最佳实践。其中,CD可以通过大量的部署方法实现,而Doc...

程序师 ⋅ 02/04 ⋅ 0

通过Rancher部署并扩容Kubernetes集群基础篇二

接上一篇通过Rancher部署并扩容Kubernetes集群基础篇一 7. 使用ConfigMap配置redis https://github.com/kubernetes/kubernetes.github.io/blob/master/docs/user-guide/configmap/redis/redi......

自由linux ⋅ 2017/07/12 ⋅ 0

图解IntelliJ IDEA v13应用服务器的运行配置

初步了解IntelliJ IDEA v13应用服务器以后,接下来我们将继续设置应用服务器的运行配置。 Artifacts是IDE在通过运行配置时部署的一个服务。Artifacts包括名称、类型、输出目录、布局和设计。...

kouxunli1 ⋅ 2014/01/24 ⋅ 0

使用Configuration Manager部署程序(4)

System Center 2012 R2 Configuration Manager中的软件更新提供了一组工具和资源,可帮助管理跟踪软件更新并将其应用到企业中的客户端计算机的复杂任务。要维持运行效率、克服安全问题和保持...

技术小胖子 ⋅ 2017/11/02 ⋅ 0

Tomcat 部署详解

前篇大概讲过了tomcat的发布和部署,以及测试。 本篇详细介绍下tomcat的部署相关的内容,本篇主要内容: 1 介绍下部署相关的内容,需要安装的文件以及上下文描述符 2 静态部署——在tomcat启...

yangshouli ⋅ 2016/11/09 ⋅ 0

VS Mobile Center支持CodePush更新

  【IT168 编译】据悉,Microsoft Visual Studio Mobile Center后端的开发人员现在可以通过CodePush服务直接更新基于JavaScript的应用程序。   CodePush由微软于两年前发布,并且现在还处...

it168网站 ⋅ 2017/08/07 ⋅ 0

应用包版本管理工具--appmanage

appmanage 是应用包版本管理工具。 1.检查下系统环境是否支持,运行 http://localhost/appmanage/index.php/test/check2.导入appmanage.sql数据库结构。3.application/config/database.php 修...

ym80 ⋅ 2015/05/05 ⋅ 0

应用实时更新云服务--CodePush

CodePush 是微软开发的,可以实时更新 React Native 和 Cordova 应用。 CodePush 是提供给 React Native 和 Cordova 开发者直接部署移动应用更新给用户设备的云服务。CodePush 作为一个中央仓...

叶秀兰 ⋅ 2015/10/23 ⋅ 5

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CentOS7克隆后网卡配置问题

首先默认第一台虚拟机网卡信息为: TYPE="Ethernet" BOOTPROTO=static DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" #IPV6INIT="yes" #IPV6_AUTOCONF=“yes” #I......

北岩 ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

用户登录信息-钉子效果(基于jquery2.0)

本js效果使用jquery2.0,清晰的分解用户登录信息的(钉子效果),该效果直接用在作者网站(www.phpkhbd.com)上。 里面的难点有:定时器,延时。 大致效果如下: 一开始: 鼠标放上去的时候:...

宁哥实战课堂 ⋅ 今天 ⋅ 0

expect

官网:https://core.tcl.tk/expect/index Introduction Expect is a tool for automating interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, etc. Expect really m......

刀锋 ⋅ 今天 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 今天 ⋅ 1

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 今天 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部