【发布时间】:2020-01-25 09:59:59
【问题描述】:
我们在 AWS 上托管应用程序并使用 EB (ElasticBeanstalk) 进行部署。应用程序是 Rails,我们将 Sidekiq 用于后台进程。我们已经解耦了 RDS 实例、ElasticCache(用于 Sidekiq 通信),一般来说,我们是无状态架构。
目前,我们的 Web 进程和 sidekiq 进程在相同的 EC2 实例上运行。这意味着我们需要使用更大的实例来支持这个过程。我们希望转向分离的 web 和 worker 架构。想法是在 EC2 小型实例上移动 Web 进程,并让一个 EC2 大型实例专用于 Sidekiq。造成这种情况的原因是我们遇到了 CPU 使用问题,其中较大的工作作业占用了所有资源并将实例关闭,这比新实例中的多米诺骨牌和一般不是我们资源的最佳使用。
这对我们来说似乎很容易,但我们很难找到已实现此功能的网络资源。此外,单独设置 Web EB 应用程序和 Worker EB 应用程序让我们感到困惑。部署将如何工作,我们会同时部署两个单独的 EB 应用程序吗?这似乎不安全。
我们正在寻找有关如何最好地实现上述目标的指导,您是否可以分享一些示例或设置,我们可以在其中看到这方面的真实示例?
还有更好的方法吗?
【问题讨论】:
标签: ruby-on-rails amazon-web-services amazon-ec2 sidekiq amazon-elastic-beanstalk