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 — 云时代的程序分发方式 要说最近一年云...

UI-UIColor-initWithRed:green:blue:alpha:调研

调研UIColor类的 初始化方法: - (UIColor *)initWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue a...

Green Light (Blue Version)

  • 2007年06月03日 12:42
  • 486KB
  • 下载

Codeforces Round #386 (Div. 2)D. Green and Black Tea

D. Green and Black Tea time limit per test 1 second memory limit per test 256 megabytes input ...

Codeforces Round #386 (Div. 2) D - Green and Black Tea

D. Green and Black Tea time limit per test 1 second memory limit per test 256 megabytes ...

【Codeforces Round 273 (Div 2)D】【DP 滚动数组】 Red-Green Towers 两种颜色积木拼搭最高锯齿楼每层颜色相同的总方案数

D. Red-Green Towers time limit per test 2 seconds memory limit per test 256 megabytes ...

GREEN HAND(2)--温度报警器

通过网络查找自己做题学习arduino。温度报警器;

codeforce 386(div2) D. Green and Black Tea

Innokentiy likes tea very much and today he wants to drink exactly n cups of tea. He would be happy ...

Codeforces Round #386(Div. 2)D. Green and Black Tea【思维+构造】

D. Green and Black Tea time limit per test 1 second memory limit per test 256 megabytes i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:marathon参考(2)Blue-Green Deployment
举报原因:
原因补充:

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