Ruby On Rails アプリケーションを開発しており、本番環境にデプロイしたいと考えています。使用できる同じ構成の Ubuntu Web サーバーが複数ありますが、複数のホスト間で RoR アプリとデータベース データをスケーリングする方法がわかりません。
各ホストに Web サーバーと db サーバーの両方を配置したいと考えています。
Web サーバー/Ruby ミドルウェア側では、Web サーバー/Ruby ミドルウェア層で負荷分散を行うマスター Web サーバーによってセッションが制御されるようにしたいと考えています。解放されたホストに新しいセッションを渡す必要があります。
Web サーバー/Ruby ミドルウェア側で負荷分散を行う必要があります。Web/ミドルウェア セッションはアトミックである必要があります (複数のホスト間で複製することに興味はありません)。
DB に保存されていないトランザクション データを中間の再実行ログに記録し、障害回復の場合に再実行したいと考えています。
DB 層で:
1 つのホストの DB データを他の 2 つのホストに複製したいと考えています。(各 DB セットには 3 つの DB ホストがあります)
待ち時間が長すぎるため、DB データをすべてのホストにレプリケートしたくありません。
「作成」タイプのリクエストを適切な DB に送信するアルゴリズムを導入したいと考えています。負荷分散が思い浮かびます。
DB マスター コントローラーは、「更新/読み取り/削除」要求のためにどの 3-DB セットに移動するかを認識している必要があります。
私のテスト Web サーバーは webrick で、バックエンド DB は Postgresql です (ただし、これは RoR では問題になりません)。
各トランザクションに sessionId を関連付ける必要があり、失敗後にそのセッションを再ロードする必要がある場合に備えて、やり直しログも保持する必要があると思います。
他にどのような設計上の問題が発生する可能性がありますか? また、単調な作業を行うには、どの Web サーバーと DB サーバーを使用すればよいですか? マスター DB とマスター Web サーバーの適切な選択は何ですか?
これが複数の知識領域にまたがる複雑な問題であることは理解しています。私が求めていることが可能かどうか知りたいです。