Elastic Load Balancerは異なるサイズのインスタンスにトラフィックを正しく分散できますか


10

Elastic Load Balancerを調べているところです。私が理解しているように、彼らはラウンドロビンを行い、背後のサーバーへの接続を均等に分散しています。では、ELBの背後に異なるサイズのインスタンスがある場合はどうなりますか?より大きなインスタンスにさらに接続を送信しますか、それとも接続を均等に分散し続けますか?つまり、実際には異なるサイズのインスタンスを使用するべきではありません。

回答:


15

私が理解しているように、彼らはラウンドロビンを行い、背後のサーバーへの接続を均等に分散しています。

残念ながら、Amazon ELBルーティングのドキュメントは存在しないとは言えないので、結論を出すにはいくつかのピースを組み立てる必要があります。以下は、私が認識しているElastic Load Balancing開発者ガイドの唯一の抜粋です。「Elastic Load Balancingの概要」のセクション「スティッキーセッション」を参照してください。

デフォルトでは、ロードバランサは各リクエストを個別に最小の負荷のアプリケーションインスタンスにルーティングします。ただし、スティッキーセッション機能(セッションアフィニティとも呼ばれる)を使用して、ロードバランサーがユーザーのセッションを特定のアプリケーションインスタンスにバインドできるようにすることができます。これにより、セッション中にユーザーから送信されるすべてのリクエストが同じアプリケーションインスタンスに送信されます。【重点鉱山】

今、何がない最小の負荷が正確に意味ですか?繰り返しますが、私が知っている唯一の説明は、2009年からELB戦略へのやや漠然としたAWSチームの対応です。

ELBは、各インスタンスで未解決の要求(またはTCPの場合は接続)の数を大まかに追跡します。 各インスタンスでのリソースの使用状況(CPUやメモリなど)は監視しません。ELBは現在、未処理の要求が最も少ないと考えるインスタンス間でラウンドロビンします。【重点鉱山】

これは、システムアーキテクチャと対応するユースケースに関しては非常に理にかなっていますが、高度なHAシナリオに必要な、または必要となる可能性のあるルーティングの透明性や制御を明らかに提供していません。

解釈に応じて、これはElastic Load Balancingに対する最近のAWSチームの応答-負荷分散ポリシーと多少矛盾する場合があることに注意してください。

ラウンドロビンは機能しますが、クライアントセッションは常にTTLまたはDNSキャッシュを尊重するわけではないため、歪んだ結果と不均一なリクエストの分散を取得できます。ELBは、トラフィックルーティングの決定において、インスタンスがこれまでに受け取ったトラフィック/リクエストのインスタンスを有効にしません。 【重点鉱山】

健康診断

もちろん、上記は適切に文書化された透過的で制御可能なヘルスチェックで修正されます。これにより、前述のELBへのAWSチームの応答に要約されているように、インスタンスがルーティングに含まれないように(場合によっては一時的に)削除するためのレバレッジが得られます。戦略も:

ロードバランサーは、ロードバランサーに登録されているインスタンスの状態を監視します。ロードバランサーがインスタンスの問題を検出すると、インスタンスへのトラフィックの分散を停止します。インスタンスが再び正常になると、ロードバランサーはインスタンスへのトラフィックの分散を再開します。このプロセスにより、アプリケーションは、ヘルスチェックの構成以外に関与することなく、失敗したインスタンスに自動的に対応できます。

結論

ELBがさまざまなAmazon EC2インスタンスタイプのプールで動作しない理由もわかりませんが、自分で試したことがなく、CloudWatch使用したロードバランサーのモニタリングとモニタリングの両方をお勧めします個別のEC2インスタンスを作成し、結果を相互に関連付けて、最終的にそのようなセットアップに対するそれぞれの洞察と信頼を得ます。


1
そのような詳細な回答、まさに私が探していたが見つからなかったものに感謝します。
ショーンバニスター

1
経験から、ELBは複数のインスタンスタイプを含むプールでトラフィックを適切に分散しないと私は言います。
ubiquitousthey

AWS Application Load Balancer(ALB)とさまざまなインスタンスタイプに関する情報を持っている人はいますか?
SomethingOn

1

これまでの説明に基づくと、分散アルゴリズムは非常に単純です。

ELBのフロントエンドは通常、複数のELBインスタンスであり、ディストリビューションはラウンドロビンです。

バックエンド(あなたのインスタンス)アルゴは次のように主張しています:

ELBは、各インスタンスで未解決の要求(またはTCPの場合は接続)の数を大まかに追跡します。各インスタンスでのリソースの使用状況(CPUやメモリなど)は監視しません。ELBは現在、未処理の要求が最も少ないと考えるインスタンス間でラウンドロビンします。

これは、より大きなインスタンスに未処理の要求が少ない場合、より多くのトラフィックがそれらにルーティングされると推測します。これを保証する方法はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.