自由気ままに書いちゃおう

好きなことをつらつらと・・・

Azure LoadBalancerとApplicationGatewayについて2

前回、Azure LoadBalancerとApplicationGatewayについて記載しました。

www.guri2o1667.work


今回はApplicationGatewayを実際に使ってみようと思います。

 

■はじめに(事前準備)


事前に2台の仮想マシンを構築済みであることを前提としております。
※仮想マシンの複製方法は下記参照

www.guri2o1667.work


ここでは、VM01、VM02というホスト名のRHEL7.7を2台用意しております。
また、各仮想マシンのWEBページは以下の通り表示されるものとしています。

【VM01のWEBページについて】
① http://グローバルIP/index.html
上記にアクセスすると以下ページが表示されるものとします。

    f:id:guri2o1667:20200331171908p:plain

② http://グローバルIP/vm01/index.html

上記にアクセスすると以下ページが表示されるものとします。

    f:id:guri2o1667:20200331204836p:plain


【VM02のWEBページについて】
③ http://グローバルIP/index.html
上記にアクセスすると以下ページが表示されるものとします。

               f:id:guri2o1667:20200331171948p:plain
④ http://グローバルIP/vm02/index.html
上記にアクセスすると以下ページが表示されるものとします。

    f:id:guri2o1667:20200331205012p:plain


念のため、仮想マシンに設定したapache2.4の設定ファイルも下記します。
※VM01のみ下記しますが検証用設定です。細かいところは気にしないでもらえると嬉しいです。

【/etc/httpd/conf.d/vm01.conf】
<VirtualHost *:80>
  Alias /vm01 /var/www/html/vm01/
  <Directory /var/www/html/vm01>
    Require all granted
  </Directory>
</VirtualHost>


【/var/www/html/index.html】
<html>
  <head>
   <title>VM1 Page</title>
  </head>
  <body>
   <p>This is a VM1.</p>
  </body>
</html>

【/var/www/html/vm01/index.html】
<html>
  <head>
   <title> VM01 Page</title>
  </head>
  <body>
   <p>This is a /var/www/html/vm01/index.html.</p>
  </body>
</html>

 前段が長くなりましたが、下記から本題です。

■ApplicationGateway作成の流れ


実施手順が多いため、まずは流れを整理します。
また、該当する手順も一緒に記載しております。

① ApplicationGatewayの構成(レベル、SKUサイズ、インスタンス数)とApplicationGateway専用の仮想ネットワークとサブネットを設定します。
  ⇒ 下記手順1~3

② ApplicationGatewayのフロントエンドIPを設定します。
  ⇒ 下記手順4

③ バックエンドプールの設定をします。
  ⇒ 下記手順5

④ ApplicationGatewayのリスナーを設定します。
  ⇒ 下記手順7

⑤ ApplicationGatewayに届いたパケットのルーティング設定をします。
  ⇒ 下記手順8

■ApplicationGatewayの作成手順について


ここでは、ApplicationGatewayの動作確認を実施することを目的としている為、詳細な設定については言及しておりません。
詳細設定は下記参照ください。

www.guri2o1667.work


1.アプリケーションゲートウェイを選択します。

f:id:guri2o1667:20200331172314p:plain

2.「追加」をクリックします。

f:id:guri2o1667:20200331172335p:plain


3.「基本」タブで必要事項を入力します。
レベル/インスタンス数/SKUサイズは検証目的のため、低スペックのものを選択しています。
また、「仮想ネットワーク」の構成では、ApplicationGateway専用の仮想ネットワークとサブネットが必要です。そのため、新規作成しております。

f:id:guri2o1667:20200331173435p:plain


4.「フロントエンドの数」タブで必要事項を入力します。
ファイアウォールパブリックIPアドレスとは、ApplicationGatewayのフロントエンドのグローバルIPアドレスのことです。

f:id:guri2o1667:20200331173912p:plain


5.「バックエンド」タブで必要事項を入力します。
ApplicationGatewayまで届いたパケットをApplicationGatewayにぶら下がっている仮想マシンに流す際の、
仮想マシンの組み合わせををここで指定しています。

「バックエンドプールの追加」をクリックし、仮想マシンに関連付けているグローバルIPアドレスを指定しています。
尚、ここでは以下バックエンドプールの構成を作成しています。

一つ目: apgw-backend (対象サーバ:VM01、VM02)
二つ目: apgw-backend-vm01 (対象サーバ:VM01)
三つ目: apgw-backend-vm02 (対象サーバ:VM02)

■初期画面

f:id:guri2o1667:20200331174041p:plain


■設定後

f:id:guri2o1667:20200331174312p:plain

6.「構成」タブで「ルーティングの規則」を設定するため、「ルーティング規則の追加」をクリックします。

f:id:guri2o1667:20200331174557p:plain


7.「ルーティング規則の追加」の「リスナー」タブで必要事項を入力します。

f:id:guri2o1667:20200331174718p:plain


8.同様に「ルーティング規則の追加」の「バックエンドターゲット」タブで必要事項を入力します。
※上記手順7からの続きの画面です。

f:id:guri2o1667:20200331210329p:plain



9.「構成」タブに遷移するため、「次:タグ」をクリックします。

f:id:guri2o1667:20200331175122p:plain


10.「確認および作成」をクリックし、「検証に成功しました」と表示されることを確認し、「作成」をクリックします。

※私の環境では、アプリケーションゲートウェイがデプロイ完了するまで20分程度かかりました。

f:id:guri2o1667:20200331175244p:plain


11.作成完了すると、ApplicationGatewayのフロントエンドIP(グローバルIP)が割り振られていることが確認できます。

f:id:guri2o1667:20200331181453p:plain

以上で、ApplicationGatewayの作成までは完了です。
引き続き、動作確認をしてみたいと思います。

■ApplicationGatewayの動作確認


1.上記手順11で確認したApplicationGatewayのフロントエンドIPでHTTPアクセスしてみます。
アクセスすると、「This is a VM1.」もしくは「This is a VM2.」が表示されます。
また、F5ボタン等でブラウザ画面を更新すると、表示が切り替わることが確認できます。
つまり、負荷分散が実施されていることがわかります。
※もう少し詳細を言うと、「バックエンドターゲット」(=apgw-backend)の設定により、指定した2台の仮想マシン(VM01,VM02)へ振り分けられている状態です。

2.続いて、以下URLにアクセスします。
①「http://ApplicationGatewayのフロントエンドIP/vm01/index.html」
②「http://ApplicationGatewayのフロントエンドIP/vm02/index.html」

①は、「This is a /var/www/html/vm01/index.html.」と表示されます。
②は、「This is a /var/www/html/vm02/index.html.」と表示されます。
これらは、F5ボタン等でブラウザ画面を更新しても表示は切り替わりません。
理由は、パスベース規則で指定しているバックエンドプール(apgw-backend-vm01とapgw-backend-vm02)のサーバにのみにパケットが届いているからです。


以上です。