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
EXPERTE
gefragt vor 5 Monaten23 Aufrufe
1 Antwort
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
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen