ALB/Node.js/socket.ioソリューションが最も簡単な形式で動作しようとしていますが、ハンドシェイクが切断される問題が発生しています。現時点では、私は意図的にTargetGroupのノードを1つだけ使用して、ノード切り替えやセッションスティッキースに関連する変数を削除しています。Socket.ioを使用しているときにAWS ALBが切断される理由
NATインスタンス経由でノードに直接接続すると正常に動作します。切断は、ALBを通過するときにのみ発生します。 - > 8081(SSLなし)
- ALBを:ここで
は、私が設定したものです
- デフォルトのパターン(その中に私の一つのノードを持つ)socket.ioターゲットグループに/socket.io/*ためAZS
- パスパターンの一つで一つsocket.io EC2のノードは、socket.ioターゲットグループ です 有効
- スティッキ(1つのノードに対して必要がありますが、とにかくそれをやってはいけません)
ここでは、私はsocket.ioノードクライアントで見たものである。
Thu, 22 Dec 2016 20:59:26 GMT socket.io-client:manager opening ws://52.72.198.58
Thu, 22 Dec 2016 20:59:26 GMT engine.io-client:socket creating transport "websocket"
Thu, 22 Dec 2016 20:59:26 GMT engine.io-client:socket setting transport websocket
Thu, 22 Dec 2016 20:59:26 GMT socket.io-client:manager connect attempt will timeout after 20000
Thu, 22 Dec 2016 20:59:26 GMT engine.io-client:socket socket close with reason: "transport close"
そして、ここでは、私が上で見たものですsocket.ioノードサーバー:なしトランスポートが閉じ持つ
Thu, 22 Dec 2016 20:59:26 GMT socket.io:socket joined room U_qmSv_7gvP_JOFsAAAL
Thu, 22 Dec 2016 20:59:26 GMT socket.io:client client close with reason transport close
Thu, 22 Dec 2016 20:59:26 GMT socket.io:socket closing socket - reason transport close
私は同じsocket.io EC2のノードに私のNATを通して行く、それはすべての作品。
何とかALBは、成功したハンドシェイク中にすぐに接続を閉じています。
NAT経由で動作するので、socket.ioノードとクライアントは問題ありません。そして、ノードのDEBUGエントリが表示されているので、ALBがsocket.ioノードに到達できることがわかります。私は1つのsocket.ioノードしか持っていないので、セッションや粘着性に問題はありません。
ALBを使用するとすぐに切断される原因は何ですか?
EDIT:ELBへのリクエストをしているsocket.ioクライアントがEC2ノード上にある場合は、動作することもわかりました。これは、クライアントとELBの間のネットワークパスに何かを含意します。私はまだ、クライアントがEC2上にいるとき以外はこれが動作するケースを見つけていません。これはELB経由ではなく、NATを介してどこでも動作します。
node.jsの前にもう1つリバースプロキシがありますか? nginxのような?私はこの問題をEBを使用していましたが、socket.ioの接続はnginxのためにタイムアウトしました... – mkhanoyan
パスに他のコンポーネントがありません。 ec2にalbするだけのノードクライアント。そしてすぐに切断されます...タイムアウトではありません。 –
HTTPの代わりに80でTCP接続をリッスンしようとしましたか? – mkhanoyan