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
- 1
- 2
- 1
- 2
注意:如果你用API来代替DCOS CLI,这个命令会很长:
curl -H "Content-Type: application/json" -X POST -d @green-myapp.json <hosturl>/marathon/v2/apps
- 1
- 1
2.可以缩放GREEN应用实例到1个或多个。初始(从0个实例开始),根据所提供的服务设置应用实例最小的数量。
# scale green
dcos marathon app update /green-myapp instances=1
- 1
- 2
- 1
- 2
3.等待,直到GREEN应用的所有任务提供了健康检测。这一步需要jq。
# wait until healthy
dcos marathon app show /green-myapp | jq '.tasks[].healthCheckResults[] | select (.alive == false)'
- 1
- 2
- 1
- 2
4.使用上面的代码片段去检测所有GREEN实例是否仍然健康。如果没有达到你的预期的结果,可以终止部署并且回滚。
5.从GREEN应用添加一个新的任务实例到负载均衡池中。
6.从当前版本(BLUE版本)的应用获取一个多多个任务实例。
# pick tasks from blue
dcos marathon task list /blue-myapp
- 1
- 2
- 1
- 2
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
- 1
- 2
- 1
- 2
这个marathon操作将移除指定实例(这些实例的没有等待操作)并且阻止他们被重新启动。
10.重复步骤2到9,指定没有BLUE的任务。
11.从marathon中移除BLUE应用。
# remove blue
dcos marathon app remove /blue-myapp
- 1
- 2
- 1
- 2
原文:https://mesosphere.github.io/marathon/docs/blue-green-deploy.html
http://blog.csdn.net/zhuchuangang/article/details/51064974
相关推荐
2. **Marathon-LB核心功能** - **动态配置**:Marathon-LB会实时监控Marathon中的应用实例变化,当有新应用启动或停止时,它可以自动更新HAProxy配置。 - **健康检查**:集成HAProxy的健康检查机制,确保只有健康...
《Python库马拉松:深入探索marathon_acme-0.1.0-py2.py3-none-any.whl》 在Python的开发世界中,各种库扮演着至关重要的角色,它们为开发者提供了丰富的功能,大大简化了代码编写过程。今天我们要探讨的是名为`...
F5马拉松BIG-IP控制器 该GitHub存储库已归档且为只读。...官方f5networks/marathon-bigip-ctlr映像为f5networks/marathon-bigip-ctlr 。 通常,控制器部署在Marathon中。 但是,控制器可以在本地运行以进行开发测试。
马拉松磅 Marathon-lb是通过使用应用程序状态来管理HAProxy的工具。 HAProxy是一种快速,高效,经过考验的高可用性负载均衡器,具有许多高级功能,可为许多备受瞩目的网站提供支持。特征无状态设计:不直接依赖任何...
资源分类:Python库 所属语言:Python 资源全名:marathon-cli-1.1.6.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
用法usage: Bridge.groovy [options] -i,--Interval <INTERVAL> Interval in seconds at which the bridge syncs Hipache with Marathon -m,--MarathonUrl <URL> Marathon url -P,--AppsPath <PATH> Example: /v2/...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
Aleph One是Bungie的Marathon 2 FPS游戏引擎的开源延续。 Aleph One在多种平台上播放Marathon,Marathon 2,Marathon Infinity和3rd-party内容,并提供(可选)OpenGL渲染,Internet播放,Lua脚本等等。
这个“marathon-0.8.2.tgz”文件是一个压缩包,包含了 Marathon 的 0.8.2 版本,该版本发布于2014年左右。本文将详细讲解 Marathon 的核心功能、架构、配置以及如何部署和管理服务。 Marathon 的主要功能: 1. **高...
将marathon-shiro-authentication-plugin.jar放在您的插件目录中,并使用--plugin_dir标志提供此目录的路径为Marathon创建配置JSON(例如,在/etc/marathon/plugin_conf.json ){ " plugins " : [ { " plugin " : ...
确保您已通过EC2设置了 。 然后,只需将我们的小应用程序JSON有效负载爆炸给您的一个主服务器即可。 例如: $ curl -s -XPOST http://<YOUR>:8080/v2/apps -d@dcos.json -H "Content-Type: application/json"请稍等...
### Marathon及Marathon ITE 使用指南知识点详述 #### 关于Marathon及Marathon ITE - **Marathon**:这是专为Java/Swing应用程序设计的一款顶级开源自动化测试工具。自2006年起,由Jalian Systems公司进行维护、...
Python 2.7+ 用于使用marathon-client 。 安装 git clone https://github.com/Wizcorp/marathon-client.py.git cd marathon-client.py 您可以使用以下命令全局安装marathon-client.py : sudo easy_install . 或...
marathon-consul, 桥马拉松信息到 Consul 马拉松领事 马拉松到领事桥的元数据发现。marathon-consul 获取由马拉松事件总线提供的信息并将它的转发到 consul tree 。 启动时,它还将所有来自马拉松的信息同步到 ...
在Marathon之负载均衡篇中,文档详细描述了如何通过Marathon-Bridge、HAProxy、Bamboo等工具来实现负载均衡。 最后,Marathon之应用迁移篇则讲述了如何在Marathon环境中进行应用迁移。 整体来看,Marathon技术文档...
给定一个由app_json指定的JSON文件,将其发布到Marathon即可部署该应用。 如果资源在time_out之后失败,则它将取消部署。参量app_json :必需。 描述您的马拉松应用的JSON文件的路径。 有关格式的更多信息,请参阅...
资源分类:Python库 所属语言:Python 资源全名:marathon-0.7.7.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Marathon2是一个与字体相关的主题,这通常涉及到计算机图形学、设计软件以及排版技术。在IT领域,字体是至关重要的元素,它们不仅影响着文本的可读性,还对用户体验和视觉效果产生深远影响。Marathon2可能指的是一个...
马拉松代理经理用于马拉松 mesos 环境的 Nginx ...安装在终端中安装类型pip install marathon-proxy-manager 执行安装后,您可以使用以下命令启动它: python -m marathon_proxy_manager --marathon-url http://some