WebSocket サーバー開発 : ASP.NET 4.5 編
http://blogs.msdn.com/b/tsmatsuz/archive/2012/04/25/websocket-server-asp-net-4-5-development.aspx
松崎さんのブログを見ながら、WebSocketを使った業務ロジックを設計・開発していたのだが、インフラ設計のことをふと下記のような書いてあることに気づく。
--------
Windows Azure への配置や ロード バランサー (Load Balance) 構成への対応
セッションでも説明しましたが、上記のコードのまま Windows Azure に配置した場合や、ロード バランサー構成に配置した場合、正しく動作しません。(Windows Azure では、既定でラウンド ロビンが使用されます。)
このため、実際の開発では、Windows Azure の Queue や Intenal Endpoint によるインスタンス間の通信や、専用のライブラリー (サード パーティー製の専用の仕組み、など) と連携するなど、負荷分散された状態で動作するよう細やかな設計・実装をおこなってください。(上記では、こうした処理を省略しています。)
なお、Windows Azure を使用した場合、もう一点注意すべき重要な点 (Keep Alive の問題) がありますが、ここでは説明を省略します。(セッションで説明した通りです。)
--------
うーん。Webリクエストであれば、WFF(Web Farm Framework)を使った負荷分散ができるけど、WebSocketはできないんだよなぁ。(調べてないけど。どっかの企業の製品でWebSocketの負荷分散を対応しているハードもあるみたいだけど。)
ということは、WebSocketのサーバが配置されているサーバを負荷分散のため、スケールアウトさせた場合は、ノード間で各サーバでもっている情報をやりとりしなければいけないのか....(Session Affinityみたいなことできないのかな。)
ちょっと再設計してみるか。