1

TCPソケットを使用してEC2で実行されているカスタムサーバーに接続するクライアントアプリケーションがあります。クライアントとサーバー間の接続はしばらく続く可能性があります(数時間から1日)。

現在、AmazonのELB(Elastic Load Balancer)の評価を行っていますが、ELBのIPが動的に変化するため、IPが変化すると既存の接続が失われるのではないかと心配しています。これがどのように機能するかを誰かが確認できますか?変更されるのは、単にDNS名に関連付けられたIPですか?これは、既存のソケット接続のIPが変更されるのと同じことですか?そして最終的に、そのような変更の効果は、既存のTCPベースのソケット接続を切断することになるのでしょうか?

追加情報:

これは「標準」のhttpまたはブラウザベースのアプリではありません。クライアントアプリはモバイルデバイス上でリアルタイムで実行され、専用のTCPソケットを介してサーバーと通信します。サーバーは継続的なロジックを実行し、この単一のTCPソケット接続を介した接続の存続期間にわたってクライアントと通信します。ELBがIPを変更することを決定したときにクライアントがサーバーに再接続する(つまり、ソケット接続を破棄/再作成する)必要がないことを確認したい(wifi /セルラー範囲などを合法的に離れる場合は1つのことですが、 ELBの気まぐれだけで切断したくない)。

4

1 に答える 1

1

いいえ。ELB は新しい着信接続の負荷を分散しますが、既存の質問を破棄してリダイレクトすることはありません。

しかし、まさにこのため、そのようなシステムで ELB を使用する利点に疑問を投げかけます。ELB は、すべてのインスタンスで公平な負荷を保証することはできません。2 つのインスタンスがある次のシナリオを検討してください。

  1. ELB は最初の接続をインスタンス A に指示します。
  2. ELB は 2 番目の接続をインスタンス B に送信します。
  3. ELB は 3 番目の接続をインスタンス A に送信します。
  4. クライアントの処理が完了すると、インスタンス B の接続がダウンします。

これで、A に「重い」負荷がかかり、B にはまったく負荷がかかりません。この時点で、ELB は新しい接続を B に送信し、負荷を均等にします。そして、A 接続がダウンすると、逆の状況になります。つまり、B に「重い」負荷がかかり、A には負荷がかかりません。

短いリクエストを処理する複数のインスタンスがある場合、ELB は非常に便利です。長期的な接続では、静的 IP を使用し、それらのインスタンスを ELB の背後に隠しません。

実際には両方のアプローチを組み合わせて、ELB と静的 IP を指す 2 つの別個のドメイン名を使用して、同じインスタンスを ELB フロント リクエストと静的 IP リクエストの両方に応答させることが可能であることに注意してください。

于 2012-11-05T19:08:44.497 に答える