我正在開發一個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服務器有什麼好的選擇?
我知道這是一個跨越多個知識領域的複雜問題。我想知道我所問的是否可能。
如果您發現它太多了,請輸入並使用Heroku。 – Skilldrick 2010-08-04 22:27:23
你目前的生產架構是什麼?這些都是非常複雜的要求 - 你確定它們是必要的嗎?你能用迭代的方法一段時間了嗎? – nfm 2010-08-04 23:20:33