0

ポート 80 で実行されている node.js アプリケーション サーバーがあり、最近、ポート 9001 でPrimus Websockets トランスフォーマーを介してリアルタイム メッセージングを追加しました。

単一インスタンスでうまく機能します。次の構成でメッセージングを Beanstalk 環境にデプロイしました。

AWS Elastic Beanstalk
Platform version v2.0.0
Nodejs version v0.12.6
Primus version v4.0.5
  • スクリーンショットに示すように、ポート 9001 がインスタンスのセキュリティ グループに追加されます。 ここに画像の説明を入力
  • プロキシ サーバーは、構成オプションで「なし」に設定されています。 ここに画像の説明を入力
  • Elastic Load Balancer 構成に TCP リスナーが追加されます。 ここに画像の説明を入力
  • aws のドキュメントに記載されているように、Proxy-Protocol が有効になっています。 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力
  • primus サーバー設定に proxywrap を追加しました。

しかし、クライアントのリクエストはインスタンスに到達せず、接続がタイムアウトしました。AWS ELB の背後にある websocket で primus を使用した人はいますか? Elastic Beanstalk の背後で websocket 通信を可能にする設定を教えてください。

4

2 に答える 2

1

以下の構成で、ELB のポート 80 と 8080 の両方でwebsockets ( https://github.com/websockets/ws ) を動作させることができました。そして、それはプロキシプロトコルを有効にせずに.

セキュリティ グループ:

https://cloud.githubusercontent.com/assets/3421858/14969922/ff6659f4-10bc-11e6-903c-168a530efebd.png

ロード バランサ リスナー:

https://cloud.githubusercontent.com/assets/3421858/14969937/160c7544-10bd-11e6-8357-a11f5481d9fd.png

コンテナ オプション:

https://cloud.githubusercontent.com/assets/3421858/14969950/38776f1c-10bd-11e6-961b-aabbf0ab1d66.png

ロードバランサー:

https://cloud.githubusercontent.com/assets/3421858/14969983/6c4f47ce-10bd-11e6-8fa0-eb8180ffb281.png

于 2016-05-02T22:59:09.340 に答える
0

あなたは2つのことをする必要があります

ELB のアイドル タイムアウトを増やす

EC2 ダッシュボードで、ロード バランサーの設定にアクセスし、ロード バランサーの [説明] タブを開きます。「アイドルタイムアウト」の設定を探し、「600」のようなものを入力します (10 分間)

定期的に ping を実行する

5 分ごとに WS ping を実装します (またはそれ以外ですが、ELB のアイドル タイムアウトよりも低くする必要があります)。primus の API がサポートされていない場合は、ダミー メッセージをクライアントに送信するように実装します。

于 2016-05-12T18:40:55.183 に答える