Azure Load Balancer【Azureを使いこなしたい! 10】

【今回の内容】

てっこのWebサイトもいざ盛況となった時のために、ロードバランサーで複数のWebサーバーに、受信ネットワークトラフィック(負荷)を分散出来るように準備しておきたいと思います。そこで、今回はAzure Load BalancerでAzure VMの負荷分散を行ってみたいと思います。
Azure Load Balancerは、OSI参照モデルの第4層(トランスポート層)にて動作し、構成した負荷分散規則と正常性プローブに従って、バックエンドプール内のリソース(VMやVMスケールセット)に負荷を分散します。
また、外部からのトラフィックを分散するパブリックロードバランサーだけでなく、仮想ネットワーク内でのトラフィックを分散するプライベートロードバランサーも使用することが出来ます。

AzureでのAzure Load BalancerはPaaSに分類されます。

【前提事項】

以下のAzure VMを構築していること。

クライアントPC(今回はWindows 10を用いました)

1.検証用Webサーバーの構築

1-1.IIS Webサーバーの構築

(1)Azure  portalの[仮想マシンの作成]にて、IIS Web用サーバーを2台作成します。

<A>[可用性オプション]を選択します。 → <B>[名前]を入力します。 → <C>[障害ドメイン][更新ドメイン]を選択します。 → <D>[OK]をクリックします。

※今回はBasicロードバランサーを作成するため、可用性セットの例です。Standardロードバランサーの場合は、リージョンによっては[可用性ゾーン]または[可用性セット]のどちらかを選択してください。

その他のIIS Webサーバー構築の詳細は、Azureを使いこなしたい! 9~Azure DNS~1-1.IIS Webサーバーの構築を参照してください。

※先にロードバランサーを作成していた場合、仮想マシン作成時にロードバランサーのバックエンドプールに配置することも出来ます。

(2)<A>[スタートメニュー]で右クリックします。 → <B>[Windows PowerShell]をクリックします。

(3)今回は以下のコマンドにて、サーバー名を表示するだけのページを作成します。

[ Remove-Item C:inetpubwwwrootiisstart.htm]を入力します。 → Enterキーを押します。 → [Add-Content -Path “C:inetpubwwwrootiisstart.htm” -Value $env:computername]を入力します。 → Enterキーを押します。

※デフォルトのWebページを削除し、マシン名を表示するWebページを作成するという設定です。

(4)<A>[Internet Explorer]をクリックします。 → <B>アドレスバーに[http://localhost/]と入力します。 → Enterキーを押します。 →  IIS Web ページが表示されます。

これで、IIS Webサーバーの構築は完了です。

Copy to Clipboard

2.ロードバランサーの構築

2-1.パブリックロードバランサーの作成

(1)Azure portalにて、<A>Azure Portalの検索バーに[ロードバランサー]と入力します。 → <B>[ロードバランサー]をクリックします。

(2)[作成]または[ロードバランサーの作成]をクリックします。

(3)<A>[サブスクリプション][地域]を選択します。[リソースグループ]を選択または新規作成します。[名前]を入力します。 → <B>[SKU]を選択します。 → <C>[パブリック]を選択します。 → <D>[次:フロントエンドIP構成>]をクリックします。

※[地域][SKU]は、VMのパブリックIPアドレスリソースと同じである必要があります。

今回は検証のため、Basicを選択しました。そのため、レベルの選択はありませんでした。

(4)<A>[フロントエンドIP構成の追加]をクリックします。 → <B>フロントエンドIPの[名前]を入力します。 → <C>[新規作成]をクリックします。 → <D>パブリックIPアドレスの[名前]を入力します。 → <E>[静的]を選択します。 → <F>[OK]をクリックします。 → <G>[追加]をクリックします。

(5)[次:バックエンドプール>]をクリックします。

(6)[バックエンドプールの追加]をクリックします。

(7)<A>[名前]を入力します。 → <B>[仮想ネットワーク]を選択します。 → <C>[追加]をクリックします。

(8)<A>[対象のリソース]にチェックを入れます。 → <B>[追加]をクリックします。

(9)[保存]をクリックします。

(8)[次:インバウンド規則>]をクリックします。

(9)<A>[負荷分散規則の追加]をクリックします。 → <B>[名前]を入力します。 → <C>[IPバージョン]を選択します。 → <D>先ほど追加した[フロントエンドIPアドレス][バックエンドプール]を選択します。 → <E>[プロトコル]を選択します。 → <F>[ポート][バックエンドポート]を入力します。 → <G>[新規作成]をクリックします。

<H>[名前]を入力します。 → <I>[プロトコル]を選択します。 → <J>デフォルトのままです。 → <K>[OK]をクリックします。

<L>デフォルトのままです。 → <M>[追加]をクリックします。

※今回は検証のため、デフォルトのままとした箇所があります。状況に応じて変更してください。

※セッション永続化[なし]:ネットワークトラフィックを複数のVMインスタンスに均等に分散させます。
[クライアントIP]:同じIPアドレスのクライアントからの連続する要求が、同じ仮想マシンによって処理されます。

[クライアントIPとプロトコル]:同じIPアドレス且つプロトコルのクライアントからの連続した要求が、同じ仮想マシンによって処理されます。

※フローティングIP:クラスタリングやNVA、TLS等でポートを再利用したい場合、有効に設定します。(VMのゲストOSの構成も必要です。)

(10)[次:アウトバウンド規則>]をクリックします。

(11)[次:タグ>]をクリックします。

※アウトバウンド規則とは、SNAT (送信元ネットワーク アドレス変換) を明示的に定義するものです。今回は、Basic SKUを選択したため、バックエンド プールのVMの台数に依存して、SNATポート数をAzureが自動で割り当てています。

Standard SKUにて、アウトバンド規則を使うと、SNATポート割り当てのカスタマイズや、TCPアイドルタイムアウトの調節が柔軟に構成出来ます。

(12)[次:確認および作成>]をクリックします。

※今回は検証のため、デフォルトのままとしました。

(13)[作成]をクリックします。

(14)デプロイが行われます。 → [リソースに移動]をクリックします。

(15)パプリックロードバランサーが作成されました。

これで、Azure Load Balancerでのパブリックロードバランサーの構築は完了です。

プライベートロードバランサーの作成の場合は、以下の部分が異なります。その他は、パブリックロードバランサーの作成を参照してください。

2-2.Webページでの確認

(1)Azure portalにて、先ほど作成した[ロードバランサー]のブレードを開きます。 → <A>[フロントエンドIP構成]をクリックします。 → <B>[IPアドレス]をコピーします。

(2)クライアントPCにて、<A>[Microsoft Edge]をクリックします。 → <B>アドレスバーに[http://パプリックロードバランサーのIPアドレス]を入力します。 → Enterキーを押します。

(3)バックエンドプール内の片方のVMのWebページが表示されます。

(7)Ctrl+F5キーを数回押します。(強制的に最新の情報に更新を行います。)  → バックエンドプール内のもう片方のVMのWebページが表示されます。

※なかなか切り替わらない場合は、ブラウザを完全に閉じて再起動したり、複数の端末を併用する等してみてください。Azure Load Balancerは、トランスポート層で通信を振り分けるため、ブラウザの挙動によっては、同一の値をもとにハッシュを計算することになり、振り分け先が同一となってしまうそうです。【参考】マイクロソフト公式HP ロードバランサー経由での通信が偏る場合のチェックポイント | Microsoft Learn

(8)Azure portalにて、片方のVMのブレードを開きます。 → <A>[停止]をクリックします。 → <B>[はい]をクリックします。

※予期せぬシャットダウンが発生したというシミュレーションです。

(9)再度、クライアントPCにて、<A>[Microsoft Edge]をクリックします。 → <B>アドレスバーに[http://パプリックロードバランサーのIPアドレス]を入力します。 → Enterキーを押します。

(10)もう片方のVMのWebページのみ表示されるようになります。

※正常性プローブがバックエンドプール内のインスタンスから応答を取得出来ない場合、そのインスタンスに新しい接続が送信されなくなるためです。正常性プローブが再び成功すると、再度そのインスタンスに新しい接続が送信され、両方のWebページが表示されるようになります。

BLOG POSTS