これは現在機能していないようです。Amazon ELB の背後にある NodeJS で Faye を使用しています。HTTPS をオンにすると、接続を仲介できなくなります。ここで未回答の質問を見つけました: https://forums.aws.amazon.com/message.jspa?messageID=283293。誰でもこれを機能させることができますか?HAProxy の独自のインスタンスを実行する以外に回避策はありますか?
4 に答える
私たち自身のテストに基づいて、HTTP/HTTPSではなくTCP/SSLでELBを構成すると、WebSocketでうまくいくことを確認します。欠点は2つあります。
1)すでにarturntが指摘しているように、べたつきはありません。
2)クライアントのIDを取得する機能が失われます。WebSocketサーバーから見た元のIPは常にELBであり、HTTP / HTTPS構成とは異なり、X-Forwarded-Forヘッダーはリクエストに追加されません。
2013年7月の更新:Amazonは、上記の欠点2を解決するプロキシプロトコルのサポートを追加しました。プロキシプロトコルを使用すると、ELBがHTTPではなくTCPレベルで動作する場合でも、クライアントの発信元IPを含むヘッダーが追加されます。詳細: http ://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html
2016年8月の更新:Amazonは、レイヤー7でWebSocket(およびHTTP / 2.0とコンテンツベースのルーティング)をサポートする新しいAWS ApplicationLoadBalancerを発表しました。https://aws.amazon.com/it/blogs/aws/new-aws-application-load-balancer/を参照して
ジェームズの答えの後、もう少し調査を行い、最終的にTCPルートに行きましたが、ELBのHTTPトンネリングを使用することに不利な点があるかどうかはわかりません(スティッキーは必要ないことを考慮して)。良い点は、スタッド/スタンネルを実行する必要がないことです。ELB がそれを提供してくれるからです。したがって、NodeJS/Faye がポート 8000 でリッスンする最終的な ELB セットアップ:
Secure TCP Forward (443) -> Local (8000)
TCP Forward 80 -> Local(8000)