Pulumi Fargate 因健康检查不良而中止部署

问题描述 投票:0回答:1

我正在使用 Pulumi 将应用程序部署到 AWS Fargate。在健康部署中,大约 10 分钟即可完成。在不健康的部署中,应用程序将报告不健康的状态,并且 Fargate 将一遍又一遍地重新启动它大约 45 分钟,然后才确定部署失败。在 99% 的情况下,我们在部署后一分钟内就知道它是否永远不会成功。

部署期间的健康检查因此具有三种状态;

  • 健康,请耗尽旧应用程序版本并将所有新负载切换到此新应用程序版本
  • 还不确定
  • 中止部署,旧应用程序在整个失败的部署期间永远不会停止服务请求

一旦应用程序报告“不,此代码已损坏,此代码的部署将无法工作,请中止部署”,我们如何告诉 Fargate 放弃重新启动?

这是当前配置:

const lb = new awsx.classic.lb.ApplicationLoadBalancer('app-alb', {})

const lbTargetGroup = new awsx.classic.lb.ApplicationTargetGroup(
  'app-targetgroup',
  {
    loadBalancer: lb,
    protocol: 'HTTP',
    port: appConfig.requireNumber('webPort'),
    healthCheck: {
      protocol: 'HTTP',
      path: '/health',
      unhealthyThreshold: 10,
      healthyThreshold: 2,
      timeout: 20,
      interval: 30,
      matcher: '200',
    },
  }
)

并且因为

matcher
仅区分两种状态; lgtm 等。我们可以添加第三种状态吗?

amazon-ecs aws-fargate aws-application-load-balancer pulumi
1个回答
0
投票

您唯一的选择是启用 ECS 部署断路器(如果您尚未启用)。除此之外,没有任何选择可以让 ECS 更快地失败部署。

ECS 断路器是最接近您所描述的:

“一旦应用程序报告“不,此代码已损坏,此代码的任何部署都将无法工作,请中止部署”,请告诉 Fargate 放弃重新启动?”

但是它仍然会重试至少 10 次,因此仍然需要很长时间才能确定部署失败。

目前,ECS、Fargate、负载均衡器或目标组中没有其他设置可以进一步控制。

© www.soinside.com 2019 - 2024. All rights reserved.