Amazon Fargate 任务维护
当 Amazon 确定托管在 Amazon Fargate 上的 Amazon ECS 任务需要安全或基础设施更新时,需要停止这些任务并启动新任务来替换它们。
对于属于 Amazon ECS 服务一部分的任务,如果底层主机存在问题,则 Amazon 将停止任务。此外,服务调度器还将启动一个新任务,尝试维持服务的所需计数。发生这种情况时,不会发送任务停用通知。但是,如果任务使用的底层主机或平台版本存在安全问题,则任务停用通知会发送到您的 Amazon Health Dashboard
对于独立任务,当底层主机出现问题或任务正在使用的平台版本出现安全问题时,Amazon 将任务停用通知发送给您的 Amazon Health Dashboard
在上述任何方案中停止任务时,您可以描述已停止的任务以检索 stoppedReason
值。包含 ECS is performing maintenance on the
underlying infrastructure hosting the task
消息的 stoppedReason
指示由于任务维护问题而停止了任务。
为了准备任务停用过程,我们建议通过模拟此场景来测试您的应用程序行为。通过停止您的服务中的单个任务来测试复原能力,可以实现此目的。
下表描述了这些场景。
任务类型 | 问题 | 操作 |
---|---|---|
独立任务 |
主机问题 |
使用 Amazon Health Dashboard |
安全漏洞 |
使用 Amazon Health Dashboard |
|
服务任务 |
主机问题 |
任务由 Amazon 停止,服务调度器将启动一个新任务,尝试维持服务的所需计数。未发送任何通知。 |
安全漏洞 |
使用 Amazon Health Dashboard |
了解任务停用通知
当任务停用通知发送时,您会收到待处理停用的通知电子邮件。在事件发生之前,将发送包含任务 ID 和停用日期的电子邮件。此电子邮件将发送到与您的账户关联的地址。这也是您用于登录 Amazon Web Services Management Console 的电子邮件地址。如果您使用的电子邮件账户不定期检查,则可以使用 Amazon Health Dashboard
当任务到达其计划的停用日期时,Amazon 会将其停止或终止。如果它尚未停止,是这种情况。对于服务任务,任务停止时,服务调度器会启动新任务来代替它,确保服务保持其所需计数。对于独立任务,它们将被停止,您负责启动替换。
使用计划停用的任务
此过程仅适用于服务任务。对于独立任务,只需停止并运行新的独立任务即可。
对于服务任务,任务停止时,服务计划程序将启动一个新任务,在其达到预定的停用日期后替换它。服务调度器维护所需的服务计数。要在停用日期前更新服务任务,可以按照以下步骤操作。有关更多信息,请参阅更新服务。
更新运行服务(Amazon Web Services Management Console)
打开位于 https://console.aws.amazon.com/ecs/
的 Amazon ECS 控制台。 -
在导航栏上,选择集群所在的区域。
-
在导航窗格中,选择 Clusters。
-
在 Clusters(集群)页面上,选择您的服务驻留的集群的名称。
-
在 Cluster:
name
页面上,选择 Services。 -
选中要更新的服务左侧的框并选择 Update。
-
在配置服务页面上,您的服务信息已预先填充。选择 Force new deployment (强制实施新部署),然后选择 Next step (下一步)。
注意 强制执行新部署时,调度器会使用修补后的平台版本启动新任务。您的任务不需要您选择其他平台版本进行更新。有关更多信息,请参阅Amazon Fargate 平台版本。
-
在 Configure network (配置网络) 和 Set Auto Scaling (optional) (设置 Auto Scaling (可选)) 页面上,选择 Next step (下一步)。
-
选择 Update Service 以完成并更新服务。
更新运行服务(Amazon CLI)
-
获取服务的 Amazon Resource Name (ARN)。
aws ecs list-services
--clustercluster_name
--regionregion
输出如下所示。
{ "serviceArns": [ "arn:aws:ecs:
region
:aws_account_id
:service/MyService" ] } -
更新服务,强制实施将部署新任务的新部署。
aws ecs update-service --service
--clusterserviceArn
--force-new-deploymentcluster_name
--regionregion
如果您使用的是独立任务,则可以启动新的任务来代替它。有关更多信息,请参阅运行独立任务。