1

我正在開發一個Ruby On Rails應用程序,並且想要在生產環境中進行部署。我可以使用多個相同配置的Ubuntu Web服務器,但我不知道如何在多個主機上擴展RoR應用程序和數據庫數據。擴展Ruby on Rails站點

我想在每臺主機上放置一臺Web服務器和一臺數據庫服務器。

在Web服務器/ ruby​​中間件方面,我希望會話由Web服務器/ ruby​​中間件層負載均衡的主Web服務器控制。它應該將新會話交給免費主持人。

我需要在Web服務器/ ruby​​中間件一側進行負載平衡。 Web /中間件會話應該是原子性的(我不想將它們複製到多個主機上)

我想要將尚未保存到事務數據的數據庫記錄到中間重做日誌中 - 在故障恢復的情況下重新運行。

在DB層:

我想必須被複制到其他主機2任一項主機上的DB數據。 (每個數據庫集有3個數據庫主機)

我不希望跨所有主機複製數據庫數據,因爲它需要太長的延遲。

我想推出一個算法,將'創建'類型的請求引導到正確的數據庫。想到負載平衡。

數據庫主控制器應該知道爲更新/讀取/刪除請求設置哪個3-DB。

我的測試web服務器是webrick,後端數據庫是Postgresql(雖然這對於RoR來說確實無關緊要)。

我相信我需要爲每個事務綁定一個sessionId,並且還要保留一個重做日誌,以防在失敗後需要重新加載該會話。

我可能遇到什麼其他設計問題?另外,我應該使用什麼Web服務器和數據庫服務器來做煩瑣的工作?主DB和主Web服務器有什麼好的選擇?

我知道這是一個跨越多個知識領域的複雜問題。我想知道我所問的是否可能。

+0

如果您發現它太多了,請輸入並使用Heroku。 – Skilldrick 2010-08-04 22:27:23

+1

你目前的生產架構是什麼?這些都是非常複雜的要求 - 你確定它們是必要的嗎?你能用迭代的方法一段時間了嗎? – nfm 2010-08-04 23:20:33

回答

2

在我上一份工作,我們有不錯的運氣下列基礎設施:

1負載平衡器-nginx

3個應用服務器 - 變薄

2冗餘MySQL服務器寫入

2備份盒

目前我們有4個相當大的任務關鍵應用程序在該環境下運行。我們有兩臺應用服務器來照顧第五款應用。

如果您需要更多,那麼對於投資回報率而言,heroku可能會是更好的選擇。顯然,即使對於較小的縮放問題,heroku也是一個更好的選擇,在上面的計劃中,你在系統管理員中有一個噩夢。

+1

我很好奇你的數學,爲什麼heroku在ROI方面會更好。我覺得每次我需要一些簡單的heroku收費,例如我需要運行一個工作進程或搜索服務器... etc .. etc ...更多$$$ – 2012-02-02 09:42:00

+0

好吧,這可能不相關,因爲這是基於現在兩年前的其他選項和技術,但我認爲這個想法的要點是一樣的:比如讓全職員工管理基礎設施而不是爲你所需要的付出代價。現在有很多其他的選擇,儘管它們在heroku空間中競爭,並且對於特定的應用可能會更好。 – 2012-03-30 16:04:41