SE(しがないエンジニア)のブログ

IT技術ネタ(クラウド・セキュリティ周り)が中心です!他雑記(お馬さん 他いろいろ)もあり。

Azure Load Balancerを利用して負荷分散を検証する

システムあるある

Yahoo!ニュース」のTOPにニュースが掲載され、それに関連するコーポレートページに飛ぶと大体のケースでHTTP 503が返されます。笑

www.cpi.ad.jp

いや、笑い話ではなく503は防止したいところなのですが、予想を超える負荷が訪れた時は「時既に遅し。。」ということが多々あります。クラウド(Azureもその他も)を利用する魅力として、機器を準備する手間を省きそのようなケースに柔軟に対応できるということが挙げられます。

Azure Load Balancerを利用してみる

検証環境はこんな感じで

f:id:btsn:20190709032323j:plain

ネットワークの構築

肝心要の ロード バランサー からまず作成しましょう。下記のような設定で良いと思います。「SKU」に関してはバックエンドプールになる Virtual Machine と揃える為に「Standard」にしておきます。

f:id:btsn:20190709013604j:plain

デプロイは20~30秒程で完了します。続いて仮想ネットワークですが、今までテスト使用したものがあるので継続利用します。(本格的にネットワークを構築する場合は適宜設定してください!)

f:id:btsn:20190709015600j:plain

今回は概念を理解する為にNSG(ネットワーク セキュリティ グループ)の設定もしてみました。[リソースの作成]➡[ネットワーキング]➡[ネットワーク セキュリティ グループ]で辿れます。

f:id:btsn:20190709015957j:plain

Virtual Machineの作成

仮で2台の Virtual Machine を作成する流れにしましょう。

・testvm-web1

・testvm-web2

とします。作成時に忘れてはならないのが可用性が利用できる「サイズ」を選択することです。今回はスペックも必要ないので「Standard A0」としておきます。ちなみに、1台目を作成する際に可用性セットを新規作成しましょう。詳細な設定値に関しては下記のリンクが参考になりますが、そのままにしておきます。

更新ドメインと障害ドメイン。それと可用性セットについてのまとめ – SIOS Tech. Lab

f:id:btsn:20190709020826j:plain

 管理者アカウントはアクセスを簡易的にする為、認証の種類は「パスワード」にしました。続いては「ディスク」タブですが検証レベルで良ければ「Standard HDD」で十分です。続いては「ネットワーク」タブです。ポイントは以下の通りとなります。

・「仮想ネットワーク」は前述の通り、既存のものを流用します。

・「パブリック IP」は新規作成。

・習得を兼ねて「ネットワーク セキュリティ グループ」(ex-nsg)を設定。

・「負荷分散のオプション」にてAzure Load Balancerを選択し「バックエンド プール」を1台目の際に新規作成しておく。

f:id:btsn:20190709021821j:plain

1台目を作成し終えたら2台目も同様の設定で作成します。

その後の設定

まずは Virtual Machine に適用した「ネットワーク セキュリティ グループ」の受信規則を変更しましょう。[リソース グループ]➡[(該当のリソース グループ)]を辿り受信セキュリティ規則の追加を行います。下記のような形で80また22も追加します。(ちなみに Port 22 をインターネット上にさらすのは危険なのであくまでも検証の範囲内で留めます。図は Port 80 の際のものです。)

f:id:btsn:20190709022846j:plain

適用後に各々の Virtual Machine にSSHログインしUbuntuApacheをインストールします。Apacheのインストールに関してはGoogle検索でゴロゴロ転がっておりますのでご参照ください。(各々の Virtual Machine の詳細で表示される「パブリック IP アドレス」に関してはロードバランサー側のものが表示されているので「接続」押下後のIPアドレスをご参照ください。)

UbuntuとApacheでウェブサーバを立てる - Qiita

分かりやすいように「/var/www/html/index.html」の中身を削除してそれぞれのローカルIPアドレスを記載しておきます。ここまで来ればあと少しで、続いて Azure Load Balancerの 設定を行います。「バックエンド プール」に関しては設定済の為、「正常性プローブ」と「負荷分散規則」のみ追加します。

f:id:btsn:20190709023727j:plain

f:id:btsn:20190709023805j:plain

これにて一通りの設定が完了です!

検証

ロードバランサーのIP … 20.43.94.162

・testvm-web1 … 10.0.0.6(パブリックIPもあります)

・testvm-web2 … 10.0.0.7(パブリックIPもあります)

ロードバランサー側のIPアドレスにアクセスしてみると・・・・。

f:id:btsn:20190709024901j:plain

ラウンドロビン方式ではないですが、少し間を置き F5更新 すると。

f:id:btsn:20190709025504j:plain

障害を想定して testvm-web1 をシャットダウンしてみます。想定した通りの動きになりました。

f:id:btsn:20190709025621j:plain

詳細な説明に関してはマイクロソフト様のページに記載があります。

blogs.technet.microsoft.com

オンプレでアプライアンス等を利用していれば、今頃設置していてようやく起動・・・・というレベルかもしれません。それと比較するとクラウドのこの手の設定は非常に楽で構築のスピードも段違いです!