我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CloudFormation有什么优缺点?
我感兴趣的是一个可以自动调整以处理任何大量同时Web请求的系统(从每分钟1000个请求到1000万个rpm),包括一个可以自动扩展的数据库层.
而不是每个应用程序都有一个单独的实例,理想情况下我想有效地共享一些硬件资源.在过去,我主要使用EC2实例+ RDS + Cloudfront + S3
堆栈系统将在我们从Heroku迁移的rails应用程序上托管一些高流量ruby,还有一些python/django应用程序和一些PHP应用程序.
提前致谢.
ruby-on-rails amazon-web-services aws-cloudformation aws-opsworks amazon-elastic-beanstalk
我使用目前使用Capistrano的乘客对nginx上的铁路应用程序的动态配置实例进行了相当复杂的部署.我试图通过创建堆栈,图层,实例和动态应用程序部署来自动化Opsworks上的整个过程.现有的Opsworks配方都没有接近我所需要的,所以我开始自己定制的烹饪书.我正在尝试使用测试厨房和流浪汉测试它们,但Opsworks烹饪书有太多的自定义依赖项在本地使用.因此,我似乎陷入困境,要么只使用我自己的配方来重新发明轮子,这些配方不依赖于Opsworks烹饪书,或者试图在AWS上测试我的烹饪书,这是缓慢而昂贵的.
是否有人在Opsworks上进行任何自定义菜谱开发,如果是这样,您如何测试它?您是否正在使用任何社区食谱,如果是这样,他们在Opsworks上工作有多痛苦?
我想从我们的Github帐户设置webhook,以便它自动在OpsWorks中启动部署任务.根据文档似乎是可能的- 但是找不到任何对于互联网来说不寻常的示例或智能库.;)
OpsWorks不会在部署时预编译资产.我在这个帖子中找到了这个食谱,但我认为它不完整,或者遗漏了一些东西,因为我收到了一个关于release_path找不到的错误.
precompile.rb:
Chef::Log.info("Running deploy/before_migrate.rb...")
Chef::Log.info("Symlinking #{release_path}/public/assets to #{new_resource.deploy_to}/shared/assets")
link "#{release_path}/public/assets" do
to "#{new_resource.deploy_to}/shared/assets"
end
rails_env = new_resource.environment["RAILS_ENV"]
Chef::Log.info("Precompiling assets for RAILS_ENV=#{rails_env}...")
execute "rake assets:precompile" do
cwd release_path
command "bundle exec rake assets:precompile"
environment "RAILS_ENV" => rails_env
end
Run Code Online (Sandbox Code Playgroud)
日志:
undefined local variable or method `release_path' for ....
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我根本不认识厨师,我想在飞行中弄清楚这一点.
我正在尝试在OpsWorks上部署应用程序,但是安装rmagick gem时存在问题.我有以下操作系统包:
libmagickwand-dev imagemagick libmagickcore-dev
以下是部署期间出错的日志文件:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/usr/local/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 0.0.0. Can't find Magick-config in /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib …Run Code Online (Sandbox Code Playgroud) 我正在尝试在AWS Opsworks上设置rails堆栈,我想使用mongodb作为数据库.
我认为你通过创建一个新的自定义图层并将你的厨师收据添加到相关的生命周期钩子来设置它,但我不确定要放在哪里的收据.
任何人都可以帮助如何通过厨师将mongodb添加到AWS Opsworks?
我已经看到有一个社区mongodb食谱,但从我可以看到它与Opsworks不兼容.
有没有人有任何设置的经验?
请任何人都可以帮忙.
非常感谢瑞克
ruby-on-rails mongodb amazon-web-services chef-infra aws-opsworks
我想知道如何防止这种类型的错误.到目前为止,我尝试通过AWS Opsworks上的数据库配置禁用预准备语句:
例如:
数据库配置
},
"deploy": {
"app_name": {
"database": {
"adapter": "postgresql",
"prepared_statements": false,
"username": "username",
"database": "db_name_production",
"host": "cool_host.com",
"password": "easy"
},
Run Code Online (Sandbox Code Playgroud)
错误日志
PG::DuplicatePstatement: ERROR: prepared statement "a6" already exists : INSERT INTO "polls" ("answer_type", "auto_enable", "can_have_correct_answer", "created_at", "de", "en", "es", "event_id", "game_card_length", "game_card_start", "id_language_code", "is_custom_question", "ja", "language_id", "points_award", "poll_upload_id", "pop_up_length", "pop_up_start", "pop_up_trigger_type", "pt", "question", "question_identifier", "question_tag", "question_translation", "question_type", "scorecard_presentation", "show_at_minute", "show_n_seconds", "template_type", "th", "trigger_restriction", "updated_at", "vi", "vizrt_show_name", "vizrt_template_name", "vote_options", "vote_options_translation") VALUES ($1, $2, $3, $4, $5, $6, …Run Code Online (Sandbox Code Playgroud) ruby postgresql ruby-on-rails amazon-web-services aws-opsworks
我正在尝试在AWS Opsworks中使用自定义图层来添加nginx网络服务器.
我已成功创建了图层,我通过GIT添加了我的应用程序(repo上没有密码),但是当我部署命令时"成功"但我在服务器上看不到任何代码.
在自定义层中,唯一的部署配方是"deploy :: default".
我是否需要自定义配方来处理部署?
另外,如何配置部署的"位置"?我更喜欢选择我的文档根目录,而不是使用Opsworks似乎总是部署到的位置.
感谢您对此的任何帮助.
Amazon Web Services根据您的需求提供许多持续部署和管理工具,如Elastic Beanstalk,OpsWorks,Cloud Formation和Code Deploy.基本思想是在零停机时间内促进代码部署和升级.它们还有助于使用AWS资源管理最佳架构实践.
为简单起见,我们假设一个基本的架构,你有一个2撕裂结构; 负载均衡器后面的应用程序服务器集合,然后是使用多区域RDS DB的持久层.
跨一组实例(app服务器)的实际代码升级很容易理解.对于非常简单的概述,AWS服务会依次关闭每个节点,从而关闭连接,以便不使用相关实例.
但是,我无法理解如何管理数据库升级.假设我们从应用程序的版本1.0.0到2.0.0,并且需要更改数据库结构.通常,您将使用像Flyway这样的脚本或库来执行升级.但是,如果有一组要升级的服务器,则需要不同数据库结构的机群中存在1.0.0和2.0.0应用程序.
我需要了解实际上如何实现(高级别)以了解执行数据库迁移的最佳方式/时间.我猜他们可以通过两种方式实现这一目标,但我很难看到他们如何做到这一点并允许1.0.0和2.0.0保持数据而不会丢失.
如果他们使用第一个应用程序节点升级迁移数据库结构,同时创建1.0.0的缓存版本.连接到1.0.0应用程序的用户使用缓存版本的数据库保持不变,连接到2.0.0应用程序的用户将持久保存到新迁移的数据库.迁移所有应用程序节点后,缓存的数据将合并到数据库中.
他们似乎不太可能这样做,因为合并会非常复杂,但我看不到另一种方式.任何指针/帮助将不胜感激.
amazon-web-services aws-cloudformation aws-opsworks amazon-elastic-beanstalk aws-code-deploy
我正在运行Ubuntu 14.04 LTS 64位Rails应用程序,我无法访问我的App环境变量.
在OpsWorks App面板中,我设置了我的环境变量,比如说:
MYKEY: 1234
Run Code Online (Sandbox Code Playgroud)
然后我再次保存并部署我的应用程序以使这些可见.
在我的Rails应用程序或rails控制台中,我得到零:
$ bundle exec rails c production
>ENV["MYKEY"]
=> nil
Run Code Online (Sandbox Code Playgroud)
我试过重启服务器.我不确定我缺少什么,我一直在其他服务中使用环境变量.
如何追踪这些应该设置的位置?
aws-opsworks ×10
chef-infra ×4
amazon ×1
github ×1
mongodb ×1
postgresql ×1
ruby ×1
ubuntu-14.04 ×1
webhooks ×1