2013-09-05 79 views
11

我想在AWS Opsworks上設置Rails堆棧,我想將mongodb用作數據庫。通過AWS設置mongodb opsworks

我認爲你通過創建一個新的自定義層和增加你的廚師reciepts到相關的生命週期掛鉤設置它,但我不能確定什麼收據放在哪裏。

任何人都可以用如何通過一個廚師AWS Opsworks添加MongoDB的幫助?

我看到有一個社區MongoDB的食譜但是從我所看到的不兼容Opsworks。

有沒有人有任何設置這個經驗?

請任何人都可以幫忙。

非常感謝 裏克

+0

你最終爲此做了什麼? – gmaniac

回答

1

我只是測試在github這個回購,它適用於MongoDB的/ OpsWorks。轉到OpsWorks>圖層>在「自定義廚師食譜」部分中引用此github鏈接「https://github.com/Cyclic/cookbooks」,然後將「yum :: default」添加到安裝程序生命週期事件。然後在安裝程序生命週期事件中添加「mongodb :: 10gen_repo」「mongodb :: default」和「mongodb :: 10gen_remrepo」

5

我試着在幾個月前在OpsWorks中設置了一個MongoDB 3節點副本集。我會分享一些我的經驗:

1)如何安裝單一的MongoDB: 這是可能的和容易使用EDelight Chef MongoDB Cookbook安裝單個的mongodb。只需將其作爲子模塊添加到您的自定義opsworks廚師存儲庫中即可。

爲了得到它的工作創建一個自定義層,並調用它的MongoDB和excecute以下食譜

  • SETUP:MongoDB的:10gen_repo
  • CONFIGURE:MongoDB的:默認

這將安裝最新版本的MongoDB。

注意:我使用了Ubuntu實例。

2)MongoDB的最佳實踐 如果你跟MongoDB的工程師或客戶服務代表,他們都會告訴你,MongoDB的推薦的設置是一個3節點副本集。這意味着一個主副本和兩個只讀副本有望用於不同的可用區域。也是一個理想的設置將有很多的RAM,給你一個例子:通過MongoDB中提供的最小的情況下,你可以在AWS市場上找到的是一個標準的大:

MongoDB instance on AWS marketplace

你還必須考慮使用上RAID10 EBS,也許保留IOPS ...

請參閱白皮書MongoDB on AWS獲取更多信息。

3)安全考慮 理想情況下,您只希望應用程序實例訪問數據庫實例。在AWS中,您可以使用自定義規則創建一個安全組,並將EC2實例分配給您剛剛創建的組......對於OpsWorks來說,這不是這樣,因爲它會強制您使用具有非常寬鬆限制的默認安全組。 AWS將始終採用寬鬆的權限而不是嚴格的權限。

4)時間和金錢的考慮 如果推薦的設置是一個3節點複製使用大量實例設置你正在尋找至少$ 600(需求)爲DB,這不會增加預留IOPS,EBS , 等等。自動執行此設置可能並非易事。這將需要時間或專家在這個問題上讓你走。如果你有資源和人員來處理這個問題,那就去做吧。如果你是一個小型開發團隊的一部分,他們希望編寫更多的代碼並做更少的操作,請繼續閱讀。

5)找到一個可靠的託管解決方案 起初我不願意使用提供MongoDB作爲服務的第三方公司的想法。經過對不同選項(Managed,AWS Marketplace,OpsWorks,Direct EC2安裝)的大量評估後,我得出結論:對於我們的小團隊來說,最好的做法是使用MongoLab或MongoHQ。他們託管和管理各種規模和價格的MongoDB實例。他們甚至讓你選擇主機(AWS,Rackspace等),地區和AZ。如果單看硬件,明智的價格會更加昂貴,但正如我之前提到的,您不僅需要考慮價格,還需要考慮MongoDB需要的運行時間。

我一直在那裏,這樣做,並最終沒有使用OpsWorks來承載MongodDB。希望這會爲你節省一些時間和頭痛。