我可以使用 Elastic Beanstalk 部署工作线程吗?
Posted
技术标签:
【中文标题】我可以使用 Elastic Beanstalk 部署工作线程吗?【英文标题】:Can I use Elastic Beanstalk to deploy workers? 【发布时间】:2013-12-25 12:23:43 【问题描述】:我所说的工人是指一个在无限循环中运行某些任务的 python 脚本。此脚本应部署到单独的 EC2 实例并永久运行(可能使用主管)。
我已成功使用 Elastic Beanstalk 使用 git aws.push
部署 Web 应用程序,并且效果很好。但是,工人的设置需要有所不同,因为
工作人员不需要 Web 服务器或弹性 IP。它们也以不同的命令启动。
根据我的阅读,我认为我想要的与 Heroku 的 worker dynos 与 web dynos 非常相似,但我也没有使用 Heroku 的经验,所以我可能是错的。 那么 Elastic Beanstalk 可以做到吗?或者我应该使用完全不同的东西进行部署?
顺便说一句,我使用的是 linux 和 Elastic Beanstalk 的 CLI。
【问题讨论】:
【参考方案1】:我不认为 Elastic Beanstalk 与 Heroku 的工作人员 dynos 和 web dynos 具有相同的概念(尽管我认为这些与您尝试运行自定义工作进程的情况无关)
就目前而言,您可以在其他地方运行您的工人。 (EC2 实例、您自己的云服务器、一些非常定制的 SAS 等)
Sidekiq/rescue(在 ruby 世界中)相当于独立运行工人。您可以尝试blog 中描述的这种方法并应用于您的特定工作人员。
【讨论】:
感谢您的回答。为什么你认为 Heroku 的工人测功机与我想要的不同?据我了解,它们就像一个运行一些自定义命令的 ec2 实例。 我不太喜欢博文中的方法,因为我宁愿能够独立添加工作程序/Web 实例。但无论如何,如果弹性豆茎不支持这一点,我将使用其他东西部署工作人员。 我相信添加更多的测功机意味着只是为您的应用程序增加更多的处理能力,但它并不能提供对应用程序内运行的工作人员数量的精细控制。它更像是高水平的处理能力。但我明白你在说什么,在你的情况下,我想你可以部署第二个代表你的工作人员的 heroku 应用程序(主要应用程序是你使用工作人员的网络服务)。这样,如果您需要更多的工人“权力”,您可以增加测功机。 我认为这已经改变了。请参阅工作环境docs.aws.amazon.com/elasticbeanstalk/latest/dg/…【参考方案2】:在 ElasticBeanstalk 上部署后台进程(工作程序)的功能实际上是在 12 月 11 日才引入的。
看一下公告: http://aws.typepad.com/aws/2013/12/background-task-handling-for-aws-elastic-beanstalk.html
和文档: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
【讨论】:
在 Heroku 中创建一个 worker 作业与在 Beanstalk 中创建一个 Worker 环境有何不同?以上是关于我可以使用 Elastic Beanstalk 部署工作线程吗?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk:将容器日志流式传输到 CloudWatch 问题
超时后无法部署到 AWS Elastic Beanstalk
没有可用的包 nodejs。错误:无事可做。 Elastic Beanstalk 上的 Rails 应用程序
Elastic Beanstalk / ELB 增加了超过 60 毫秒的延迟