AWSは加重負荷分散をネイティブにサポートしていますか?
私が見たところ、ELBはラウンドロビン負荷分散のみをサポートしています(構成可能な重みはありません)。しかし、信頼できるドキュメントは見つかりませんでした。
私が考えることができる最も簡単なことは、Nginxのようなロードバランサーをその前に置くことです。たとえば、次のようになります。
upstream backend {
server backend1.example.com weight=1;
server backend2.example.com weight=2;
server backend3.example.com weight=4;
}
ここでは、7つのリクエストのうち、1つはバックエンド1に、2つはバックエンド2に、4つはバックエンド4に送信されます。
それは機能しますが、それはあなたがそのためだけにNginxでサーバーをセットアップしなければならないことも意味します。 AWSが加重負荷分散を直接サポートする場合、セットアップははるかに簡単になります。
Elastic Load Balancingの仕組み ドキュメントページには次のように記載されています。
Classic Load Balancerを使用すると、要求を受信するロードバランサーノードは、ラウンドロビンルーティングを使用して登録済みインスタンスを選択しますTCPリスナーおよびHTTPおよびHTTPSリスナーの最も未処理のリクエストルーティングアルゴリズムのアルゴリズム-)。
Application Load Balancerを使用すると、要求を受信するロードバランサーノードは、リスナールールを優先順に評価して、適用するルールを決定してから、 ラウンドロビンルーティングアルゴリズムを使用したルールアクションのターゲットグループからのターゲット。ターゲットが複数のターゲットグループに登録されている場合でも、ルーティングはターゲットグループごとに個別に実行されます。
Elastic Load Balancingサービスはnotサポートweightedラウンドロビン(ここで重みを指定します)。
加重ルーティングポリシーでAmazon Route53を使用できます。 ルーティングポリシーの選択 ドキュメントページから:
同じ機能を実行する複数のリソース(たとえば、同じWebサイトにサービスを提供するWebサーバー)があり、Amazon Routeが必要な場合は、加重ルーティングポリシーを使用します53指定した比率でトラフィックをこれらのリソースにルーティングします(たとえば、4分の1を1つのサーバーに、4分の3を他のサーバーに)。
Route53を使用できます weight サーバーまたは複数のELBに直接ルーティングします
AWS Route 53をDNSサービスとして使用している場合は、DNSレコードのウェイトエイジを設定できます。
Amazon Route53はWeightedRoundRobinをサポートしています。加重ラウンドロビンを使用すると、さまざまな応答が提供される頻度を指定するために、リソースレコードセットに加重を割り当てることができます。この機能を使用してA/Bテストを実行し、ソフトウェアを変更したサーバーにトラフィックのごく一部を送信することをお勧めします。たとえば、1つのDNS名に関連付けられた2つのレコードセットがあるとします。1つは重み3、もう1つは重み1です。この場合、Route 53は75%の確率で重み3のレコードセットを返し、25%の確率でレコードセットを返します。 Route 53は、重み1のレコードセットを返します。重みは、0〜255の任意の数値にすることができます。
AWSの新機能に基づく更新
元々、LoadBalancerで加重ルーティングを行うことはできませんでした。しかし、それは最近変わった
アプリケーションロードバランサーを使用している場合は、加重ポリシーを使用するListenerRuleを設定できます。
手順:
これを強調するAWSブログ投稿をここで見ることができます: https://aws.Amazon.com/blogs/aws/new-application-load-balancer-simplizes-deployment-with-weighted-target-groups/