传统的IT环境是有限的,使用特定数量的服务器来处理任何给定应用程序的负载。当请求数量增加时,服务器上的负载也会增加。最终,对负载的需求会导致性能下降和故障。Amazon弹性计算云(EC2)提供的自动伸缩服务克服了这一挑战。
Auto Scaling确保有足够的EC2实例来运行应用程序。在服务运行之前,您需要定义自动伸缩组。对于每个组,指定EC2实例的最小或最大数量。Auto Scaling然后检测实例上是否有错误或失败,并立即启动另一个实例以维持所需的容量。
Amazon EC2还提供基于负载指标、CloudWatch警报、来自其他Amazon服务(如SQS)的事件或固定计划的动态自动伸缩策略。
EC2自动伸缩是AWS自动伸缩服务的一部分,该服务为多个Amazon服务提供自动伸缩。
EC2自动伸缩涉及三个关键组件:
组将EC2实例组织成逻辑单元,用于扩展或管理目的。在创建自动伸缩组时,您可以指定所需的EC2实例的最小、最大和首选数量。
启动模板是一种配置自动伸缩的新方法,它取代了仍然作为传统选项支持的启动配置。
启动模板为在自动伸缩组中创建的新实例指定配置信息。这包括在创建实例、安全组和密钥对时使用的Amazon Machine Image (AMI)。
您可以使用版本控制来创建参数集的子集,并重用它来创建其他启动模板。例如,您可以创建一个指定公共配置值的默认模板,并通过编程方式插入不同的值来创建模板的新版本。
EC2 Auto Scaling提供了几种扩展实例组的方法:
自动伸缩组中的EC2实例具有与其他EC2实例不同的生命周期。当自动伸缩组启动实例,或者手动将实例添加到组中时,生命周期就开始了。当实例结束或组删除并终止实例时,生命周期结束。
来源:AWS
几个被称为“scale out events”的事件会启动一个进程,告诉自动伸缩组它应该启动新的计算实例并将它们添加到组中:
当其中一个事件发生时,自动伸缩组使用组的启动配置创建新实例。在中启动新实例等待状态,您可以添加生命周期钩子,以便在创建它们时自动执行操作。
创建实例并执行任何生命周期钩子之后,它将进入在使用中的的地位。它一直保持这种状态,直到发生以下任何一个事件:
以下“scale in”事件会导致一个自动伸缩组从组中删除一个实例并销毁它:
确保为每个向外扩展事件定义一个向内扩展事件,以防止未检查的扩展和实例扩展。
这里有几个最佳实践,可以帮助您更有效地管理EC2扩展。
确保Amazon EC2 Auto Scaling定义在频率为一分钟的负载指标上。这样可以更快地响应应用程序使用情况的变化。使用频率为5分钟的缩放度量会降低响应时间,并可能导致基于旧数据的缩放事件。
默认情况下,EC2提供基本监控,每5分钟跟踪一次指标。对于基于EC2指标的自动伸缩,建议启用详细监控,每分钟更新一次指标。注意,这会产生额外的费用。
确保正确配置了健康检查特性,以检测注册到自动伸缩组的EC2实例是否正常工作。否则,自动伸缩组无法执行删除和替换失败实例等基本功能。
如果您正在使用Amazon Elastic Load Balancer (ELB)在自动伸缩组中的实例之间分配流量,请确保启用了ELB健康检查(这在管理程序和应用程序级别工作)。
预测扩展使用工作负载预测来规划未来的容量。如果工作负载具有周期性的性能模式,则预测的质量将更高。尝试在“仅预测”模式下运行预测扩展,以评估策略生成的预测和扩展操作的质量。如果对预测结果满意,可以将策略设置为“预测和规模”。
如果您没有用于自动伸缩的任何其他监视机制,请确保您的自动伸缩组已配置为在向外伸缩或在事件中伸缩时发送电子邮件通知。启用通知后,与自动伸缩组关联的AWS SNS主题将接收伸缩事件,并将伸缩事件通知发送到设置过程中指定的电子邮件地址。
Elastigroup提供人工智能驱动的现场实例中断预测,并通过现场、保留和按需实例的最佳混合自动重新平衡工作负载。它允许您利用现场实例来降低AWS中的成本,即使对于生产和关键任务工作负载,管理开销也很低。
Elastigroup的主要功能包括: