我想诊断并解决 AWS Elastic Beanstalk 环境中的 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 问题。
解决方法
Elastic Beanstalk 中的自动扩缩问题可能是由于实例启动失败、运行状况检查问题或扩缩策略配置错误所致。
我的 Amazon EC2 Auto Scaling 组不断替换实例
确定 Amazon EC2 Auto Scaling 组意外停止您的 Amazon EC2 实例的原因。如果 Amazon EC2 Auto Scaling 组停止了运行状况不佳的实例,则检查实例运行状况检查状态。要解决运行状况检查失败的问题,请参阅排查 Amazon EC2 Auto Scaling 中运行状况不佳的实例。
您还可以下载 Elastic Beanstalk 应用程序日志,查找运行状况检查问题的原因。检查以下文件是否存在部署故障:
- /var/log/eb-engine.log
- /var/log/cfn-init-cmd.log
- /var/log/cfn-init.log
要确定应用程序流量问题,请检查以下 Web 服务器访问和错误日志:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
- (仅限 Apache)/var/log/httpd/access_log
- (仅限 Apache)/var/log/httpd/error_log
如果您使用 Windows 实例,请检查以下文件是否存在部署故障:
- 对于 CloudFormation 初始化日志,请检查 C:\cfn\log\cfn-init.log。
- 对于 Elastic Beanstalk 日志,请检查 C:\Program Files\Amazon\ElasticBeanstalk\logs\。
要确定您的 Windows 实例上的应用程序流量问题,请检查以下日志文件:
- 对于 Microsoft Internet Information Services (IIS) 访问日志,请检查 C:\inetpub\logs\LogFiles\W3SVC1\。
- 对于 HTTP 错误日志,请检查 C:\Windows\System32\LogFiles\HTTPERR\。
- 对于 Windows 事件日志(如应用程序、系统和安全),请检查 Windows 事件查看器控制台。有关详细信息,请参阅 Microsoft Learn 网站上的 Event Viewer(事件查看器)。
我的 Amazon EC2 Auto Scaling 组在 CPU 利用率达到 100% 之前无法扩展
如果您的 Amazon EC2 Auto Scaling 组使用 Average(平均值)统计数据,则您的 Amazon EC2 Auto Scaling 组可能无法对流量的突然增加做出响应。因此,在平均值仍低于您设置的阈值时,CPU 利用率最大值可能达到 100%。
要解决此问题,请将“统计数据”设置从“平均值”更改为“最大值”。
我的 Amazon Auto Scaling 组出现频繁且不必要的扩缩事件
阈值配置过窄会在横向扩展和缩减触发器之间创建一个窗口,这会导致响应式扩缩循环。
要解决此问题,请完成以下步骤:
- 增大 Amazon CloudWatch 警报的上限阈值和下限阈值设置之间的差距。
- 实施冷却时间。
- 执行负载测试,然后使用应用程序的历史负载模式和先前的 CloudWatch 指标来微调这些设置。例如,使用历史 CPU 利用率、内存利用率、磁盘利用率和网络带宽利用率。
相关信息
在 AWS Elastic Beanstalk 上使用 Locust 进行分布式负载生成和测试