marathon参考(2)Blue-Green Deployment

翻译 2016年04月05日 15:14:13

Blue-green deployment是一个安全部署应用的方法,它通过提供两个版本的应用同时运行。为了部署一个新版本的应用,你需要将当前版本切换到新版本,然后关闭老版本。Blue-green deployment不会使应用停止服务,在必要的情况下允许你快速回滚应用到blue版本。

这篇文章简要的描述了这一过程
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

Docker,云时代的程序交付方式

转自:http://liubin.org/2014/08/11/docker-cloud-app-delivery-style/ Docker — 云时代的程序分发方式 要说最近一年云...
  • fanzhe328
  • fanzhe328
  • 2015年06月24日 14:55
  • 1978

marathon参考(2)Blue-Green Deployment

marathon Blue-green deployment
  • zhuchuangang
  • zhuchuangang
  • 2016年04月05日 15:14
  • 2442

blueGreen develop , 敏捷开发

BlueGreenDeployment Martin Fowler 2 March 2010 One of the goals that my colleag...
  • moheqionglin
  • moheqionglin
  • 2016年03月21日 15:37
  • 202

marathon参考(7):应用组

marathon应用组应用的编排是树形结构。应用组将应用拆分成多个应用进行管理。...
  • zhuchuangang
  • zhuchuangang
  • 2016年04月14日 13:12
  • 1064

marathon参考(6): 约束Constraints

约束控制
  • zhuchuangang
  • zhuchuangang
  • 2016年04月13日 23:35
  • 3483

Docker,云时代的程序交付方式

Docker,云时代的程序交付方式 Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engine ...
  • kingmax54212008
  • kingmax54212008
  • 2016年05月09日 22:00
  • 3721

ReactNative集成CodePush实现热部署(iOS和Android)

一.CodePush简介CodePush 是微软提供的一套用于热更新 React Native 和 Cordova 应用的服务。CodePush 是提供给 React Native 和 Cordova...
  • qq_31138973
  • qq_31138973
  • 2016年10月25日 15:27
  • 1479

调用marathon rest API

步骤: 1、访问marathon下载源码地址为 https://github.com/mesosphere/marathon-client 2、修改Marathon类 此处多添加一个GET pin...
  • qq_35869079
  • qq_35869079
  • 2017年01月23日 10:28
  • 1221

marathon参考(9):健康检查

健康检查 mesos marathon
  • zhuchuangang
  • zhuchuangang
  • 2016年04月11日 11:19
  • 2678

Context Path + servlet path + path info = request uri

|-- Context Path --|-- Servlet Path -|--Path Info--|http://www.myserver.com ...
  • cooljia
  • cooljia
  • 2004年11月19日 18:38
  • 17309
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:marathon参考(2)Blue-Green Deployment
举报原因:
原因补充:

(最多只允许输入30个字)