Azure portal を使用した Azure ロード バランサーの設計と実装
Azure Load Balancer は、開放型システム間相互接続 (OSI) モデルのレイヤー 4 で動作します。 クライアントにとっての単一接続点となります。 Azure Load Balancer によって、ロード バランサーのフロント エンドに到着したインバウンド フローが、バックエンド プールのインスタンスに分散されます。 これらのフローは、構成された負荷分散規則と正常性プローブに従っています。 バックエンド プール インスタンスには、Azure Virtual Machines か、仮想マシン スケール セット内のインスタンスを使用できます。
ロード バランサーの種類の選択
ロード バランサーは、パブリック (外部) または内部 (プライベート) にすることができます。
パブリック ロード バランサーでは、仮想ネットワーク内の仮想マシン (VM) にアウトバウンド接続を提供できます。 これらの接続は、プライベート IP アドレスをパブリック IP アドレスに変換することで実現されます。 外部ロード バランサーは、インターネットからのクライアント トラフィックを、複数の VM にわたって分散するのに使用されます。 そのインターネット トラフィックは、Web ブラウザー、モジュール アプリ、その他のソースからのものであってもかまいません。
内部ロード バランサーは、フロントエンドのみでプライベート IP が必要な場合に使用されます。 内部ロード バランサーは、ある仮想ネットワーク内で、内部の Azure リソースから、他の Azure リソースへのトラフィックを負荷分散するために使用されます。 ハイブリッド シナリオでは、オンプレミスのネットワークからもロード バランサーのフロントエンドにアクセスできます。
Azure ロード バランサーと可用性ゾーン
可用性ゾーンに対応している Azure サービスは、次の 3 つのカテゴリに分類されます。
- ゾーン サービス:リソースは特定のゾーンに割り当てることができます。 ゾーンの指定により、回復性を高めることができます。
- ゾーン冗長サービス: リソースはゾーン間で自動的にレプリケートまたは分散されます。 Azure によってデータが 3 つのゾーンにレプリケートされるので、あるゾーンで障害が発生しても、その可用性に影響を及ぼすことはありません。
- 非リージョン サービス:サービスは常に Azure の地域から利用可能で、ゾーン全体の停止に対しても、リージョン全体の停止に対しても、回復性があります。
Azure Load Balancer は、可用性ゾーンのシナリオをサポートしています。 Standard Load Balancer を使用することで、リソースをゾーンに一致させて、複数のゾーンに分散させることにより、シナリオ全体の可用性を向上させることができます。 このドキュメントを読んで、これらの概念と基本的なシナリオの設計ガイダンスを理解してください
ロード バランサーは、ゾーン冗長、ゾーン、または非ゾーンにすることができます。 ロード バランサーのゾーン関連のプロパティを構成するには、必要な適切な種類のフロントエンドを選択します。
ゾーン冗長
可用性ゾーンのあるリージョンでは、Standard Load Balancer をゾーン冗長にすることができます。
単一のフロントエンド IP アドレスは、ゾーンの障害が発生した後も存続します。 フロントエンド IP は、ゾーンに関係なく、すべての (影響を受けない) バックエンド プール メンバーに到達するために使用できます。 1 つまたは複数の可用性ゾーンで障害が発生しても対応可能であり、リージョン内に正常なゾーンが 1 つでも残っていれば、データ パスは存続します。
ゾーン ベース
単一ゾーンを保証されたフロントエンドにすることができます。これは、"ゾーン ベース" と呼ばれます。 データ パスは、それが保証されたゾーン以外のゾーンのエラーによっては影響を受けません。 ゾーン ベースのフロントエンドを使って、可用性ゾーンごとに IP アドレスを公開することができます。
各ゾーン内の負荷分散されたエンドポイントに対して、ゾーン フロントエンドを直接使用することもできます。 この構成を使ってゾーンごとに負荷分散されたエンドポイントを公開し、各ゾーンを個別に監視することができます。 パブリック エンドポイントの場合は、これらを Traffic Manager などの DNS 負荷分散製品と統合して、1 つの DNS 名を使用できます。
パブリック ロード バランサー フロントエンドの場合は、パブリック 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 ロード バランサーを正常に作成して構成するには、いくつかのタスクを実行する必要があります。
ロード バランサーを作成する
この例では、これらのタスクは、Basic SKU でパブリック (外部) ロード バランサーを作成して構成するために必要です。 最初のタスクは、ロード バランサー自体を作成することです。
Azure portal のホーム ページからグローバル検索バーに移動し、Load Balancer を検索してから Load Balancer を選択します。
[作成] を選択してプロセスを開始します。
[ロード バランサーの作成] ページで、次の必要な情報を指定する必要があります。
- [サブスクリプション] - 新しいロード バランサーのリソースを作成する Azure サブスクリプションを選択します。
- [リソース グループ] - 既存のリソース グループを選択するか、新しいリソース グループを作成します。
- [名前] - インスタンスの一意の名前を指定します。
- [リージョン] - 仮想マシンが作成されたリージョンを選択します。
- [種類] - ここでロード バランサーを [内部] (プライベート) にするか、[パブリック] (外部) にするかを選択します。 [内部] を選択した場合は、仮想ネットワークと IP アドレスの割り当てを指定する必要がありますが、[パブリック] を選択した場合は、複数のパブリック IP アドレスの詳細を指定する必要があります。
- [SKU] - [Standard] SKU か [Basic] SKU のいずれかを選択します。 運用環境のワークロードの場合は、[Standard] を選択します。 テスト、評価、トレーニングの場合は、[Basic] を選択します。
- [レベル] - そのロード バランサーによってリージョン内で分散が行われるか ([リージョン])、複数のリージョンにわたって行われるか ([グローバル]) を選択します。[Basic] SKU を選択した場合、この設定はグレー アウトされます。
- [パブリック IP アドレス] - 公開されているフロントエンド用に新しいパブリック IP アドレスを作成するか、既存のものを使用するかを指定します。また、パブリック IP アドレスの名前と、動的または静的に割り当てられた IP アドレスのどちらを使用するかを指定します。 また、オプションで既定の IPv4 に加えて、IPv6 アドレスもロード バランサーに割り当てることができます。
[確認と作成] をクリックすると、新しいロード バランサーのリソースの構成設定が検証されます。 その後、[作成] をクリックして作成を開始できます。
リソースがデプロイされます。
完了したら、[リソースに移動] をクリックして、ポータルで新しいロード バランサーのリソースを表示できます。
バックエンド プールを追加する
次のタスクでは、ロード バランサーにバックエンド プールを作成します。
Azure portal のホーム ページで、[すべてのリソース] を選択します。
一覧から対象のロード バランサーを選択します。 [設定] セクションで、[バックエンド プール] を選択し、[追加] を選んでプールを追加します。
[バックエンド プールの追加] ページで、次の情報を入力する必要があります。
- [名前]: バックエンド プールの一意の名前を入力します。
- 仮想ネットワーク: バックエンド プール リソースが配置されている仮想ネットワークの名前を指定します。
- [関連付け先]: バックエンド プールを 1 つ以上の仮想マシン、または 1 つの仮想マシン スケール セットに関連付ける必要があります
- [IP バージョン]: IPv4 または IPv6 のいずれかを選択します。
この時点で既存の仮想マシンをバックエンド プールに追加することも、後で作成して追加することもできます。 次に、[追加] をクリックしてバックエンド プールを追加します。
仮想マシンをバックエンド プールに追加する
次のタスクでは、既存のバックエンド プールに仮想マシンを追加します。
[バックエンド プール] ページで、一覧から対象のバックエンド プールを選択します。
次のいずれかの情報を入力して、仮想マシンをバックエンド プールに追加します。
- 仮想ネットワーク: バックエンド リソースが配置されている仮想ネットワークの名前を指定します。
- [関連付け先]: バックエンド プールを 1 つ以上の仮想マシン、または 1 つの仮想マシン スケール セットに関連付ける必要があります
- [IP バージョン]: IPv4 または IPv6 のいずれかを選択します。
次に、[仮想マシン] セクションで、[追加] をクリックします。
バックエンド プールに追加する仮想マシンを選択し、[追加] をクリックします。
次に、[保存] をクリックしてバックエンド プールに追加します。
正常性プローブを追加する
次のタスクでは、バックエンド プール内の仮想マシンを監視する正常性プローブを作成します。
ロード バランサーの [バックエンド プール] ページの [設定] で [正常性プローブ] を選択し、[追加] をクリックします。
[正常性プローブの追加] ページで、次の情報を入力する必要があります。
- [名前]: 正常性プローブの一意の名前を入力します
- [プロトコル]: [TCP] または [HTTP] のいずれかを選択します
- [ポート]: 正常性シグナルの宛先ポート番号を指定します。 既定値はポート 80 です
- [間隔]: プローブ試行の間隔を秒単位で指定します。 既定値は 5 秒です
- [異常しきい値]: 仮想マシンが異常な状態にあると見なされるまでに連続して発生する必要があるプローブ エラーの数を指定します。 エラー数の既定値は 2 です
次に、[追加] をクリックしてその正常性プローブを追加します。
ロード バランサー規則の追加
最後のタスクでは、ロード バランサーの負荷分散規則を作成します。 負荷分散規則によって、受信トラフィックが、バックエンド プール インスタンスのグループ全体に分散されます。 正常性プローブで正常と見なされるバックエンド インスタンスでのみ、新しいトラフィックを受け取ります。
そのロード バランサーの [正常性プローブ] ページの [設定] で、[負荷分散規則] を選択し、[追加] をクリックします。
[負荷分散規則の追加] ページで、次の情報を入力する必要があります。
- [名前]: その負荷分散規則の一意の名前を入力します
- [IP バージョン]: [IPv4] または [IPv6] のいずれかを選択します
- [フロントエンド IP アドレス]: そのロード バランサーの既存のパブリック IP アドレスを選択します
- [プロトコル]: [TCP] または [UDP] プロトコルのいずれかを選択します
- [ポート]: その負荷分散規則のポート番号を指定します。 既定値はポート 80 です
- [バックエンド ポート]: クライアントによってそのロード バランサーと通信するために既定で使用されるものとは異なるポート (ポート 80) を使用して、バックエンド プール内の仮想マシンにトラフィックをルートすることを選択できます
- [バックエンド プール]: 既存のバックエンド プールを選択します。 このバックエンド プール内の仮想マシンが、負荷分散されたトラフィックのターゲットです。
- [正常性プローブ]: 既存の正常性プローブを選択するか、新しいものを作成します。 負荷分散規則では、バックエンド プール内のどの仮想マシンが正常であり、そのため負荷分散されたトラフィックを受信可能であるかを判定するのに、正常性プローブを使用します。
- [セッション永続化]: [なし]、[クライアント IP]、または [クライアント IP とプロトコル] を選択できます。 [セッション永続化] は、トラフィックが、セッション内の同じ仮想マシンによって処理されるよう指定します。 [なし] : 同じクライアントからの連続した要求が、任意の仮想マシンによって処理できることを指定します。 [クライアント IP]: 同じクライアント IP アドレスからの連続する要求がどのように処理されるかを指定します。 [クライアント IP とプロトコル]: 同じクライアント IP アドレスとプロトコルの組み合わせによる連続した要求が、同じ仮想マシンによって処理されるよう指定します。
- [アイドル タイムアウト (分)]:クライアントから "キープアライブ" メッセージを送信しなくても TCP または HTTP 接続が開いたまま維持される時間を指定してください。 既定のアイドル タイムアウトは 4 分です。これは、最小設定でもあります。 最大設定は 30 分です。
- [Floating IP]: [無効] または [有効] のいずれかを選択します。 [Floating IP] を [無効] に設定すると、使いやすさのために、従来の負荷分散 IP アドレス マッピング スキーム (VM インスタンスの IP) が、Azure によって公開されます。 [フローティング IP] を [有効] に設定すると、その IP アドレス マッピングがロード バランサーのフロントエンド IP に変更され、柔軟性が向上します。
次に、[追加] をクリックして、負荷分散規則を追加します。
ロード バランサーをテストする
必ず構成をテストして、正常に機能することを確認します。 パブリック IP アドレスをコピーして、Web ブラウザーに貼り付けます。 対象のロード バランサー内のいずれかの VM から応答が返されるはずです。 他のロード バランサー応答が表示されるまでページの更新を続けます。