写点什么

新上线!AWS CodeDeploy 自动部署初相识

  • 2019-11-18
  • 本文字数:2313 字

    阅读完需:约 8 分钟

新上线!AWS CodeDeploy自动部署初相识

作为一个开发运维人员,您是否还在为:


  1. 如何快速地将新版本应用部署到大批量服务器,无论其是云服务器 EC2 还是本地服务器?

  2. 如何在部署过程中消除停机时间?

  3. 如何规避易于出错的手工操作?

  4. 在遇到问题时,如何快速回滚?并及时向您发送通知?


今天,我们很高兴地宣布:AWS 的 CodeDeploy 服务能够助您一臂之力!它能够协助您将应用程序部署到 Amazon EC2 实例和/或非 Amazon EC2 实例的物理或虚拟设备。应用程序包扩:代码、Web 和配置文件、可执行文件、程序包、脚本等可部署的内容。AWS CodeDeploy 支持从 Amazon S3 存储桶和 GitHub 存储库部署应用程序。


您无需更改现有代码即可使用 AWS CodeDeploy。您可以使用 AWS CodeDeploy 控制跨 Amazon EC2 实例部署的速度,并定义要在每个阶段采取的操作。

AWS CodeDeploy 具备下列优势:

  • 自动部署。AWS CodeDeploy 可完全自动部署应用程序,并随您的基础设施进行扩展,让您能够部署到数千个实例。

  • 最大程度减少停机时间。AWS CodeDeploy 可以最大程度地提高应用程序的可用性。支持滚动部署和蓝/绿部署模式。并根据您配置的规则跟踪应用程序运行状况。

  • 停止并回滚。出现错误时,您可以自动或手动停止和回滚部署。

  • 易于采用。AWS CodeDeploy 与平台无关,适用于任何应用程序。您可以轻松重用设置代码。AWS CodeDeploy 还能与您的软件发布过程或持续交付工具链集成。

AWS CodeDeploy 支持如下 2 种部署模式

就地部署:对部署组中的实例依次执行脱机操作/更新应用/恢复联机的操作,完成滚动部署。


蓝绿部署:创建一组新的替换实例,并安装新版本的应用程序。成功后,切换流量到这些新实例,删除旧实例,完成部署。AWS CodeDeploy 运行您在切换流量之前,对新版本应用程序进行测试。如果发现问题,您可以快速回滚到旧版本。


此外,您还可以对蓝绿部署模式做更多控制:


  • 您可以选择是手工创建一组新实例,还是完全复制运行中的自动扩展组?

  • 您可以选择何时切换流量?按照什么比例切换流量?

  • 以及在部署完成后,是否删除旧实例?


下面,我们以一个具体示例来演示如何进行蓝绿部署。

第一步:启动部署向导,搭建测试应用。

步骤 1:登录 AWS 管理控制台,选择 AWS CodeDeploy 服务


步骤2:如果显示介绍页面,请选择 Get Started Now。如果显示 Applications 页面,请在 More info 中,选择 示例部署向导


步骤3:选择 Sample deployment


步骤4:选择 Blue/green deployment


步骤5: Key pair name 根据您账户中的设置选择,其它选项保持默认设置。


点击 Launch environment


此时,CloudFormation 会为您创建一个堆栈 – 一个简单的 Web 网站:由一个 ELB 和 3 台 Web 服务器组成,并配置了自动扩展组。几分钟后,您将会看到 Congratulations! Your environment is ready 页面。


Sample application 部分,您可以点击 http://BlueGreenLoadBalancer-xxx 查看 Web 网站内容(注意背景色是蓝色)



在 Sample blue/green deployment 部分,记下新版本应用程序的 S3 地址 https://s3.cn-north-1.amazonaws.com.cn/aws-codedeploy-cn-north-1/samples/latest/SampleApp2_Linux.zip,后续步骤会用到。

第二步:修改部署模式为“蓝绿部署”

步骤 1:在 CodeDeploy 控制台,选择 Applications -> BlueGreenDemoApplication(刚创建的应用程序) -> BlueGreenDemoFleet-xxx(刚创建的部署组)。在 Actions 下拉菜单中,选择“Edit



步骤 2:在新页面中,将 Deployment Type 设置为 Blue/green deployment,并点击 Save



注:在该页面中,您还可以设置更灵活的部署方式,是否发送通知,如何回滚等。

第三步:部署一个新版本

步骤 1:在前一步返回的页面中,依旧选择之前的部署组 BlueGreenDemoFleet-xxx在 Actions 下拉菜单中,选择 Deploy New Version



步骤 2:在新页面中,在 Revision location* 中,填入之前记录的新版本应用程序所对应的 S3 地址:https://s3.cn-north-1.amazonaws.com.cn/aws-codedeploy-cn-north-1/samples/latest/SampleApp2_Linux.zip,并点击 Deploy


第四步:观察部署过程和结果


在接下来的页面中,您将会看到整个部署过程:



在 EC2 控制台,您会看到创建了 3 个新实例。


部署完毕后,在页面底部您可以看到新创建的 3 个实例接替了所有流量,原有的 3 个实例不再接收流量,并被终止。



您也可以随时在控制台的 Applications -> Deployments 点击相应的部署 ID 查看详情。


使用浏览器重新刷新 Web 页面,背景色已变成绿色。



至此,蓝绿部署完毕。


测试完毕,为避免产生后续费用,请按照以下顺序清除所有资源:


  1. 替换环境的实例所属的 Auto Scaling 组。(删除 AWS CloudFormation 堆栈时,与原始环境中的实例关联的 Auto Scaling 组也将被删除。)

  2. 示例部署向导 创建的用于为蓝/绿部署提供原始环境的 CloudFormation 堆栈。

  3. 示例部署向导 创建的 AWS CodeDeploy 部署组和应用程序。


除了管理 AWS 的 EC2 实例,AWS CodeDeploy 还能够管理您本地数据中心的物理服务器和/或其它环境中的虚拟服务器,只需在其上安装相应的 Agent 即可实现混合云管理和部署。目前支持的操作系统包括:Amazon Linux/RHEL/Ubuntu/Windows。


如要获取更详细的帮助信息,请参考 AWS CodeDeploy 中文文档:http://docs.amazonaws.cn/codedeploy/latest/userguide/welcome.html


作者介绍:



田明晶


AWS 解决方案架构师,拥有 18 年 IT、互联网工作经验,曾在中国联通互联网中心、Sun、Oracle 等公司担任售后,售前工程师;2014 加入 AWS,担任云技术支持工程师,现任职解决方案架构师。在存储、数据库方面有多年经验;对大数据、容器和各种前沿技术(深度学习、AI 等)有浓厚的兴趣和技术积累。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/codedeploy/


2019-11-18 08:001026

评论

发布
暂无评论
发现更多内容

首次公开到知乎爆火!基于SpringCloud+SpringBoot+Vue电子版项目实战教程,附完整源码

退休的汤姆

Java spring 程序员 面试题 阿里

基于阿里云Serverless函数计算开发的疫情数据统计推送机器人

Serverless Devs

零基础如何参加大数据培训

小谷哥

DevOps 团队如何防御 API 攻击

SEAL安全

DevOps DevSecOps 软件供应链安全

学员参加前端培训哪里比较靠谱?

小谷哥

设计模式的艺术 第十七章命令设计模式练习(开发一个基于Windows平台的公告板系统。该系统提供了一个主菜单(Menu),主菜单包含一些菜单项,Menu类可以增加菜单项。菜单项主要方法是click(),每个菜单项包含一个抽象命令类)

代廉洁

设计模式的艺术

Dubbo 3 StateRouter:下一代微服务高效流量路由

阿里巴巴中间件

阿里云 开源 微服务 dubbo 中间件

游戏技术加速数实融合,网易伏羲挖掘机器人首次曝光

网易伏羲

人工智能 机器学习 工程实践

Substrate技术及生态8月大事记 | 波卡发布新版本,XCM协议更新

One Block Community

区块链 技术 开发者 Substrate 更新

音视频开发进阶|第六讲:色彩和色彩空间·上篇

ZEGO即构

音视频开发 色彩 色彩空间

技术分享| 基于RTM 实现的呼叫邀请如何添加推送功能?

anyRTC开发者

音视频 IM 实时消息 呼叫邀请 推送

计算机网络体概念

StackOverflow

编程 计算机网络 9月月更

软件测试 | 测试开发 | 持续交付-Blue Ocean 应用

测吧(北京)科技有限公司

在线数据迁移,数字化时代的必修课 —— 京东云数据迁移实践

京东科技开发者

数据 数据迁移 上云 redis'

51单片机定时器原理及相关器件

孤衫

C语言 单片机 9月月更

千锋锋友学盟分享会:程序员百万年薪进阶指

千锋IT教育

分布式团队的高效站立会说明书 | Liga译文

LigaAI

高效工作 敏捷开发 开发团队 每日站会 企业号九月金秋榜

零基础学习java培训是否适合参加

小谷哥

大数据培训前景怎么样

小谷哥

在java培训中心怎样才能快速学习?

小谷哥

从云计算到函数计算

Serverless Devs

云计算 阿里云 AWS

软件测试 | 测试开发 | 测试开发基础 mvn test | 利用 Maven Surefire Plugin 做测试用例基础执行管理

测吧(北京)科技有限公司

maven

《TiDB跨版本升级》 --流程概述

TiDB 社区干货传送门

迁移 实践案例 版本升级 管理与运维 安装 & 部署

从零教你使用MindStudio进行Pytorch离线推理全流程

华为云开发者联盟

Python 人工智能 企业号九月金秋榜

解锁云原生新场景 | 云原生加速云边端一体化发展

York

容器 云原生 边缘计算 边云协同 边缘云原生

LeetCode-58. 最后一个单词的长度(java)

bug菌

Leet Code 每日一题 9月月更

阿里灵杰融合智能算力,全栈AI服务为探索者铺路

阿里云大数据AI技术

人工智能 大数据 企业号九月金秋榜

软件测试 | 测试开发 | 构建测试平台与对应的组织架构需要哪些能力?

测吧(北京)科技有限公司

测试

LeetCode-66. 加一(java)

bug菌

Leet Code 每日一题 9月月更

dbt-tidb 1.2.0 尝鲜

TiDB 社区干货传送门

新版本/特性解读

Apache DolphinScheduler PMC:开源不一定也要九死一生

白鲸开源

海豚调度 开源社区 Apache DolphinScheduler 开源文化 #开源

新上线!AWS CodeDeploy自动部署初相识_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章