ECS服务连接健康检查

0

【以下的问题经过翻译处理】 我们正在使用ECS服务连接,通过ECS服务配置中的ServiceConnectConfiguration属性在CloudFormation模板中配置。这一切都运行良好。然而,我们注意到当我们进行扩展时,一旦新实例注册到Service Connect / CloudMap后,它立即开始接收流量。但是,由于容器的启动和初始化需求,它仍需要大约2分钟才能准备好接收流量。

我知道CloudMap允许对服务进行健康检查(ServiceDiscovery.Service.HealthCheckConfig)。但是,ServiceConnectConfiguration.Services属性的配置不允许定义健康检查。我也没有看到在CloudMap中直接创建服务(ServiceDiscovery :: Service)的方法,这样我就可以启用健康检查,然后将其映射到ECS服务定义的Service Connect设置中。

那么,如何在ECS服务“服务连接”配置中启用CloudMap服务健康检查?还是有其他/更好的方法来强制不将流量路由到容器实例,直到它准备好,而不是立刻进行注册?

profile picture
专家
已提问 5 个月前18 查看次数
1 回答
0

【以下的回答经过翻译处理】 经过大量的研究和试错,我确定您不能将Cloud Map服务健康检查与ECS服务连接组合使用。通过使用Cloud Map服务的容器健康检查,在Cloud Map服务中的新容器实例在通过容器健康检查之前将不健康,并且因此在准备好之前无法接收流量。我已经证明了这一点,但您将失去ECS服务连接的可发现性/命名。

以下是我找到的一些参考文献:

问题具体在于DiscoveryName属性(AWS :: ECS :: Service ServiceConnectConfiguration.Services.DiscoveryName)。根据https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-service-serviceconnectservice.html,“discoveryName是Amazon ECS为此Amazon ECS服务创建的新AWS Cloud Map服务的名称”。这是关键,因为CloudFormation始终尝试创建服务,并在名称已存在时失败。要使此工作,CloudFormation(或API / SDK)构建/部署逻辑必须更改为仅在名称不存在时才创建服务名称 - 否则链接/引用现有的Cloud Map服务。另一种选择是允许在ServiceConnectConfiguration.Services对象中定义健康检查。

如果您可以链接到现有的Cloud Map服务,则下面的步骤将起作用(但目前不起作用):

*创建Cloud Map命名空间(AWS :: ServiceDiscovery :: HttpNamespace) *创建Cloud Map服务(AWS :: ServiceDiscovery :: Service) - >指定仅包含FailureThreshold的HealthCheckCustomConfig

*创建任务定义(AWS :: ECS :: TaskDefinition) -

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则