使用 nginx 和 uwsgi 在 AWS ECS 上扩展烧瓶应用程序
scaling flask app on AWS ECS with nginx and uwsgi
我正在尝试扩展 AWS ECS 中的 Flask 微服务来处理生产工作负载。我的应用程序使用 flask-apscheduler 来处理长 运行 任务。我正在使用 uwsgi web 服务器在 ECS 中进行部署,因此我将应用程序与 uwsgi 服务器一起打包到容器中。 nginx容器在ECS集群上单独运行
我的 uwsgi 配置现在使用单进程、单线程。
我已成功将它部署在 AWS ECS 上,但想知道要扩展什么来处理生产工作负载。我在这些选项之间争论
1) 我可以启动多个容器,nginx 会循环到所有容器,通过 route 53 dns 服务平均分配请求
2) 我可以增加 uwsgi 配置中的进程数量,但这会扰乱我的 flask-apscheduler,因为我只需要它的一个实例 运行。我发现的解决方法不是那么简洁
如果有人能分享如何解决这个问题就太好了
docker 的心态更像 'one process per task'。任何时候你在一个容器上有多个任务 运行,你应该重新考虑。
我会建议第一种方法。创建一项服务以将您的任务包装在 ECS 中,只需改变该服务的 'Desired' 任务数即可根据需要扩展和缩减服务。
如果您只需要在其中一项任务上使用调度程序 运行,您应该使用相同的图像设置一个单独的服务,但使用一个环境变量来告诉您的容器启动调度程序。在调度程序 service/task 上设为真,在工作程序 service/task 上设为假。这些 ENV 变量可以在 ECS 任务定义中的容器定义中设置。
这将是 "docker way"。
我正在尝试扩展 AWS ECS 中的 Flask 微服务来处理生产工作负载。我的应用程序使用 flask-apscheduler 来处理长 运行 任务。我正在使用 uwsgi web 服务器在 ECS 中进行部署,因此我将应用程序与 uwsgi 服务器一起打包到容器中。 nginx容器在ECS集群上单独运行
我的 uwsgi 配置现在使用单进程、单线程。
我已成功将它部署在 AWS ECS 上,但想知道要扩展什么来处理生产工作负载。我在这些选项之间争论
1) 我可以启动多个容器,nginx 会循环到所有容器,通过 route 53 dns 服务平均分配请求
2) 我可以增加 uwsgi 配置中的进程数量,但这会扰乱我的 flask-apscheduler,因为我只需要它的一个实例 运行。我发现的解决方法不是那么简洁
如果有人能分享如何解决这个问题就太好了
docker 的心态更像 'one process per task'。任何时候你在一个容器上有多个任务 运行,你应该重新考虑。
我会建议第一种方法。创建一项服务以将您的任务包装在 ECS 中,只需改变该服务的 'Desired' 任务数即可根据需要扩展和缩减服务。
如果您只需要在其中一项任务上使用调度程序 运行,您应该使用相同的图像设置一个单独的服务,但使用一个环境变量来告诉您的容器启动调度程序。在调度程序 service/task 上设为真,在工作程序 service/task 上设为假。这些 ENV 变量可以在 ECS 任务定义中的容器定义中设置。
这将是 "docker way"。