Barracuda Load Balancer (3 台のサーバーが実行中) を使用した Web アプリケーションのセットアップがあります。websocket (socket.io) を使用してノード js を実装したいのですが、リクエストがロード バランサーを経由する場合、常に xhr ポーリングに陥ります (これは遅すぎます)。
これを修正しようとしたのは次のとおりです。
- バラクーダ ロード バランサーのサービス プロバイダーに対してポート 3000 を既に開いています。
- 他のstackoverflowの質問で説明されているように、nginx構成でプロキシを使用しました。
- nginx のバージョンを 1.2.7 から 1.4.1 にアップグレードしました
私たちを困惑させているのは、1 つのサーバーのみを使用し、ロード バランサーに移動しない場合は問題ありませんが、ロード バランサーを使用する場合、Websocket 経由で接続できず、常に xhr ポーリングにフォールバックすることです。
これはnginxエラーログが取得しているものです:
*14369 connect() がアップストリームに接続中に失敗しました (111: 接続が拒否されました), クライアント: 121.96.XX.XXX, サーバー: www.example.co.uk, リクエスト: "GET /socket.io/ HTTP/1.1", アップストリーム: " http://192.168.XX.XXX:3000/socket.io/ "、ホスト: "www.example.co.uk"