websocket + node.js + node-http-proxyで負荷分散
websocketでググルとsocket.ioばかりヒットするがブラウザの対応がまちまちなことによる一過性の技術だとおもうので使わない方針 WorlizeのwebsocketがActionScript3版のライブラリも用意しててブラウザ使わないならよさそう https://github.com/Worlize/WebSocket-Node あまりまとまった記事がなかったので書くがwebsocketはロードバランサと相性がわるい L4のロードバランサであるLVSを使うか(MYSQLにも対応できる、基本的になんにでも対応できる) node-http-proxyやnginxのwebsocket対応L7ロードバランサを使うしかない 単なるL7のプロキシやロードバランサではupgradeヘッダ削られるので大抵うごかない node-http-proxy使う場合アクセス元のリモートホストがプロキシの立ち上がるサーバーになるので X-Forwarded-ForをHTTPヘッダに追加してくれる websocket側でそれを使おうとおもったらhttpヘッダ使えるところはon('request')だけのようでしばらくなやんでたが ソースコードを眺めてたら内部でX-Forwarded-Forの値をremoteaddressに突っ込んでた↓ https://github.com/Worlize/WebSocket-Node/blob/master/lib/WebSocketRequest.js#L153 勝手にやっててくれたので悩み損であった websocketで負荷分散するならLVS or node-http-proxyをフロントに置きredisをバックエンドに置くのがしばらく鉄板なようだ redisはリアルタイム通信をpub/subでnode.js間のデータをやりとりし個別ユーザーの通信が切れたときに 別のサーバーにつなぎ変わったらredisをKVSとしてデータをロードする そのときはクッキーの値とか通常のWEBアプリと同様に処理すればよいと思う