AWS EC2 自动扩展理念
Posted
技术标签:
【中文标题】AWS EC2 自动扩展理念【英文标题】:AWS EC2 Auto scaling philosophy 【发布时间】:2022-01-23 19:29:56 【问题描述】:你好!
我刚开始对 AWS 进行调查,但其中一个概念对我来说似乎不清楚。基于此,我想寻求帮助以了解功能。
我在 EC2 上安装了一个基于 php 的 Web 应用程序。 我的应用程序负载很大,我需要使用负载均衡器以获得最佳性能。如何执行和设置这一点很清楚。我的应用程序代码托管在 Gitlab 上。
在 EC2 和负载均衡器设置之后,我是否想使用自动缩放。 所以,我需要使用自动缩放组。
主要问题:接下来我应该做什么?据我了解,我需要以某种方式创建一个新实例,但我需要具有所有依赖项和源代码的实例的正确图像。 代码自动部署也是一个大问题。当新功能合并时,我需要运行 GitLab 管道并以某种方式将代码交付到新的 EC2。
那么,我需要阅读和调查哪些内容才能自动将新代码部署到新的 EC2 实例? AWS 是否为此提供了一些工具?
感谢您对我的旅程的帮助。
问候, 梅维斯。
【问题讨论】:
如果您是云新手,最好选择像 ECS fargate 这样的托管服务,而不是直接使用 ec2 实例。你的问题是一个有点宽泛的话题。 在 Auto Scaling 组中启动新实例的最快方法是创建一个包含所有预加载软件的 AMI。这样,它可以在启动后立即开始使用。或者,您可以编写一个在新实例首次启动时运行的用户数据脚本,该脚本可以配置该实例。如果配置需要很长时间,您可以使用Amazon EC2 Auto Scaling lifecycle hooks - Amazon EC2 Auto Scaling 来表示它何时准备好接受流量。 【参考方案1】:您可以从这个链接https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html 开始,它向您解释了如何基于 EC2 实例创建自动扩展组。
简而言之,您可以从当前的 EC2(主机 php)生成一个 AMI(亚马逊机器映像),并为您的自动扩展组创建一个启动配置/启动模板。
接下来,您可以添加一个负载均衡器来将流量分配给这些实例,您可以将其与目标组和您的 Autoscaling 组 https://docs.aws.amazon.com/autoscaling/ec2/userguide/attach-load-balancer-asg.html 相关联
对于自动部署,您可以在管道中自动化以创建新的启动配置或从 S3 或 用户数据部分中的其他位置获取代码 PHP 的最新版本。您可以使用 gitlab ci 或 CodeDeploy,这是这类东西的完美候选者
还要注意,自动缩放组是无状态的(创建/终止实例),您必须将图像和资产存储在共享位置如 S3、DB 或 EFS,因为如果实例是不健康或被 ASG 终止,您可能会丢失数据。
【讨论】:
以上是关于AWS EC2 自动扩展理念的主要内容,如果未能解决你的问题,请参考以下文章
AWS OpsWorks 基于负载的实例(如 EC2 自动扩展)
AWS IAM 策略拒绝对自动扩展组或 ECS 集群内的任何 EC2 实例的权限
如何在晚上自动缩减 AWS EC2 实例(停止并更改为 t2.small)并在早上自动扩展(停止并转到 t2.large)?