使用Rails和Capistrano部署在EC2上进行自动缩放

Jer*_*lor 8 capistrano ruby-on-rails amazon-ec2 amazon-web-services

是否有一个通用的策略来设置自动扩展的脚本以更新capistrano部署层次结构中的代码,以便在自动调节事件上启动AMI时从存储库中提取,以确保在自动调节机器上运行的提交与非自动调节时的提交相匹配实例?

Fre*_*ung 12

我运行的设置有点像这样.我选择不设置实例在启动时与git交互,因为:

  • 我希望实例快速出现(部署+捆绑安装可能需要一段时间)
  • 我想扩展/替换一个实例,不依赖于GitHub,rubygems等
  • 我想扩展一个实例非常简单

我所做的是我部署的应用程序位于/ var/www/myapp.这实际上是一个单独的EBS卷,安装在该位置.文件系统是xfs,因为您可以使用xfs_freeze安全地获取已装入卷的ebs快照

部署完成后,在钩子后的capistrano中我快照/ var/www/myapp卷.然后,我将自动扩展启动配置的块设备映射更新为"当您启动实例时,从快照创建新卷并将其附加到/ dev/sdf.

启动时所有实例都要在/ var/www/myapp上安装该设备,方法是编辑/ etc/fstab或运行超级简单的启动时脚本.Bundler设置为将其宝石保存在/ var/www/myapp/shared中,因此宝石也会被处理掉