更新ECS服务时AWS ECS Websocket连接耗尽

时间:2018-07-23 12:51:55

标签: amazon-web-services docker websocket aws-ecs

我正在使用AWS ECS在socket.io的帮助下运行用nodejs编写的聊天应用程序。

我使用AWS Application Load Balancer作为前端,并创建了一个目标组,该目标组包含AWS ECS服务。

现在,假设我用容器(使用任务定义)创建了1个服务,并将其添加到目标组中,并且用户开始使用websocket连接到我的AWS ECS服务。

我的问题是,如果我使用新的任务定义更新服务,AWS ECS会等待旧的websocket连接正常断开连接还是会强制断开旧的websocket连接与旧服务的连接?

1 个答案:

答案 0 :(得分:1)

您的Websocket连接对于ECS来说是超出范围的活动-它对此没有可见性。因此ECS不会在这里为您提供帮助,但是...

更新服务时,它等同于发送(you query) t1 having 30 = (select count(*) from GUEST where idlocation=t1.idlocation and year=t1.year, week_number=t1.week_number) 命令。这意味着发送了stop signal

According to the ECS docs

  

在任务上调用StopTask时,相当于docker stop是   发出给在任务中运行的容器。这导致   SIGTERM和默认的30秒超时,然后发送SIGKILL   并且容器被强制停止。如果容器处理   SIGTERM正常运行,并在收到信号后30秒内退出,否   SIGKILL已发送。

您应该能够在to set a trap中使用entrypoint script来执行某种优雅的切换过程。

所以类似:

docker stop

有关容器化#!/bin/bash ... other code... function handleShutdownFoo { # do something... } trap handleShutdownFoo SIGTERM ... more code ... 应用review this guide from the Node team的更多信息。

相关问题