2016-02-13 41 views
0

我必须为在apache2,mysql,capistrano和一些后台服务上运行的中型rails应用程序设置ec2。我想知道每个开发人员通常设置他的Rails应用程序的最佳做法是什么。我想知道什么样的设置的,易于扩展和可mimimic至少Amazon ec2为使用mysql或postgres的Rails应用程序设置最佳实践

  • 自动部署
  • 安全
  • 定期数据备份和方便快捷的方法来恢复数据
  • 服务器恢复
  • 容错

我也有兴趣在如何监控是服务器状态和性能以及其他种类这种做法也是有帮助的。

ps:同时考虑到我的应用数据库会快速增长。

回答

3

我认为看看AWS文档,特别是architecture center将是最好的开始。但是,让我尽我所能解决您的许多问题。

数据库
获得AWS上的一个可扩展的,容错数据库的最简单方法是使用Relational Database Service。您应该阅读文档和最佳做法,以确保您充分利用它 - 即。多个AZ。

EC2服务器
最推荐的方法来组织你的服务器是将它们分离到的Web服务器(提供HTML用户)和应用服务器(应用程序逻辑,通常返回JSON或XML等)。请参阅this架构示例。
但是,关键是在Elastic Load Balancer后面使用AutoScaling组。

自动化
如果你想使用Capistrano的,只需将其安装到您的服务器。您可以创建一个预配置的AMI,并将其与其他任何您想要的一起安装。或者,您可以将其安装在部署脚本中。但是,这种方式最推荐的方法是使用云中厨师的AWS OpsWorks服务。

服务器恢复&容错
如果使用EC2自动缩放,如果一个服务器变得不可即。硬件发生故障或停止回复EC2健康检查,AutoScaling会自动终止并启动更换。
随着ELB和ELB运行状况检查的添加,ELB会停止响应Web请求的实例退出服务。

您需要阅读文档以获取更多信息。

备份和恢复
对于备份附加到EC2实例EBS卷数据,使用EBS Snapshots。但是,最佳类型的体系结构使EC2实例保持无状态 - 它们不会存储除应用程序代码之外的任何内容,如果它们死了就无关紧要。在这些情况下,所有数据(包括用户文件)都可以存储在S3上。在S3上,你有许多的备份选项,如Cross Region Replication和或数据归档到Glacier

监测
AWS提供CloudWatch它可以为您提供管理程序可见度量,例如在网络和缩小,CPU利用率和更多。如果你想获得更多的数据,你可以使用custom metrics,并推动像例如。内存使用情况。除了cloudwatch之外,您还可以使用服务器级监控工具。

部署
我建议AWS Code Deploy

安全
使用Security Groups只打开你希望用户能够连接的端口。此外,使用安全组将例如22的重要端口锁定到仅一组特定的IP。您也可以使用Network ACLS来阻止不受欢迎的流量。 AWS提供更多信息和建议here

我还建议您阅读this白皮书。

相关问题