蒙维 - 软件交付的最后一公里基于aws的蓝绿部署时间_W_第1页
蒙维 - 软件交付的最后一公里基于aws的蓝绿部署时间_W_第2页
蒙维 - 软件交付的最后一公里基于aws的蓝绿部署时间_W_第3页
蒙维 - 软件交付的最后一公里基于aws的蓝绿部署时间_W_第4页
蒙维 - 软件交付的最后一公里基于aws的蓝绿部署时间_W_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营软件交付的最后一公里基于亚马逊AWS的蓝绿部署实践蒙维AWS资深解决方案架构师20180421AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营 2018 Amazon Web Services, Inc. or its Affiliates. All rights reserved.议程 软件部署常见风险概述 蓝绿部署基本概念 如何在亚马逊AWS上实现蓝绿部署 数据层的最佳实践AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营软件部署从来都不是一件容易的事情 就地升级 资源限制 停机时间

2、依赖性 过程协调 难以回退AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营常见的软件部署风险AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营挑战应用程序问题基础架构问题处理能力问题扩展性问题人为操作问题过程问题回退问题业务影响停机时间数据丢失糟糕的客户体验收益损失领导的不满忙碌的员工时间和资源浪费什么是蓝绿部署?AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营“蓝” 应用程序的当前生产环境“绿” 同时运行的应用程序其它版本环境“部署” 能够在两个环境之间切换用户流量的能力什么是环境?系统中所有发生了改变的或者需要被部署的部分的范围定义

3、例如:软件组件,应用层,微服务例如:DNS,负载均衡器v2.2.103v2.3.020在AWS中的环境定义范围变窄变宽AMI AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营Amazon EC2 Container ServiceAWS Elastic BeanstalkAWSOpsWorksAWSCloudFormation Auto Scaling group定义出你自己的环境范围要素标准应用架构依赖性, 松耦合紧耦合项目管理模式迭代的速度和次数风险和复杂度部署失败的爆炸半径和影响人的因素团队专长过程测试/质量保障, 回退能力成本预算每个部署的范围和风险都不同 这就需要

4、一个灵活并且拥有功能强大的自动化工具的平台。AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营在AWS上实现蓝绿部署的优势AWS: 敏捷部署 灵活的选择 可扩展性 按实际用量付费 自动化能力AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营如何在AWS上实现蓝绿部署?AWS中国()区区域域由由西西云云数数据据运营运营AWS中国(北北京京)区区域域由由光光环环新新网网运营运营CloudFormation:基础设施即代码描述几乎任何 AWS 资源,通过单个 API 调用即可将其自动预配置为一组资源。模板AWS CloudFormation堆栈EngineAWS中

5、国()区域由西云数据运营AWS中国(北京)区域由光环新网运营v 描述要创建的资源的 JSON格式文件v 将其视为源代码 保存到存储库v AWS 服务组件v 将AWS CloudFormation模板处理为堆栈v AWS CloudFormation创建的一个资源集合v 通过 API 调用执行创建、更新和删除操作在AWS上实现蓝绿部署的不同方案AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营使用云主机1. 传统的DNS切换2. 切换自动扩展组3. 切换自动扩展组的启动配置使用容器服务1. 使用DNS切换ECS服务2. 切换ELB后面的ECS服务3. 切换ECS任务定义通用法则

6、: 自动化AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营成功部署依赖于降低以下风险: 应用程序功能问题 应用程序性能问题 人员/过程问题 基础架构问题 回退能力 高成本加强平台自动化能力CloudFormation :功能最完善的自动化部署平台 部署范围包括从底层网络到上层应用软件的各个层次 可控制更高级的自动化 服 务 : Elastic Beanstalk, ECS,OpsWorks, Auto Scaling蓝绿部署模式以不同的方式解决这些风险方案一: 传统的DNS切换部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过DNS服务逐步实

7、现环境切换 监控你的新旧环境 如果确认新环境无误,销毁旧环境 如果需要,可回退到旧环境AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营部署过程: 从当前环境V1.0 开始蓝 部署一套新环境V2.0绿 测试新环境 通过DNS服务逐步实现环境切换 监控你的新旧环境 如果确认无误,销毁旧环境 如果需要,可回退到旧环境部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过DNS服务逐步实现环境切换 监控你的新旧环境 如果确认新环境无误,销毁旧环境 如果需要,可回退到旧环境部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过D

8、NS服务逐步实现环境切换 监控你的新旧环境 如果确认新环境无误,销毁旧环境 如果需要,可回退到旧环境部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过DNS服务逐步实现环境切换 监控你的新旧环境 如果确认新环境无误,销毁旧环境 如果需要,可回退到旧环境部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过DNS服务逐步实现环境切换 监控你的新旧环境 如果确认新环境无误,销毁旧环境 如果需要,可回退到旧环境部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过DNS服务逐步实现环境切换 监控你的新旧环境 如果

9、确认新环境无误,销毁旧环境 如果需要,可回退到旧环境方案一: 传统的DNS切换部署过程: 从当前环境V1.0开始蓝 部署一套新环境V2.0 绿 测试新环境 通过DNS服务逐步实现版本切换 监控你的新环境 如果确认无误,销毁旧环境 如果需要,可回退到旧环境AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营自动化部署你的环境.myGreenAppVersion: Type: AWS:ElasticBeanstalk:ApplicationVersion,myGreenEnvironment: Type: AWS:ElasticBeanstalk:Environment,myGre

10、enEndpoint: Type: AWS:Route53:RecordSet Resources: myApp: Type: AWS:ElasticBeanstalk:Application , myConfigTemplate: Type: AWS:ElasticBeanstalk:ConfigurationTemplate,myBlueAppVersion: Type: AWS:ElasticBeanstalk:ApplicationVersion,myBlueEnvironment: Type:AWS:ElasticBeanstalk:Environment,myBlueEndpoin

11、t: Type: “AWS:Route53:RecordSet , 使用 CloudFormation模版建模你的环境 对模版实施版本控制 使用Elastic Beanstalk 或者OpsWorks建模模版中的应用程序部分 使用带有新环境(绿)的改动的模版更新当前的CloudFormation stackAWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营Route53基于权重的DNS切换myBlueEndpoint: Type: AWS:Route53:RecordSet, Properties: HostedZoneId: Ref: parameterHostedZone

12、Id , Name: ., Type: CNAME, TTL:60, SetIdentifier: stack-blue, Weight: 90, ResourceRecords: Fn:GetAtt: myBlueEnvironment, EndpointURL ,myGreenEndpoint: Type: AWS:Route53:RecordSet, Properties: HostedZoneId: Ref: parameterHostedZoneId , Name: ., Type: CNAME, TTL:60, SetId

13、entifier: stack-green, Weight: 10, ResourceRecords: Fn:GetAtt: myGreenEnvironment, EndpointURL 使用CloudFormation: 使用初始权重信息更新模版记录 可以考虑对权重值获取采用模版输入参数方式以便重用模版AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营方案总结: 传统的DNS切换风险分类效果理由应用程序问题好使用灰度发布及早发现新版本可能存在问题应用程序性能问题好细粒度,逐步切换客户流量人为/过程错误不错依靠自动化框架基础架构错误不错依靠自动化框架回退一般DNS设置改变生

14、效速度(TTL因素)成本好可以通过自动扩展优化成本AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营假如不用DNS实现蓝绿部署AWS中国()区区域域由由西西云云数数据据运营运营AWS中国(北北京京)区区域域由由光光环环新新网网运营运营AWS自动扩展服务简介用户流量ELBAWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营延迟Auto Scaling资源利用率CloudWatch指标方案二: 切换自动扩展组部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向ELB注册新的自动

15、扩展组 将旧的自动扩展组从ELB注销AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署

16、包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝

17、 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销部署过程: 亚马逊弹性负载均衡器(ELB)位于蓝绿环境之外 从当前版本自动扩展组开始蓝 部署包含新版本的自动扩展组绿 测试新的自动扩展组 向新的自动扩展组注册负载均衡器 将负载均衡器从旧的自动扩展组注销方案总结: 切换自动扩展组风险分类 效果 理由 应用程序问题好使用灰度模式和额外ELB及早发现新版本存在问题应用程序性能问题不错可逐步切换流量, 但是粒度较粗人为/过程错误不错依靠化自动框架基础架构错误好自动扩展能力回退好没有使用DNS切换成本好利用自动扩展优化AWS中国()区域由

18、西云数据运营AWS中国(北京)区域由光环新网运营进一步减小蓝绿环境包括的范围AWS中国()区区域域由由西西云云数数据据运营运营AWS中国(北北京京)区区域域由由光光环环新新网网运营运营方案三: 切换自动扩展组启动配置部署过程: 从当前运行在ELB之后的自动扩展组&启 动配置开始蓝 为当前自动扩展组更换启动配置绿 扩展自动扩展组实例数量为原来的两倍 缩减自动扩展组的实例数量到原来大小 如果希望快速回退, 可以只是将老版本的EC2实例设置为Standby状态AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营部署过程: 从当前运行在ELB之后的自动扩展组&启 动配置开始蓝 为当前自

19、动扩展组更换启动配置绿 扩展自动扩展组实例数量为原来的两倍 缩减自动扩展组的实例数量到原来大小 如果希望快速回退, 可以只是将老版本的EC2实例设置为Standby状态部署过程: 从当前运行在ELB之后的自动扩展组&启 动配置开始蓝 为当前自动扩展组更换启动配置绿 扩展自动扩展组实例数量为原来的两倍 缩减自动扩展组的实例数量到原来大小 如果希望快速回退, 可以只是将老版本的EC2实例设置为Standby状态部署过程: 从当前运行在ELB之后的自动扩展组&启 动配置开始蓝 为当前自动扩展组更换启动配置绿 扩展自动扩展组实例数量为原来的两倍 缩减自动扩展组的实例数量到原来大小 如果希望快速回退,

20、可以只是将老版本的EC2实例设置为Standby状态部署过程: 从当前运行在ELB之后的自动扩展组&启 动配置开始蓝 为当前自动扩展组更换启动配置绿 扩展自动扩展组实例数量为原来的两倍 缩减自动扩展组的实例数量到原来大小 如果希望快速回退, 可以只是将老版本的EC2实例设置为Standby状态部署过程: 从当前运行在ELB之后的自动扩展组&启 动配置开始蓝 为当前自动扩展组更换启动配置绿 扩展自动扩展组实例数量为原来的两倍 缩减自动扩展组的实例数量到原来大小 如果希望快速回退, 可以只是将老版本的EC2实例设置为Standby状态方案总结: 切换ASG启动配置风险分类效果理由应用程序问题一般在

21、一个混有新旧版本EC2实例的自动扩展组中定位问题变困难应用程序性能问题一般可逐步切换流量, 但是粒度较粗人为/过程错误不错依靠自动框架基础架构错误好自动扩展能力回退好没有使用DNS切换成本不错可利用自动扩展优化成本, 但是初始扩展需要两倍数量EC2实例AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营在容器环境中如何实现蓝绿部署?AWS中国()区区域域由由西西云云数数据据运营运营AWS中国(北北京京)区区域域由由光光环环新新网网运营运营AWS ECS简介调度器任务定义ECS AgentECS AgentECS AgentECS Agent任务任务任务任务TTaasskkTTa

22、asskkTTaasskkTTaasskkDocker Daemon 容器实例服务AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营Docker Daemon 容器实例Docker Daemon 容器实例容器实例集群Docker Daemon容器实例任务定义举例image: tutum/wordpress-stackable, name: wordpress,cpu: 10,memory: 500, essential: true, links: db,entryPoint: /bin/sh,-c,environment: ,portMappings: containerPo

23、rt: 80,hostPort: 80,image: mysql,name: db, cpu: 10,memory: 500, essential: true, entryPoint: /entrypoint.sh,environment: name: MYSQL_ROOT_PASSWORD,value: pass,portMappings: AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营在AWS ECS中实现蓝绿部署选项环境边界: Docker 容器- 任务定义部署选项:1. Blue/green ECS services, DNS update2. Blue/gree

24、n ECS services, shared ELB3. ECS updateAWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营方案一: 使用DNS切换ECS服务部署过程: 利用ELB和老版本任务定义启动服务蓝 创建新版本任务定义(使用新容器镜像) 和ELB 利用新建ELB和新版本任务定义启动服务 绿 更新DNS别名记录指向新的ELB 清除旧版本服务对应的容器和ELBAWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营部署过程: 利用ELB和老版本任务定义启动服务 蓝 创建新版本任务定义(使用新容器镜像)和ELB 利用新建ELB和新版本任务定义启动服务绿 更新

25、DNS别名记录指向新的ELB 清除旧版本服务对应的容器和ELB部署过程: 利用ELB和老版本任务定义启动服务蓝 创建新版本任务定义(使用新容器镜像)和ELB 利用新建ELB和新版本任务定义启动服务绿 更新DNS别名记录指向新的ELB 清除旧版本服务对应的容器和ELB部署过程: 利用ELB和老版本任务定义启动服务蓝 创建新版本任务定义(使用新容器镜像)和ELB 利用新建ELB和新版本任务定义启动服务绿 更新DNS别名记录指向新的ELB 清除旧版本服务对应的容器和ELB方案总结: 使用DNS切换ECS服务风险分类缓解效果理由应用程序问题好完全切换或者按权重逐步切换(灰度发布)应用程序性能问题不错E

26、LB 可能需要预热, ECS服务自动扩展人为/过程错误好过程已经简化(容器化)基础架构错误不错依靠CloudWatch, Auto Scaling, ELB回退一般DNS设置改变生效速度(TTL因素)成本一般需要足够大的集群同时运行新旧服务AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营方案二: 使用ELB切换ECS服务部署过程: 利用ELB和老版本任务定义启动服务蓝 使用新的容器镜像创建新版本任务定义 利用现有ELB和新版本任务定义启动服务绿 通过增加任务的数量扩展新服务 通过清零任务数量释放旧服务对应资源AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运

27、营部署过程: 利用ELB和老版本任务定义启动服务蓝 使用新的容器镜像创建新版本任务定义 利用现有ELB和新版本任务定义启动服务绿 通过增加任务的数量扩展新服务 通过清零任务数量释放旧服务对应资源部署过程: 利用ELB和老版本任务定义启动服务蓝 使用新的容器镜像创建新版本任务定义 利用现有ELB和新版本任务定义启动服务绿 通过增加任务的数量扩展新服务 通过清零任务数量释放旧服务对应资源部署过程: 利用ELB和老版本任务定义启动服务蓝 使用新的容器镜像创建新版本任务定义 利用现有ELB和新版本任务定义启动服务绿 通过增加任务的数量扩展新服务 通过清零任务数量释放旧服务对应资源方案总结: 使用ELB

28、切换ECS服务风险分类缓解效果理由应用程序问题好灰度发布应用程序性能问题好ELB已经预热, ECS自动扩展人为/过程错误好过程已经简化(容器化)基础架构错误不错依靠 CloudWatch, Auto Scaling, ELB回退好没有DNS相关问题成本不错ECS负责资源管理AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营方案三: ECS服务更新部署过程: 以当前运行ECS服务使用的任务定义为基础蓝 创建一个新的任务定义版本,使用新的容器镜像绿 更新当前运行的ECS服务,使用新的任务定义版本 ECS将采用滚动更新方式在容器实例中部署新的任务定义AWS中国()区域由西云数据运营

29、AWS中国(北京)区域由光环新网运营部署过程: 以当前运行ECS服务使用的任务定义为基础蓝 创建一个新的任务定义版本,使用新的容器镜像绿 更新当前运行的ECS服务,使用新的任务定义版本 ECS将采用滚动更新方式在容器实例中部署新的任务定义部署过程: 以当前运行ECS服务使用的任务定义为基础蓝 创建一个新的任务定义版本,使用新的容器镜像绿 更新当前运行的ECS服务,使用新的任务定义版本 ECS将采用滚动更新方式在容器实例中部署新的任务定义部署过程: 以当前运行ECS服务使用的任务定义为基础蓝 创建一个新的任务定义版本,使用新的容器镜像绿 更新当前运行的ECS服务,使用新的任务定义版本 ECS将采用滚动更新方式在容器实例中部署新的任务定义方案总结: ECS 服务更新风险分类缓解效果理由应用程序问题一般没有灰度部署应用程序性能问题不错无流量管理, ELB 已经预热人为/过程错误好简单, 自动化过程基础架构错误不错自动扩展集群实例和服务本身回退好没有DNS相关问题成本好滚动部署, 需要多一台容器实例AWS中国()区域由西云数据运营AWS中国(北京)区域由光环新网运营如果存储层表结构也发生了改变, 怎么办?AWS中国()区区域域由由西西云云数数据据运营运营AWS中国(北北京京)区区域域由由光光环环新新网网运营运营解耦表结构变化和应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论