【Azure-09】ロードバランサ―の作成(バックエンドプールの構成、正常性プローブの構成、負荷分散規則の構成、DNS名を設定)


目次
事前確認
仮想マシンのパブリックIPアドレスのSKUを確認しておきます。
「Virtual Machines」より仮想マシンをクリックします。

次に「パブリックIPアドレス」をクリックし、「プロパティ」をクリックします。
パブリックIPアドレスのSKUは、「Standard」であることがわかります。

ロードバランサ―の作成
ロードバランサ―の作成とフロントエンドIPアドレス(ロードバランサーに割り当てるパブリックIPアドレス」を構成していきます。
★ロードバランサ―のSKUとバックエンドプールの仮想マシンに割り当てられたパブリックIPのSKUは、一致している必要があります。
ホーム画面の検索ボックスへ「ロードバランサ―」と入力し、表示された候補の「ロードバランサ―」を選択すると「負荷分散 ロードバランサ―」画面へ遷移します。


「ロードバランサ―の作成」をクリックします。

SKUは事前確認より「Standard」を選択しています。
外部からWebサーバー(仮想マシン)へ接続したいので「種類」は「パブリック」を選択します。

「+ フロントエンドIP構成の追加」をクリックします。

画面右側に「フロントエンドIP構成の追加」が表示されるので入力します。
「パブリックIPアドレス」の「新規作成」をクリックします。

「パブリックIPアドレスの追加」で「名前」、「可用性ゾーン」を設定し、「ルーティングの優先順位」は参考書にならって「Microsoftネットワーク」を選択して「OK」> 「追加」をクリックします。

「バックエンドプール」は後で設定するので何も設定せずに「インバウンド規則」へ進みます。
「インバウンド規則」は後で設定するので何も設定せずに「アウトバウンド規則」へ進みます。
「アウトバウンド規則」は今回設定しないので何も設定せずに「タグ」へ進みます。
「タグ」は何も設定せずに「確認および作成」をクリックします。
「検証に成功しました 」が表示されることを確認し、「作成」をクリックします。
「デプロイが完了しました」が表示されることを確認し、「リソースに移動」をクリックします。
ロードバランサーが構成されて、ロードバランサーへパブリックIPアドレスが付与されました。


バックエンドプールの構成
負荷分散対象の仮想マシンを指定していきます。
負荷分散の対象となる仮想マシンをバックエンドプールとしてまとめて割り当てます。参考書より、バックエンドプールの仮想マシンのパブリックIPアドレスは、「ロードバランサ―と同じSKUであること」もしくは「仮想マシンにパブリックIPアドレスが割り当てられていない事(プライベートIPアドレスで通信するため」のいずれかの条件を満たしている必要があるそうです。
また、Basicロードバランサ―のみ、「仮想マシンはすべて同じ可用性セットに存在していること」が条件となります。
今回は、Standardロードバランサ―であることと「ロードバランサ―と同じSKUであること」を満たしているのでこのまま進めたいと思います。
Azureポータルでロードバランサ―の管理画面を開き、作成済みのロードバランサ―を選択します。

左ペインから「バックエンドプール」を選択し、「+ 追加」をクリックします。

「バックエンドプールの追加」画面でバックエンドプールの名前を入力し、「仮想ネットワーク」でバックエンドプールへ追加したい仮想マシンの仮想ネットワークを選択します。1つしか存在しない場合は選択することができません。

「バックエンドプールの構成」で今回は「NIC」を選択し、「IP構成」の「+ 追加」をクリックします。

「バックエンド プールへの IP 構成の追加」画面が表示されます。
今回は、WindowsとLinuxの仮想マシン2台にチェックを入れて「追加」をクリックします。

「IP構成」に追加されたので「保存」をクリックします。

「デプロイが成功しました」が表示されれば成功です。
「バックエンドプール」画面に仮想マシンの情報が追加されました。

正常性プローブの構成
参考書より、正常性プローブとはロードバランサ―に正常性確認の規則を追加することと記載があります。
TCPとHTTPの2種類の方法があり、指定したポートからの応答あり・なしで正常性を判断します。
今回は「TCP」で設定してみます。
現時点で必須の設定かどうかは判断できないのですが参考書では設定しているので設定しておきます。
Azureポータルでロードバランサ―の管理画面を開き、作成済みのロードバランサ―を選択します。

左ペインから「正常性プローブ」を選択し、「+ 追加」をクリックします。

「正常性プローブの追加」画面で正常性プローブの名前を入力、プロトコル「TCP」、ポート「80」、間隔「5(秒)」で保存をクリックします。
今回2台の仮想マシンはWebサーバーを構築しており、ポート「80」は解放されているので正常性プローブの対象となると思います。

正常性プローブが構成されました。

負荷分散規則の構成
負荷分散のためのプロトコルやポート番号の規則を作成していきます。
ロードバランサーでどのような通信を受けて、どのような通信を仮想マシンへ渡すかというイメージです。
Azureポータルでロードバランサ―の管理画面を開き、作成済みのロードバランサ―を選択します。

左ペインから「負荷分散規則」を選択し、「+ 追加」をクリックします。

ポート「80」の負荷分散規則を作成しました。「フロントエンドIPアドレス」は、構成済みのパブリックIPアドレスを選択しています。
「バックエンドプール」は、仮想マシンが所属するバックエンドプールを選択します。
「ポート」は、ロードバランサーが受けるポート番号を入力します。
「バックエンドポート」は、仮想マシンが受けるポート番号を入力します。
設定が完了したら「保存」をクリックします。

負荷分散規則が構成されました。

ロードバランサー経由の接続確認
まずここまで設定しても問題なく、Windowsのリモートデスクトップ、LinuxのSSHは、仮想マシンのパブリックIPアドレスを直接指定することで接続できました。
それではロードバランサー経由の接続確認を進めます。
2台の仮想マシンを起動して外部から「http://負荷分散のパブリックIPアドレス」へアクセスします。
想定では、WindowsのIISもしくはLinuxのapacheのどちらかの index.html が表示され、ページを複数回更新するとタイミングによってはWindows、Linuxと切り替わるのではと思います。
以下が結果です。
Ubuntuのapacheは表示されましたが、WindowsのIISは404エラーとなりました。

2台の仮想マシンは負荷分散配下にあります。切り分けのため外部から各仮想マシンに対して「http://パブリックIPアドレス/index.html」を指定すると表示されるか確認してみます。
結果、Ubuntuは表示されましたが、Windowsは404エラーとなりました。Windows側に何か問題がありそうです。

仮想マシン(Windows)へリモートデスクトップ接続してIISの設定画面を確認しました。
サイトバインド画面でホスト名「www.20230908.com」を設定していることが怪しいかもで削除しました。

すると外部から負荷分散経由でも表示されるようになりました。

Ubuntuだけ「www.20230908.com」を設定したままだとあとあとややこしくなりそうなのでこのタイミングでコメントアウトしておきます。
コメントアウトしてもWebページは表示されることを確認しています。
cd /etc/apache2/sites-available/000-default.conf ファイル

ロードバランサ―のパブリックIPアドレスに対してDNS名を設定
ロードバランサ―のパブリックIPアドレスにDNSドメイン名を追加して「http://DNSドメイン名/index.html」でWebページが負荷分散されて表示されるか確認してみます。
DNSドメイン名は、「testweb20230910」とします。これにAzureが指定する情報が付加されてFQDNとなります。
Azureポータルでロードバランサ―の管理画面を開き、作成済みのロードバランサ―を選択します。

左ペインから「フロントエンドIP構成」を選択し、パブリックIPアドレスのリソース名を確認しておきます。

続いて、パブリックIPアドレスリソースにDNSラベルを追加します。
Azureポータルの検索ボックスで「パブリック」と入力し、「パブリックIPアドレス」を選択します。

ロードバランサ―が使用するパブリックIPアドレスをクリックします。

設定の「構成」をクリックします。

任意のDNS名ラベルを入力して「保存」をクリックします。
今回DNSラベル名に「testweb20230910」を登録し、DNS名は「testweb20230910.japaneast.cloudapp.azure.com」となりました。

「パブリックIPアドレス」画面へDNS名が反映されました。DNS名項目が見えない場合は「ビューの管理」から表示したい項目を追加すれば表示されます。

動作確認します。 外部から登録したDNS名の名前解決ができました。

「http://testweb20230910.japaneast.cloudapp.azure.com」へアクセスしてみます。 Windows、Linuxの両方のWebページが表示されました!!

まとめ
負荷分散を構成、ロードバランサー経由でWeb接続し、うまく分散されてWebページが表示できることを確認しました。次はインバウンドNAT規則について検証したいと思います。