【问题标题】:cloudformation best practices in AWSAWS 中的 cloudformation 最佳实践
【发布时间】:2015-02-05 05:39:49
【问题描述】:

我们正处于在 AWS 上运行我们的服务的早期阶段。我们的服务器托管在 AWS 中,在 VPC 中,具有私有和公共子网,并且在私有和公共子网中有多个实例,使用 ELB 和前端 Web 服务器的自动缩放设置(使用 AMI)。首先使用 AWS 控制台手动设置整个环境(VPC、安全组、EC2 实例、数据库实例、S3 存储桶、云端)。 应用服务器托管 jboss,war 文件部署在服务器上。

根据 AWS 最佳实践,我们希望使用 cloudformation 创建整个基础设施并设置测试/阶段/生产环境。

-使用一个 cloudformation 堆栈/模板来拥有上述所有组件(VPC、安全组、EC2 实例、数据库实例、S3 存储桶、云端等)是否是个好主意?或者我们应该创建两个堆栈 1) 具有网络重装组件和 2) 具有 EC2 相关组件?

-一旦我们有一个使用 cloudformation stact 运行的 prod envoronemtn,如果我们想在未来更新 prod 上的新 AMI,我们如何使用 cloudformation 更新实时运行的 EC2 实例而不中断?

-当新版本完成时,将代码部署到多个 EC2 笔记的最佳实践/多种方法是什么?我们目前不使用 Contius 集成。

【问题讨论】:

    标签: amazon-cloudformation cloud-init


    【解决方案1】:

    将您的设置分成多个堆栈是一个非常好的主意。一个明显的原因是堆栈有一定的限制,你最终可能会达到。一个更实际的原因是,您实际上并不需要在每次只想部署新版本时更新您的 VPC。网络架构通常变化较少。避免使用一个巨大的模板或不必要地对“重要”模板进行更改的另一个原因是,您总是冒着把事情搞砸的风险。如果您的模板中有错误并且您意外删除了重要资源(例如注释掉),您将非常抱歉。因此,出于谨慎考虑将堆栈分开可能是个好主意。

    如果您想更新您的应用程序,您只需使用新的 AMI 更新模板,CFN 就会知道需要重新创建或更新什么。你可以阅读滚动更新here。但是,我建议考虑使用更直接的方式来部署您的实际代码,例如 Ansible 或 Chef。

    我还建议您使用 Docker 来打包和部署应用程序的节点。非常方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-10
      • 2016-01-29
      • 2020-03-31
      • 2020-07-09
      • 2017-11-16
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多