gpt4 book ai didi

amazon-web-services - Elastic Beanstalk - 如何根据环境和 Sidekiq Worker 运行特定的 ebextensions

转载 作者:行者123 更新时间:2023-12-02 01:18:35 26 4
gpt4 key购买 nike

我将在 Elastic Beanstalk 上运行 Rails 应用程序,并且同时拥有 Web 和 Sidekiq Worker 环境。问题是,由于它们共享相同的代码,我需要在工作环境上运行一些特定的 ebextensions(以初始化工作进程和所有内容)以及 Web 上的一些特定脚本(以初始化应用程序服务器和所有内容)。

  1. 如何根据 EB 上的环境运行特定的 ebextension,或者分离两个脚本并告诉 Elastic Beanstalk 根据环境运行。

  2. sidekiq Worker 是否需要位于 Web 服务器的同一个 APP 中,但位于不同的 ENV 上?例如:我的应用程序环境暂存env_staging_worker环境产品env_prod_worker

  3. Sidekiq 工作线程应该部署为工作线程还是 webapp EB 环境? (AWS 默认情况下不支持 sidekiq 工作线程)。

  4. 如何将 Sidekiq Worker 连接到应用程序,例如将 env_staging 连接到 env_staging_worker,将 env_prod 连接到 env_prod_worker?

如果您能提供有关架构的详细信息或您可以提供的任何帮助,我将不胜感激。

最佳答案

如果您想坚持使用 Sidekiq 作为工作线程后端,则无需启动额外的 Elastic Beanstalk 工作线程环境。您可以在 Web 环境中启动 Sidekiq 进程。请看看这个question and answers from a similar situation .

关于 Elastic Beanstalk Web 和工作环境背后的实际想法和架构,我将尝试总结 Amazon 的 official documentation :

Web 环境托管 HTTP 服务器和响应用户 HTTP 请求的 Web 应用程序。

工作环境托管一个应用程序(可以与 Web 应用程序相同,但不是必须),该应用程序执行后台作业、长时间运行的任务等。

Web 和 Worker 环境应通过 Amazon SQS message queue 连接(额外的 AWS 功能/服务)。您的 Web 应用程序应将消息发送到此队列,并且工作环境将使用此队列中的消息。当您启动工作线程环境时,您可以选择它应连接到哪个 SQS 队列。 Elastic Beanstalk 将自动安装并启动一个守护程序,该守护程序使用此队列中的消息并将其转换为 HTTP POST 请求。这些请求将发送到本地主机和您也可以定义的路径。请求的正文将包含队列中消息的内容。您的应用程序应该解析内容并相应地触发后台作业。

你看,这实际上会使 Sidekiq 过时,因为 SQS 队列将处理排队逻辑。

如果您不限于使用 Sidekiq 并且您的应用程序是使用 Rails >= 4.2 编写的,那么您可以使用 Active Elastic Job gem 用于您的后台任务。它负责所有消息发送和解析,并允许您保持部署设置简单。无需编写和维护 ebextension 脚本。

关于amazon-web-services - Elastic Beanstalk - 如何根据环境和 Sidekiq Worker 运行特定的 ebextensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34615932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com