当前位置: 首页 > news >正文

aws codedeploy 在ec2实例和autoscaling组上进行蓝绿部署

参考资料

  • https://docs.amazonaws.cn/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.html
  • https://docs.amazonaws.cn/zh_cn/codedeploy/latest/userguide/applications.html
  • 为 EC2/本地蓝/绿部署创建部署组(控制台)

部署ec2比较简单,只需要创建EC2/On-premises类型的codedeploy应用,之后在应用中创建部署组

  • 部署组可以选择

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wHhL7yb0-1680197950824)(assets/image-20230331011101362.png)]

  • 在参考中可以找到示例程序,https://docs.amazonaws.cn/codedeploy/latest/userguide/resource-kit.html

下面主要内容为部署过程中的注意事项

启动4台ec2实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-897xgRzO-1680197950827)(assets/image-20230331011536661.png)]

但凡是蓝绿部署,就必然要提供两组资源,下面的配置使用部署中的实例替换部署组中的实例

创建部署组,在部署组中指定green实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltJNyDyC-1680197950828)(assets/image-20230331012051093.png)]

在部署中指定blue实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zyDcMenq-1680197950830)(assets/image-20230331012034706.png)]

创建部署,由于我们提供了blue组,因此创建资源的步骤直接被跳过

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mFFcN5ok-1680197950832)(assets/image-20230331012746054.png)]

可以查看具体实例的部署事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krhjVV53-1680197950833)(assets/image-20230331012302322.png)]

使用asg模板的额外权限问题

已经为codedeploy服务角色附加了AWSCodeDeployRole托管策略,但是仍旧出现以下没有权限的错误

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j1CGzhNo-1680197950834)(assets/image-20230331000203757.png)]

在cloudtrail中同样能够看到错误的调用记录(CreateAutoScalingGroupRunInstances),检查文档后发现

如果创建具有启动模板的 Auto Scaling 组,则必须添加以下权限:

  • ec2:RunInstances
  • ec2:CreateTags
  • iam:PassRole

部署位置已经存在

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buAulbRF-1680197950835)(assets/image-20230331003418887.png)]

需要手动修改部署的覆盖配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Go0UAyCY-1680197950837)(assets/image-20230331011255068.png)]

部署过程

asg会创建额外数量的实例来完成部署

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-77D3qJCZ-1680197950838)(assets/image-20230331004632672.png)]

每个具体的部署都可以视为一个ec2实例的部署,我们在之前的文章中已经讨论过常见的单一实例部署错误的排查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pXuvB5MU-1680197950839)(assets/image-20230331004706162.png)]

蓝绿部署生命周期

ec2进行蓝绿部署的生命周期示意图如下

img

替代实例的生命周期

C:\Users\ASUS\Nutstore\1\embedded\每日任务\assets\image-20230331004846505.png

旧实例的生命周期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYj3xmfu-1680197950842)(assets/image-20230331004949551.png)]

之后需要手动进行旧实例的terminate操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2evPipW7-1680197950843)(assets/image-20230331010149842.png)]

注意到原来的asg被删除,创建了新的asg作为替代,此时不要手动terminate实例,否则会导致asg删除失败

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DAdU32nu-1680197950844)(assets/image-20230331010535002.png)]

相关文章:

  • Python求矩阵的特征值和广义特征值
  • 【多线程】CAS
  • NDK(三):JNIEnv解析
  • 清理zabbix数据库ibdata1文件
  • 蛇形走线用在哪里,一文告诉你
  • 什么是“关键对话”?“关键对话”背后的底层思维是什么?如何进行一场“关键对话”?
  • java基础知识——11.方法
  • 什么是web3?未来趋势?怎么学?
  • 2023第二届浙江省技能大赛温州市选拔赛任务书
  • 技术分享及探讨
  • NDK(四):Native与Java互调
  • SpringSecurity
  • 机器学习:基于逻辑回归对优惠券使用情况预测分析
  • 米哈游春招后端-2023.03.19-第一题-米哈游的RBG矩阵-简单
  • 教你精通JavaSE语法之第九章、抽象类和接口
  • CSS中外联样式表代表的含义
  • E-HPC支持多队列管理和自动伸缩
  • ES10 特性的完整指南
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript创建对象的四种方式
  • laravel with 查询列表限制条数
  • Less 日常用法
  • ng6--错误信息小结(持续更新)
  • php面试题 汇集2
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • vue中实现单选
  • webpack4 一点通
  • 分布式熔断降级平台aegis
  • 机器学习中为什么要做归一化normalization
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 我有几个粽子,和一个故事
  • 译自由幺半群
  • 智能网联汽车信息安全
  • 阿里云重庆大学大数据训练营落地分享
  • 交换综合实验一
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # Apache SeaTunnel 究竟是什么?
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (分布式缓存)Redis哨兵
  • (附源码)php投票系统 毕业设计 121500
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)理解angular中的module和injector,即依赖注入
  • (生成器)yield与(迭代器)generator
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (学习日记)2024.01.09
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (译)2019年前端性能优化清单 — 下篇
  • .gitignore文件设置了忽略但不生效
  • .NET Core Web APi类库如何内嵌运行?
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net中的集合