Servicesモジュールを使用してREST WebAPIを開発しました。正常に動作します。私は、Drupalインスタンスを水平方向にスケーリングする必要があると予測される使用法でそのAPIのクライアントを持っています。APIの性質上、大量のCPUおよびGPUリソースを必要とするため、クラウドサーバーを使用できないことに注意してください。また、私のAPIの性質上、DrupalインスタンスはWindows OSで実行する必要があります。(私のアプリケーションには、Win64でのみ利用可能なソフトウェアが必要です。)現在、同じ場所にかなり頑丈なサーバーがあり、この野心的なクライアントのために、次の方法でハードウェアを水平方向に拡張する予定です。
- フロントエンドロードバランサーとしてHaProxyを実行している1つのCentOSサーバー
- 最初に2つ、必要に応じてさらに追加して、DrupalをホストするWindows Server 2008 R2サーバー、
- 複数のDrupalインスタンスに単一のデータベースを提供する1つのCentOSデータベースサーバー
- DBサーバー1が停止した場合に備えて、レプリケーションモードで実行されている1つのCentOSデータベースサーバー。
私の質問は、HaProxyロードバランサーの動作に関係しています。Drupalインスタンスによって作成されたセッションIDは、互いに一意であると想定しています。ロードバランサーはsessionIdを確認し、すべての要求をそのsessionIdを生成した同じサーバーにルーティングしますか?負荷分散によって各API要求が別のサーバーに送信される場合、REST WebAPI通信はどのように機能しますか?同じリソースに対する複数のAPIリクエストが同じDrupalインスタンスにルーティングされることを保証できないため、WebAPIによって参照されるすべてのデータをデータベースに保存する必要がありますか?