marathon参考(2)Blue-Green Deployment
2016-04-05 15:14
483 查看
Blue-green deployment是一个安全部署应用的方法,它通过提供两个版本的应用同时运行。为了部署一个新版本的应用,你需要将当前版本切换到新版本,然后关闭老版本。Blue-green deployment不会使应用停止服务,在必要的情况下允许你快速回滚应用到blue版本。
这篇文章简要的描述了这一过程
http://martinfowler.com/bliki/BlueGreenDeployment.html
在生产环境,你可能使用了脚本,将这个过程集成到了你已有的系统。下面,我们提供一个实例,使用DCOS CLI来提供一个安全部署。(DCOS CLI可以和DCOS和开源的marathon一起使用)
应用也许会暴露一个指标终端点检测应用是否有任何没有完成的操作。例如,检测数据库等待事务数等。
jq命令行json处理器
如果你使用的是开源的mesos,需要配置DCOS CLI
1.在marathon中加载一个新版本的应用,添加给应用名称一个唯一的ID,例如git的commit id。在这个例子中,我们通过添加GREEN到名称中来给应用添加新版本号。
注意:如果你用API来代替DCOS CLI,这个命令会很长:
2.可以缩放GREEN应用实例到1个或多个。初始(从0个实例开始),根据所提供的服务设置应用实例最小的数量。
3.等待,直到GREEN应用的所有任务提供了健康检测。这一步需要jq。
4.使用上面的代码片段去检测所有GREEN实例是否仍然健康。如果没有达到你的预期的结果,可以终止部署并且回滚。
5.从GREEN应用添加一个新的任务实例到负载均衡池中。
6.从当前版本(BLUE版本)的应用获取一个多多个任务实例。
7.更新负载均衡配置,从BLUE应用池中删除任务实例。
8.等待,直到BLUE任务实例没有等待的操作。应用提供的指标终端点检测等待操作的数量。
9.直到BLUE任务所有的操作完成,使用API关闭BLUE应用。在下面的代码片段中,hosturl是你master节点的hostname,需要加上http://前缀。
这个marathon操作将移除指定实例(这些实例的没有等待操作)并且阻止他们被重新启动。
10.重复步骤2到9,指定没有BLUE的任务。
11.从marathon中移除BLUE应用。
原文:https://mesosphere.github.io/marathon/docs/blue-green-deploy.html
这篇文章简要的描述了这一过程
http://martinfowler.com/bliki/BlueGreenDeployment.html
在生产环境,你可能使用了脚本,将这个过程集成到了你已有的系统。下面,我们提供一个实例,使用DCOS CLI来提供一个安全部署。(DCOS CLI可以和DCOS和开源的marathon一起使用)
准备
基于marathon的应用有精准的健康监控应用也许会暴露一个指标终端点检测应用是否有任何没有完成的操作。例如,检测数据库等待事务数等。
jq命令行json处理器
如果你使用的是开源的mesos,需要配置DCOS CLI
步骤
我们将使用GREEN版本的应用替换BLUE版本的应用。1.在marathon中加载一个新版本的应用,添加给应用名称一个唯一的ID,例如git的commit id。在这个例子中,我们通过添加GREEN到名称中来给应用添加新版本号。
# launch green dcos marathon app add green-myapp.json
注意:如果你用API来代替DCOS CLI,这个命令会很长:
curl -H "Content-Type: application/json" -X POST -d @green-myapp.json <hosturl>/marathon/v2/apps
2.可以缩放GREEN应用实例到1个或多个。初始(从0个实例开始),根据所提供的服务设置应用实例最小的数量。
# scale green dcos marathon app update /green-myapp instances=1
3.等待,直到GREEN应用的所有任务提供了健康检测。这一步需要jq。
# wait until healthy dcos marathon app show /green-myapp | jq '.tasks[].healthCheckResults[] | select (.alive == false)'
4.使用上面的代码片段去检测所有GREEN实例是否仍然健康。如果没有达到你的预期的结果,可以终止部署并且回滚。
5.从GREEN应用添加一个新的任务实例到负载均衡池中。
6.从当前版本(BLUE版本)的应用获取一个多多个任务实例。
# pick tasks from blue dcos marathon task list /blue-myapp
7.更新负载均衡配置,从BLUE应用池中删除任务实例。
8.等待,直到BLUE任务实例没有等待的操作。应用提供的指标终端点检测等待操作的数量。
9.直到BLUE任务所有的操作完成,使用API关闭BLUE应用。在下面的代码片段中,hosturl是你master节点的hostname,需要加上http://前缀。
# kill and scale blue tasks echo "{\"ids\":[\"<task_id>\"]}" | curl -H "Content-Type: application/json" -X POST -d @- <hosturl>/marathon/v2/tasks/delete?scale=true
这个marathon操作将移除指定实例(这些实例的没有等待操作)并且阻止他们被重新启动。
10.重复步骤2到9,指定没有BLUE的任务。
11.从marathon中移除BLUE应用。
# remove blue dcos marathon app remove /blue-myapp
原文:https://mesosphere.github.io/marathon/docs/blue-green-deploy.html
相关文章推荐
- uestc876爱管闲事【区间dp】
- UITableView contentInset注解
- 蓝牙程序编译
- ios UI控件的简单整理
- 【项目经验】 Html Select 遇上 Easyui
- 【项目经验】 Html Select 遇上 Easyui
- requireJS入门学习
- android query 之 扫描本地音乐相关记录
- akka actor 的request-response简单实现
- ant&build.xml打包发布项目
- zookeeper、zkui、maven、kafka等storm相关软件安装教程
- UIButton的setImage:forstate:adjustsImageWhenDisabled
- 【转】Hbuilder MUI 页面刷新及页面传值问题
- iOS UICollectionView 入门 07 点击cell放大图片
- uestc599最小花费【单调队列优化dp】
- Layout Resource
- android requestWindowFeature使用详解
- android UEvent剖析
- UIView的layoutSubviews和drawRect方法何时调用
- LeetCode 232. Implement Queue using Stacks(用栈实现队列)