2016-02-13 78 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白皮書。

相關問題