【问题标题】:Production level setup for Resque on AWSAWS 上 Resque 的生产级别设置
【发布时间】:2022-01-25 23:33:59
【问题描述】:

我们有 dockerized Rails 应用程序,它部署在 AWS(使用 Fargate)上。

目前,我们在 AWS 上运行开发和暂存服务器。我们使用 Resque 进行调度和排队。部署完成后,我们确实使用工头来启动以下流程。

#Docker CMD bundle exec foreman start -f Procfile.dev-server

#Procfile.dev-server 网络:捆绑 exec rails s -p 3000 -b '0.0.0.0' 队列:bin/rake 环境 resque:work QUEUE=responsive_tasks 调度器:bin/rake 环境 resque:scheduler

此设置很好,并且在暂存环境之前工作正常。不建议将 Foreman 用于生产设置,并且在需要扩展时可能会出现问题,因为所有 3 个进程都在同一台机器上运行。

怀疑

在 AWS 上部署代码进行生产后,如何在没有 Foreman 的情况下运行所有​​ 3 个不同的进程(Web 服务器、队列和调度程序)?

我是否应该在具有相同 Rails 应用程序代码的单独实例上运行 Resque 服务器?

【问题讨论】:

    标签: ruby-on-rails amazon-web-services resque


    【解决方案1】:

    您可以为每个进程(即 Web 服务器、队列、调度程序)创建单独的 ECS 服务,并利用 ECS Service Discovery 功能进行服务间通信。通过这样做,您可以分别管理这些单独进程的生命周期,还可以分别对这些服务中的每一个执行应用程序自动缩放。

    注意:在 Docker ENTRYPOINT 中启动您的进程,以确保这些进程在容器创建期间启动。通过这样做,您将不再需要像 Foreman 这样的流程管理器守护程序来管理您的流程。流程的生命周期(与容器生命周期相关)将由 ECS 服务管理。

    如果您需要进一步说明上述方法,请添加评论。

    【讨论】:

      猜你喜欢
      • 2014-05-11
      • 2020-01-12
      • 2020-05-11
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多