Azure portal を使用した Azure ロード バランサーの設計と実装

完了

Azure Load Balancer は、開放型システム間相互接続 (OSI) モデルのレイヤー 4 で動作します。 クライアントにとっての単一接続点となります。 Azure Load Balancer によって、ロード バランサーのフロント エンドに到着したインバウンド フローが、バックエンド プールのインスタンスに分散されます。 これらのフローは、構成された負荷分散規則と正常性プローブに従っています。 バックエンド プール インスタンスには、Azure Virtual Machines か、仮想マシン スケール セット内のインスタンスを使用できます。

ロード バランサーの種類の選択

ロード バランサーは、パブリック (外部) にすることも、内部 (プライベート) にすることもできます。

パブリック ロード バランサー は、仮想ネットワーク内の仮想マシン (VM) にアウトバウンド接続を提供できます。 これらの接続は、プライベート IP アドレスをパブリック IP アドレスに変換することで実現されます。 外部ロード バランサーは、インターネットからのクライアント トラフィックを、複数の VM にわたって分散するのに使用されます。 そのインターネット トラフィックは、Web ブラウザー、モジュール アプリ、その他のソースからのものであってもかまいません。

内部ロード バランサーは、フロントエンドのみでプライベート IP が必要な場合に使用されます。 内部ロード バランサーは、ある仮想ネットワーク内で、内部の Azure リソースから、他の Azure リソースへのトラフィックを負荷分散するために使用されます。 ハイブリッド シナリオでは、オンプレミスのネットワークからもロード バランサーのフロントエンドにアクセスできます。

Diagram illustrating Internal and Public load balancers in Azure

Azure ロード バランサーと可用性ゾーン

可用性ゾーンに対応している Azure サービスは、次の 3 つのカテゴリに分類されます。

  • ゾーン サービス: リソースを特定のゾーンにピン留めできます。 たとえば、仮想マシン、マネージド ディスク、標準 IP アドレスなどを特定のゾーンに固定し、リソースの 1 つ以上のインスタンスを複数のゾーンに分散させることで回復性を高めることができます。
  • ゾーン冗長サービス: リソースはゾーン間で自動的にレプリケートまたは分散されます。 Azure によってデータが 3 つのゾーンにレプリケートされるので、あるゾーンで障害が発生しても、その可用性に影響を及ぼすことはありません。
  • 非リージョン サービス: サービスは常に Azure の地域から利用可能で、ゾーン全体の停止に対しても、リージョン全体の停止に対しても、回復性があります。

Azure Load Balancer は、可用性ゾーンのシナリオをサポートしています。 Standard Load Balancer を使用することで、リソースをゾーンに一致させて、複数のゾーンに分散させることにより、シナリオ全体の可用性を向上させることができます。 このドキュメントを読んで、これらの概念と基本的なシナリオの設計ガイダンスを理解してください

ロード バランサーには、ゾーン冗長、ゾーン、 または非ゾーンを指定できます。 ロード バランサーのゾーン関連プロパティ (前述) を構成するには、必要なフロントエンドの適切な種類を選択します。

ゾーン冗長

Diagram illustrating Zone redundant load balancers in Azure.

可用性ゾーンのあるリージョンでは、Standard Load Balancer をゾーン冗長にすることができます。 このトラフィックは、1 つの IP アドレスによって行われます。

単一のフロントエンド IP アドレスは、ゾーンの障害が発生した後も存続します。 フロントエンド IP は、ゾーンに関係なく、すべての (影響を受けない) バックエンド プール メンバーに到達するために使用できます。 1 つまたは複数の可用性ゾーンで障害が発生しても対応可能であり、リージョン内に正常なゾーンが 1 つでも残っていれば、データ パスは存続します。

フロントエンドの IP アドレスは、複数の可用性ゾーンで複数の独立したインフラストラクチャ展開によって同時に処理されます。 再試行または再確立は、ゾーンの障害による影響を受けない他のゾーンで成功します。

ゾーン ベース

単一ゾーンを保証されたフロントエンドにすることができます。これは、"ゾーン ベース" と呼ばれます。 このシナリオは、すべての受信または送信フローが、リージョン内の 1 つのゾーンによって処理されることを意味します。 フロントエンドは、ゾーンの正常性に左右されます。 データ パスは、それが保証されたゾーン以外のゾーンのエラーによっては影響を受けません。 ゾーン ベースのフロントエンドを使って、可用性ゾーンごとに IP アドレスを公開することができます。

さらに、各ゾーン内の負荷分散されたエンドポイントに対して、ゾーン フロントエンドを直接使用することもできます。 この構成を使ってゾーンごとに負荷分散されたエンドポイントを公開し、各ゾーンを個別に監視することができます。 パブリック エンドポイントの場合は、これらを Traffic Manager などの DNS 負荷分散製品と統合して、1 つの DNS 名を使用できます。

Diagram illustrating Zonal load balancers in Azure.

パブリック ロード バランサー フロントエンドの場合は、パブリック IP に zones パラメーターを追加します。 このパブリック IP は、それぞれの規則で使用されるフロントエンド IP 構成によって参照されます。

内部ロード バランサー フロントエンドの場合は、内部ロード バランサーのフロントエンド IP 構成に zones パラメーターを追加します。 ゾーン フロントエンドは、サブネット内の IP アドレスを特定のゾーンに対して保証します。

Azure ロード バランサーの SKU の選択

Azure でロード バランサーを作成する際には、Basic Load Balancer と Standard Load Balancer の 2 つの SKU から選択できます。 これらの SKU は、シナリオの範囲やスケール、機能、コストの面で異なります。 Basic Load Balancer で作成可能なシナリオはすべて、Standard Load Balancer でも作成できます。

その相違点を比較して理解するには、以下の表を確認してください。

機能

Standard Load Balancer

Basic Load Balancer

バックエンド プールのサイズ

最大 1,000 インスタンスをサポート。

最大 300 インスタンスをサポート。

バックエンド プール エンドポイント

単一の仮想ネットワーク内の任意の仮想マシンまたは仮想マシン スケール セット。

単一の可用性セットまたは仮想マシン スケール セット内の仮想マシン。

正常性プローブ

TCP、HTTP、HTTPS

TCP、HTTP

正常性プローブ ダウン動作

インスタンス プローブがダウンし、かつ すべてのプローブがダウンしても TCP 接続は存続。

インスタンス プローブがダウンしても TCP 接続は存続。 すべてのプローブがダウンすると、すべての TCP 接続が終了。

可用性ゾーン

受信トラフィックと送信トラフィック用のゾーン冗長およびゾーン フロントエンド。

使用不可

診断

Azure Monitor 多次元メトリック

HA ポート

内部ロード バランサーで使用可能

使用不可

既定でのセキュリティ保護

ネットワーク セキュリティ グループで許可されている場合を除き、受信フローは禁止されます。 仮想ネットワークから内部ロードバランサーへの内部トラフィックは許可されています。

既定で開いています。 ネットワーク セキュリティ グループはオプションです。

送信の規則

宣言型の送信 NAT 構成

使用不可

アイドル時の TCP リセット

任意のルールで利用可能

使用不可

複数のフロントエンド

受信および送信

受信のみ

管理操作

ほとんどの操作は < 30 秒

一般に 60 ~ 90 秒以上

SLA

使用不可

Microsoft では、Standard Load Balancer を推奨しています。 スタンドアロン VM、可用性セット、および仮想マシン スケール セットは、どちらか一方の SKU にのみ接続でき、両方には接続できません。 パブリック IP アドレスで使うときは、ロード バランサーとパブリック IP アドレスの SKU が一致していなければなりません。

SKU は変更できません。そのため、既存のリソースの SKU を変更することはできません。

Azure ロード バランサーの作成と構成

Azure ロード バランサーを正常に作成して構成するには、いくつかのタスクを実行する必要があります。

ロード バランサーを作成する

この例では、Standard SKUパブリック (外部) ロード バランサーを作成して構成するために必要なタスクについて説明します。 最初のタスクは、ロード バランサー自体を作成することです。 作成プロセス中に、フロントエンド IP 構成が作成され、パブリック IP アドレスが割り当てられます。 また、作成プロセス中にバックエンド プールを追加し、正常性プローブを作成し、負荷分散規則を追加することもできますが、これらのコンポーネントはプロセスの後半で追加します。

Azure portal のホーム ページからグローバル検索バーに移動し、「Load Balancer」を検索してから Load Balancer を選択してください。

[作成] または [ロード バランサーの作成] を選択してプロセスを開始してください。

[ロード バランサーの作成] ページの [Basic] タブで、次の必要な情報を指定する必要があります。

設定
サブスクリプション 新しいロード バランサーのリソースを作成する Azure サブスクリプションを選択します。
リソース グループ ここれ、既存のリソース グループを選択するか、新しいリソース グループを作成できます。
名前 インスタンスの一意の名前を指定します。
リージョン 仮想マシンが作成されたリージョンを選択します。
Type ここでロード バランサーを [内部] (プライベート) にするか、[パブリック] (外部) にするかを選択します。 [内部] を選択した場合は、仮想ネットワークと IP アドレスの割り当てを指定する必要がありますが、[パブリック] を選択した場合は、複数のパブリック IP アドレスの詳細を指定する必要があります。
SKU ここでは [Standard] SKU または [Basic] SKU のいずれかを選択します (運用ワークロードには [Standard] を選択する必要があります。テストや評価、トレーニングを目的とする場合は [Basic] でもかまいませんが、ロード バランサーのすべての機能は利用できません)。 ここで選択する SKU によって、残りの構成オプションが若干異なります。
レベル ここでは、そのロード バランサーによってリージョン内で分散が行われるか ([リージョン])、複数のリージョンにわたって行われるか ([グローバル]) を選択します。上で [Basic] SKU を選択した場合、この設定はグレー アウトされます。

Screenshot of Create load balancer page on Basics tab.

[次へ:フロントエンド IP 構成] を選択してから、[フロントエンド IP アドレスの追加] を選択して、公開されているフロントエンドのパブリック IP アドレスを追加します。 フロントエンド IP 構成の名前を追加し、IP バージョンと IP の種類を選択してから、パブリック IP アドレスを追加してください。 公開されているフロントエンド用に新しいパブリック IP アドレスを作成することも、既存のものを使用することもできます。 新しいパブリック IP アドレスを作成するときに、パブリック IP アドレスの名前と、動的または静的割り当て IP アドレスのどちらを使用するかを指定します。 また、オプションで既定の IPv4 に加えて、IPv6 アドレスもロード バランサーに割り当てることができます。

Screenshot of Frontend IP configuration tab and Add frontend IP configuration options.

フロントエンド IP の構成が完了したら、新しいロード バランサー リソースの構成設定が検証される [確認と作成] を選択してから、[作成] を選択してリソースをデプロイできます。

Screenshot of the configuration settings for the new load balancer after validation.

リソースのデプロイが開始されます。

Screenshot of Create load balancer - deployment complete.

完了したら、[リソースに移動] を選択して、ポータルで新しいロード バランサーのリソースを表示できます。

Screenshot of View load balancer resource Overview page in Azure portal.

バックエンド プールを追加する

次のタスクでは、ロード バランサーにバックエンド プールを作成し、そこに仮想マシンを追加します。

ロード バランサーの [ロード バランサーの概要] ページで、[設定] の [バックエンド プール] を選択し、[追加] を選択してください。

Screenshot of Load Balancer page and Backend pools window.

[バックエンド プールの追加] ページで、次の情報を入力する必要があります。

設定
名前 バックエンド プールの一意の名前を入力します。
仮想ネットワーク バックエンド プールに追加するリソースが配置されている仮想ネットワークの名前を選択します。
バックエンド プールの構成 リソースの NIC または IP アドレスを使用してバックエンド プールを関連付けるかどうかを選択してください。

この時点で既存の仮想マシンをバックエンド プールに追加することも、後で作成して追加することもできます。 次に、[保存] を選択してバックエンド プールを追加してください。

Screenshot of Add backend pool - Add.

仮想マシンをバックエンド プールに追加する

次のタスクでは、既存のバックエンド プールに仮想マシンを追加します。

[バックエンド プール] ページで、一覧から対象のバックエンド プールを選択します。

Screenshot of View backend pool in the load balancer.

仮想マシンをバックエンド プールに追加するには、次の情報を入力する必要があります。

設定
仮想ネットワーク バックエンド プールに追加するリソースが配置されている仮想ネットワークの名前を指定します。
バックエンド プールの構成 リソースの NIC または IP アドレスを使用してバックエンド プールを関連付けるかどうかを選択してください。

次に、[IP 構成] セクションで、[追加] を選択してください。

Add VM to backend pool.

バックエンド プールに追加する仮想マシンを選択し、[追加] をクリックしてください。

View list of VMs added to backend pool.

次に、[保存] をクリックしてそれらをバックエンド プールに追加してください。

Save backend pool with VMs added.

View list of backend pools running in load balancer.

正常性プローブを追加する

次のタスクでは、バックエンド プール内の仮想マシンを監視する正常性プローブを作成します。

ロード バランサーの [バックエンド プール] ページの、[設定][正常性プローブ] を選択し、[追加] を選択します。 Add health probes.

[正常性プローブの追加] ページで、次の情報を入力する必要があります。

設定
名前 正常性プローブの一意の名前を入力します。
プロトコル TCPHTTP、または HTTPS のいずれかを選択します。
ポート 正常性シグナルの宛先ポート番号を指定します。 既定値はポート 80 です。
間隔 (秒) プローブ試行の間隔を秒単位で指定します。 既定値は 5 秒です。

次に、[保存] を選択して正常性プローブを追加します。

configure health probe settings.

View list of added health probes in load balancer.

ロード バランサー規則の追加

最後のタスクでは、ロード バランサーの負荷分散規則を作成します。 負荷分散規則によって、選択した IP アドレスとポートの組み合わせに送信される受信トラフィックが、バックエンド プール インスタンスのグループ全体に分散されます。 正常性プローブで正常と見なされるバックエンド インスタンスでのみ、新しいトラフィックを受け取ります。

そのロード バランサーの [正常性プローブ] ページの [設定] で、[負荷分散規則] を選択し、[追加] を選択してください。

Add load balancing rule.

[負荷分散規則の追加] ページで、次の情報を入力する必要があります。

設定
名前 負荷分散規則の一意の名前を入力します。
IP バージョン IPv4 または IPv6 のいずれかを選択します。
フロントエンド IP アドレス ロード バランサーの既存の公開されている IP アドレスを選択します。
バックエンド プール 既存のバックエンド プールを選択してください。 このバックエンド プール内の仮想マシンが、この規則の負荷分散されたトラフィックのターゲットです。
プロトコル [TCP] または [UDP] プロトコルのいずれかを選択します。
ポート 負荷分散規則のポート番号を指定します。 既定値はポート 80 です。
バックエンド ポート クライアントによってそのロード バランサーと通信するために既定で使用されるものとは異なるポート (ポート 80) を使用して、バックエンド プール内の仮想マシンにトラフィックをルートすることを選択できます。
正常性プローブ 既存の正常性プローブを選択するか、新しいものを作成します。 負荷分散規則では、バックエンド プール内のどの仮想マシンが正常であり、そのため負荷分散されたトラフィックを受信可能であるかを判定するのに、正常性プローブを使用します。
セッション永続化 [なし][クライアント IP]、または [クライアント IP とプロトコル] を選択できます。 [セッション永続化] では、あるセッションの間、あるクライアントからのトラフィックが、そのバックエンド プール内の同じ仮想マシンによって処理される必要があることを指定します。 [なし] : 同じクライアントからの連続した要求が、任意の仮想マシンによって処理できることを指定します。 [クライアント IP] : 同じクライアント IP アドレスからの連続する要求が、同じ仮想マシンによって処理されることを指定します。 [クライアント IP とプロトコル] は、同じクライアント IP アドレスとプロトコルの組み合わせによる連続した要求が、同じ仮想マシンによって処理されることを指定します。
アイドル タイムアウト (分) クライアントから "キープアライブ" メッセージを送信しなくても TCP または HTTP 接続が開いたまま維持される時間を指定してください。 既定のアイドル タイムアウトは 4 分です。これは、最小設定でもあります。 最大設定は 30 分です。
TCP リセットを有効にする [無効] または [有効] のいずれかを選択します。 アイドル時の TCP リセットが [無効] に設定されている場合、アイドル タイムアウト期間に達しても、Azure により TCP リセット パケットは送信されません。 アイドル時の TCP リセットが [有効] に設定されている場合、アイドル タイムアウト期間に達すると Azure により TCP リセット パケットが送信されます。
フローティング IP を有効にする [無効] または [有効] のいずれかを選択します。 [Floating IP] を [無効] に設定すると、使いやすさのために、従来の負荷分散 IP アドレス マッピング スキーム (VM インスタンスの IP) が、Azure によって公開されます。 [フローティング IP] を [有効] に設定すると、その IP アドレス マッピングがロード バランサーのフロントエンド IP に変更され、柔軟性が向上します。
アウトバウンド送信元ネットワーク アドレス変換 (SNAT) [無効] または [有効] のいずれかを選択します。 送信 SNAT が [無効] に設定されている場合、Azure は送信フローのソース IP アドレスをパブリック IP アドレスに変換しません。 送信 SNAT が [有効] に設定されている場合、Azure により送信フローの送信元 IP アドレスがパブリック IP アドレスに変換されます。

Screenshot of Add load balancing rule - Add.

Screenshot of View list of added load balancing rules.

ロード バランサーをテストする

パブリック ロード バランサーとそのコンポーネントを作成して構成するための各種タスクを完了した後は、その構成をテストして正常に動作することを確認する必要があります。 これを行う最も簡単な方法は、作成したパブリック ロード バランサーのリソースからパブリック IP アドレスをコピーし、Web ブラウザーに貼り付ける方法です。 対象のロード バランサー内のいずれかの VM から応答が返されるはずです。 その後、ランダムに応答が返されたいずれかの VM を停止し、その VM が停止された後は、ブラウザーのページを更新して、代わりにそのロード バランサー内の別の VM から応答が返されることを確認できます。

知識を確認

1.

外部ロード バランサーに関する次の記述のうち正しいのはどれですか?

2.

アウトバウンド トラフィック規則に対応する必要がある新しい Azure Load Balancer をデプロイする際には、 どの SKU を選択する必要がありますか?