【2024年7月18日開催】Azureで公開Webサーバを作ってみよう
概要説明
メガクラウドの特徴
メガクラウドとは
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-140.png)
特にシェアが大きく、サービス提供範囲がSaaS/PaaS/IaaSと多岐にわたるクラウドサービス。AWS(Amazon)、Azure(Microsoft)、GCP(Goolge)などがメガクラウドといわれています。
メガクラウドの共通的な特徴
以下のような特徴が挙げられます。
①リソースの共有
複数のユーザーでシステム資源を共有し、融通し合える仕組みを備えています
②迅速な拡張性
ユーザーの要求に応じて、システムの拡張や縮小を即座に行えます
③従量課金
使った分だけの支払になります。
④新しく機能が随時追加(廃止)される
機能追加も頻繁におこなれます。また、人気のない機能は廃止されます。機能のライフサイクルが短いです。
⑤グローバルなサービス展開
全世界に設備を構築しており、日本から海外の設備にシステム構築することが可能です。
これらの特徴により、オンプレミスシステムにおける柔軟性に乏しいという課題を解決できます。
メガクラウド各社の違い
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-139.png)
よくお客様から「AWS、Azure、GCPのうち、どのサービスを使うのがいいですか」と聞かれます。
その場合、「基本的には大きな差異はないが、特殊要件がありそうであれば、少し慎重に選んだ方がよい」ということを、よくコンビニに例えて説明しています。
メガクラウドとコンビニの共通点
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-145.png)
メガクラウドとコンビニはとても似ています。
①製品の豊富さ
製品ラインナップがとても豊富です。新たな商品(サービス)の開発、廃止のサイクルが早い点も共通です。
②気楽に利用できる
どちらも24時間365日利用できます。加えて、クラウドは従量課金で気楽に利用できます。
③グローバル展開している
世界中でサービスを提供しています。地域によってサービスが一部異なる点も似ています。
「どのメガクラウドサービスを選ぶか」と「どのコンビニを選ぶか」は似ている
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-144.png)
メガクラウドもコンビニも共通点が多いので、
「AWS、Azure、GCPのどれを選ぶべきか」という問いは、
「目の前にセブンイレブン、ファミマ、ローソンがあった時に、どれを選ぶべきか」
と概念的には同じ質問であると考えてみてください。
コンビニ質問への回答としては
- (特殊要件がないパターン)提供しているサービスはどこも同じようなものなので、大きな差異はないですよ
- (特殊な要件があるパターン)ファミチキ食べたいなら、ファミマがいいですよ。セブン銀行のATM使いたいならセブンイレブンがいいですよ。
のようになると思います。
クラウドの場合も同じで、「どのメガクラウドサービスを選ぶべきか」という質問への回答としては、
- (特殊要件がないパターン)提供しているサービスはどこも同じようなものなので、大きな差異はないですよ
- (特殊な要件があるパターン)Open AI使ってAIシステム作りたいなら、Azureがいいですよ。Big Query使ってデータ分析がしたいなら、GCPがいいですよ
となります。
大抵のお客様は、特定のメガクラウドでしか対応できないような特殊要件はないので、「あまりメガクラウドサービスの違いは意識する必要はなく、まずはどれか使ってみるのがいいと思います」とお伝えしています(従量課金なので、合わないと思ったら、すぐやめればいいですし。ここもクラウドいいところだと思います)。
(参考)どのメガクラウドとどのコンビニが似ている?かまとめてみた(独断と偏見あり)
共通点 | AWS | セブンイレブン |
---|---|---|
業界シェアNO1 | クラウド業界 | コンビニ業界 |
親会社が小売り業 | Amazon | イオン |
共通点 | Azure | ファミマ |
---|---|---|
多くの業務提携/経営統合により巨大化(エコシステムを作るのが得意) | Open AIへの出資 Github買収 など | サークルK統合など |
地域密着型の取り組み | 各国の地場企業と連携を進めている | 地域ごとにニーズに応じた商品展開を行っている |
共通点 | GCP | ローソン |
---|---|---|
3大企業の中ではシェアは低いが、特定商品に強み有 | Big Queryなどの特定のデータ分析ツールが強い | からあげくんやスイーツ商品など一部商品に根強い人気あり |
Azureの特徴
(+)他のMicrosoft製品とのシームレスな統合
いくつか例を挙げます。
① 認証の観点 オンプレActive Directoryとの統合
Azure上のID基盤サービスであるEntraは、オンプレのActive DirectoryとID管理を統合できます。また、これによりMicrosoft 365へのログインも、オンプレActive Directoryで利用しているIDを利用できます。
② 開発の観点
開発環境でよく使用されるVisual Studio では、Azureを利用する上で便利なプラグインが多数用意されており、Visual Studioから簡単にAzure を操作することができます。
また、PowerShellからAzureへの操作も可能ですので、PowerShell操作に慣れている方には、Azureは使い勝手がよいです。
③ セキュリティの観点
Microsoft 365のセキュリティ機能とAzureのEntra やSentinel(SIEM)を連携させることで、より高度な認証やログの相関分析を実現できます。これらの連携により、ゼロトラストセキュリティ対策の実現をMicrosoft 社製品のみで完結できます。
(+)ChatGPTのAIモデルを各社独自のシステム向けに利用できる
ChatGPTで使われているAIモデル(GPT4など)を利用できるため、各社独自のシステムにChatGPTのAIモデルを組み込むことが可能です。一般のChatGPTと違い、AIモデル利用時のユーザデータは機械学習に利用されないため、意図しない情報流出などを心配することなく安心して利用できます。ChatGPTのAIモデルを提供しているメガクラウドはAzureだけです。
(-)公開されているドキュメントがわかりづらい(AWSと比較)
一部のドキュメントを除き、公開されているドキュメントが非常にわかりづらいと感じます。
Azureを利用する上で、Microsoft社のサポート契約は必須だと思います(その点、AWSは公開ドキュメントがわかりやすいものも多いため、AWSサポートを使わなくても何とかなるケースが多いです)。
Azure基礎
ハンズオンを理解する上で前提となるAzureの基礎知識について説明します。
Azure Portal
Azure Portal は Azure を統合的に操作するためのツールです。ブラウザでアクセスし、GUIで Azure サービスを操作することが可能です。
以下のようなGUI画面です。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-146-1024x457.png)
本勉強会でもAzure Portalを利用して、システム構築を進めます。
リージョン
ある一定地域内でのデータセンターの集合体のことです。全世界に 60 リージョンあり、様々な国で Azure サービスを利用可能です。日本では西日本リージョンと東日本リージョンがあります。
本勉強会では、西日本リージョンを利用します。
リージョン内の各施設は、クラスターの集まりで構成されています。
クラスターはラックの集まりで、ラックはサーバーの集まりです。
この何処かに、Azure 仮想マシンが配置されています。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-158.png)
サブスクリプション
Azureの契約単位のことで、サブスクリプションに対して課金や請求情報が紐づきます。
ユーザーは Azure と契約してサブスクリプションを取得することで、仮想マシンなどのリソースを作成できるようになります。
本勉強会では、事務局がサブスクリプションを事前に用意しています。
リソースグループ
Azureリソースを管理するためのしくみです(=リソースを作成する際に、いずれかのリソースグループに紐づける必要があります)。
リソースグループ作成時に、そのリソースグループをサブスクリプションに紐づける必要があります。
そのため、リソース作成時に、リソースをリソースグループに紐づけることで、結果的にリソースがサブスクリプションにも紐づきます。
本勉強会では、事務局がハンズオン参加者毎にリソースグループを事前に用意しています。
仮想ネットワーク(VNet)
仮想ネットワーク (VNet) は Azure Virtual Network の略称で、Azure 上で構築できる仮想論理ネットワークのことです。
VNet は仮想マシンを配置するために必要なリソースとなります。
VNetは、作成単位毎に独立しています(他ハンズオン参加者が作成したVNetとは接続されていません)。
VNet内に、サブネットを作成し細かくセグメントを分離することができます(同一VNet内のサブネット間通信は、既定では許可されています)
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-160.png)
ネットワークセキュリティグループ(NSG)
アクセスリストのようなものです。IPアドレスやポートなどを指定して、通信の許可/ブロックを設定できます。
NSGは、サブネットや仮想マシンに対して適用できます。
既定では、「インターネット → 仮想マシン」の通信はブロックされています。
本勉強会ではセキュリティ的な理由により、「仮想マシン → インターネット」の通信もブロック(HTTPのみ許可)する設定を入れています。
ハンズオン
全体
前提
- 参加者の環境は各自独立しています(そのため、IPアドレスの重複など気にする必要はありません)
- 会社の端末では、会社独自のセキュリティ設定などの理由により、ログインできない場合がありますので、個人所有端末の利用を推奨します。
- 本手順は、ブラウザの環境として、EdgeのInPrivate ウィンドウ、または、Chromeのシークレット ウィンドウの使用を前提としています。
- ハンズオンの説明では設定値として「user××」という値が登場しますが、「××」の部分は各ハンズオン参加者のユーザアカウント名(west-sec-user××)の末尾の数字を使用してください。
- 本資料で説明しているリソース以外は作成しないようにしてください(想定以上の課金を防ぐため)。
参加者によってハンズオンで利用するAzure環境が異なります
①WEST-SECのAzure環境利用者(本勉強会申し込み先着50名のハンズオン枠獲得された方)
すべてのハンズオンに挑戦できます。
②MSサンドボックスのAzure環境利用者
一部のハンズオン(「3.5. 仮想マシンの設定(Webサーバ構築)」まで)挑戦できます。
「3.6 ネットワークセキュリティグループ設定」以降も一部設定ができたり、設定画面が確認できます。
(MSサンドボックス環境の制限時間は1時間です。時間切れになった後、再度MSサンドボックスを有効化できますが、最初の1時間で作成したAzureリソースは削除されてしまいます)
MSサンドボックス利用開始方法は以下の記事にまとめています。
Microsoft Learn 検証環境(サンドボックス)利用手順【所要時間10分】
本勉強会の説明は、参加者①向けに実施します。
参加者①と参加者②で一部ハンズオン手順が異なる場合があります。手順が異なる箇所は以下のようテキスト内に補足を入れています。
【MSサンドボックスのAzure環境利用者(参加者②)向けの補足】
(補足内容)
MSサンドボックスのAzure環境は、事務局サポート対象外となります。ハンズオンがうまく進まない時は、「個人アカウントの再作成&MSサンドボックス有効化」で解決する場合があります。
ハンズオン開始前の準備(参加者②)
次の項から実際のAzure操作に入りますので、参加者②は「2.サンドボックス有効化手順(所要時間3分)」まで、今このタイミングで実施してください。
ハンズオン開始前の準備(参加者①)
・事務局から本日利用いただくAzure アカウントが記載されたスプレッドシートをご連絡します。
・スプレッドシートに、「connpassのユーザ名」と「ご自身のグローバルIP」を記載してください。
・ご自身のグローバルIPは以下のサイトにアクセスいただくことで確認できます。
https://www.cman.jp/network/support/go_access.cgi
ハンズオンのゴール
以下のようなシステムを構築していきます。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-147.png)
Azure Portalへログイン
以下のURLへアクセスします。
https://azure.microsoft.com/ja-jp/get-started/azure-portal
「サインイン」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-64-1024x395.png)
認証が求められるので、自分用のアカウントを入力し、サインインします。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-159.png)
初回ログイン時、パスワード変更が求めらますので、パスワードを変更します。
初回ログイン後のみ、以下のガイダンス画面が表示されますので、「キャンセル」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-66.png)
以下のような画面が表示されれば、Azure Portalへのログイン成功です。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-67-1024x378.png)
仮想ネットワーク作成
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-153.png)
①検索窓に「仮想ネットワーク」と入力
②サービスより「仮想ネットワーク」を選択 ※間違って「仮想ネットワーク(クラシック)」など別サービスを選択しないように注意してください
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-2-1024x468.png)
③「作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-3.png)
④以下の値を入力(既定値からの変更点のみ記載)
リソースグループ: 「rg-west-sec-user××」を選択してください(他のリソースグループを選択しないように注意してください)
仮想ネットワーク名:vnet-west-sec-user××
地域:(Asia Pacific) Japan West を選択(全員共通)
【MSサンドボックスのAzure環境利用者(参加者②)向けの補足】
リソースグループは1つのみ選択可能ですので、選択可能なリソースグループを選択してください。
以降の手順で、リソースグループを選択するときも同様の操作をしてください。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-4.png)
⑤「IPアドレス」タブを選択
⑥「ゴミ箱」アイコンを選択( 本ハンズオン環境のセキュリティを確保するために必要な操作です。本来は実施する必要がない操作です)
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-182.png)
⑦「確認および作成」タブを選択
⑧「作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-183.png)
デプロイ画面に遷移します。デプロイまで待ちます(30秒程度)
⑨以下の画面で「デプロイが完了しました」と表示されれば、OKです。
⑩「リソースに移動」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-190.png)
⑪「設定」→「サブネット」→「+サブネット」 を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-191-1024x478.png)
「サブネットの追加」画面が表示されるので、下にスクロールします。
⑫ネットワークセキュリティグループの項目で「west-sec-nsg」を選択します。
この「west-sec-nsg」は、本ハンズオン環境のセキュリティを確保するために事務局が事前に準備したネットワークセキュリティグループとなります。このネットワークセキュリティグループを選択しないと、サブネットを追加できません。
【MSサンドボックスのAzure環境利用者(参加者②)向けの補足】
ネットワークセキュリティグループは「NSG-japanwest」を選択してください
⑬「追加」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-192.png)
⑭ サブネットが一つ追加されていることを確認します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-193-1024x267.png)
仮想マシンの作成
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-154.png)
①検索窓に「仮想マシン」と入力
②Marketplaceの「仮想マシン」を選択 ※間違って「仮想マシン(クラシック)」など別サービスを選択しないように注意してください
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-8-1024x529.png)
③以下の値を入力(既定値からの変更点のみ記載)
■基本
リソースグループ: 「rg-west-sec-user××」を選択してください。※間違って「tsuruta-west-sec(管理用リソースグループ)を選択しないように注意してください。
仮想マシン名:Web-server1-user××
地域:(Asia Pacific) Japan West を選択
④「すべてのイメージを表示」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-161.png)
Marketplaceの画面に遷移します。
検索窓に「Ubuntu Server 22.04 LTS」と入力し検索します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-162-1024x386.png)
⑤表示されるイメージの中から「Ubuntu Server 22.04 LTS」を見つけてください(似たような名前のイメージがあるので、別のイメージを選択しないように注意して下さい)
⑥「選択」をクリックし、「Ubuntu Server 22.04 LTS -x64 Gen 2」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-194.png)
「仮想マシンの作成」画面に戻ります。
⑦「すべてのサイズを表示」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-195.png)
「VMサイズ選択」の画面に遷移します。
⑧ VMサイズとして「DS1_v2」を選択します。※本ハンズオンでは、このVMサイズしか選択できないように制限をかけています
⑨「選択」ボタンを選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-196-1024x520.png)
「仮想マシンの作成」画面に戻りますので、少し下に画面をスクロールします。
⑩ Ubuntu OSの管理者アカウントを以下の値で設定します。
認証の種類:「パスワード」を選択
ユーザ名:myadmin
パスワード:好きな値を設定(後程使うので、メモで控えておいてください)
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-197.png)
⑪画面上部の「ディスク」タブを選択
⑫OSディスクの種類:Standard HDD(ローカル冗長ストレージ)を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-198.png)
⑬画面上部の「ネットワーク」タブを選択
⑭仮想ネットワーク:「3.3章 仮想ネットワーク作成」で作成した仮想ネットワーク(vnet-west-sec-user××)を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-199.png)
⑮画面上部の「確認および作成」タブを選択
⑯「検証に成功しました」と表示されていることを確認(別内容が表示されている場合、設定値が間違っている可能性があります)
⑰「作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-200.png)
デプロイ画面に遷移します。デプロイまで待ちます(1~2分程度)
⑱以下の画面で「デプロイが完了しました」と表示されれば、OKです。
⑲リソースに移動を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-201-1024x453.png)
⑳作成した仮想マシンのページが表示されるので、「パブリックIPアドレス」の値を確認します(後程使うので、メモで控えておいてください)
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-202-1024x463.png)
仮想マシンの設定(Webサーバ構築)
仮想マシンへのログイン
仮想マシンへのログインは、sshで接続します。
コマンドプロンプトを立ち上げます
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-24.png)
以下のコマンドを入力し、キーボードの「Enter」ボタンを押下し、仮想マシンへ接続します。
ssh myadmin@×.×.×.×
×.×.×.×は、仮想マシンのパブリックIPアドレスに置き換えてください(パブリックIPアドレスは、こちらで確認した値です)
(例)仮想マシンのパブリックIPアドレスが、20.27.245.168」の場合、コマンドは「ssh myadmin@20.27.245.168」となります。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-33.png)
本当に接続するか確認されるため、「yes」と入力し、「Enter」ボタンを押下します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-203.png)
パスワードの入力が求められますので、仮想マシン作成時に指定した値(こちらで設定した値)を入力し、「Enter」ボタンを押下します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-204.png)
以下の画面が表示されれば、仮想マシンへのログイン成功です。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-205.png)
Webサーバ(Apache)インストール
コマンドは、コピー&ペーストで利用いただけます。
まずは、インストール前の下準備(パッケージリストの更新)コマンドを入力し「Enter」を押下します。
sudo apt update
次にインストールコマンドを入力し「Enter」を押下します
sudo apt install apache2
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-35.png)
インストールを本当に進めるか、確認されるため、大文字「Y」を入力し、「Enter」ボタンを押下します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-36-1024x372.png)
Webサーバ(Apache)のインストールが始まりますので、30秒程度待ちます。
画面の動きが止まったら(インストールが完了したら)、以下のコマンドを入力し、「Enter」ボタンを押下します。
このコマンドは、Webサーバ(Apache)が、ちゃんとインストールできているか確認するためのコマンドです。
sudo systemctl status apache2
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-37.png)
以下の通り、active(running)と表示されていれば、Webサーバ(Apache)のインストールは成功しています。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-38.png)
★Apacheのインストールがうまく進まない場合は、再度「sudo apt install apache2」コマンドを入力してみてください
ネットワークセキュリティグループ設定
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-155.png)
次に、Webサーバへの接続(http)できることを確認します。
既定では外部からのhttp通信はネットワークセキュリティグループで拒否されています。
そのため、Webサーバに接続しようとしても、失敗します。
ブラウザのURL欄に、仮想マシンのパブリックIPアドレスを入力しても、タイムアウトします。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-78-1024x521.png)
【MSサンドボックスのAzure環境利用者(参加者②)向けの補足】
参加者②はこの時点でWebサーバにアクセス可能となります(Apache2 Default Pageが表示されるはずです)
HTTPを許可するために、ネットワークセキュリティグループの規則を追加します。
①Azure Portalのホーム画面を表示します
ホーム画面上に、作成したVM(Web-server1-user××)が表示されているため、選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-46-1024x448.png)
②仮想マシンのページに移りますので、「ネットワーク設定」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-48-1024x594.png)
③ 仮想マシンに適用されているネットワークセキュリティグループ名(west-sec-nsg)を選択します。
このネットワークセキュリティグループは、仮想マシンが配置されているサブネットに適用されています(こちらで設定しました)
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-208-1024x319.png)
ネットワークセキュリティグループのページ遷移します。
④ ネットワークセキュリティグループ(west-sec-nsg)に設定されている受信ポートルールを確認します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-209-1024x335.png)
ハンズオン環境のセキュリティ維持のため、全員共通のネットワークセキュリティグループ(west-sec-nsg)を適用しています。
ネットワークセキュリティグループ(west-sec-nsg)への規則追加(インターネットからのHTTPの許可)は、事務局にて行います。(⑤~⑧の操作は、事務局の操作になります)
⑤「受信セキュリティ規則」を選択
⑥「追加」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-210-1024x389.png)
⑦サービスとして「HTTP」を選択し、
⑧「追加」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-211.png)
⑨ブラウザのURL欄に、仮想マシンのパブリックIPアドレスを入力します。
以下の画面(Webサーバのトップ画面)が表示されれば、OKです。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-212.png)
(演習)2台目のWebサーバを構築しよう
以下の手順を繰り返し、2台目のWebサーバを構築してください。
設定内容で1台目と異なる点は、「仮想マシン名」のみです。
以下の通り、2台目の仮想マシン名は「web-server2-user××」としてください。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-173.png)
ロードバランサ作成
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-156.png)
ロードバランサを作成する前に、2台のWebサーバのトップページを変更します(ロードバランサ経由でどちらのWebサーバに接続するか識別するため)
2台のWebサーバにそれぞれSSH接続して、以下のコマンドを入力します(Webサーバへの接続方法を忘れた方は、こちらに戻って確認ください)
web-server1に入力するコマンド
echo "web-server1" | sudo tee /var/www/html/index.html
web-server2に入力するコマンド
echo "web-server2" | sudo tee /var/www/html/index.html
このコマンドにより、それぞれのWebサーバに接続時にサーバ名が表示されるようになります。
ブラウザに、web-server1とweb-server2のパブリックIPアドレスをそれぞれ入力して、Webサーバへアクセスしてみてください。以下の表示になるはずです。
web-server1への接続結果
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-80.png)
web-server2への接続結果
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-81.png)
ロードバランサから通信を受けるweb server ×2 の準備ができましたので、ロードバランサを作成していきます。
①検索窓に「ロードバランサ」と入力
②サービスより「ロードバランサ」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-85.png)
③「+ 作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-86.png)
④以下の値を入力
リソースグループ: 「rg-west-sec-user××」を選択してください(他のリソースグループを選択しないように注意してください)
名前:LB-user×× (××の部分は、各自のユーザアカウントの数字入力ください)
種類:パブリック
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-87.png)
⑤画面下部の「次:フロントIP構成」を選択します。
「フロントIP構成」を設定することで、クライアントからHTTPリクエストを受け付けるパブリックIPアドレスを設定します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-88.png)
⑥「フロントエンドIP構成の追加」を選択します
⑦以下を入力
名前:front-ip-user××
⑧「新規作成」をします。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-89-1024x319.png)
⑨以下を入力
名前:public-ip-user××
⑩「保存」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-90.png)
⑪再度、「保存」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-91-1024x533.png)
⑫画面下部の「次:バックエンドプール」を選択します
「バックエンドプール」設定では、LBが通信を割り振る先のWebサーバを指定します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-92.png)
⑬「バックエンドプールの追加」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-93.png)
⑭ 名前:backend-user×× (××の部分は、各自のユーザアカウントの数字入力ください)
⑮ 仮想ネットワーク:「3.3章 仮想ネットワーク作成」で作成した仮想ネットワーク(vnet-west-sec-user××)を選択(Webサーバが配置されている仮想ネットワークを指定します)
⑯「追加」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-94.png)
⑰ 仮想マシンとして、先ほど作成したWebサーバ2台が表示されるので、チェックボックスにチェックを入れます
⑱「追加」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-95-1024x446.png)
⑲「保存」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-96.png)
⑳画面下部の「次:インバウンド規則」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-97.png)
⑬「負荷分散規則の追加」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-98.png)
㉒以下を入力
名前:LB-rule-user××
フロントエンドIPアドレス:「front-ip-user×× (作成予定)」を選択
バックエンドプール:backend-user××
ポート:80
バックエンドポート:80
㉓ 正常性プローブの「新規作成」を選択
正常性プローブは、LB配下のWeb serverがHTTPの応答できる状態にあるか定期的に確認する機能となります。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-100.png)
㉔以下を入力
名前:probe-user××
㉕「保存」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-101.png)
㉖「保存」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-102.png)
㉗「確認および作成」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-103.png)
㉘「作成」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-105.png)
㉙以下の画面で「デプロイが完了しました」と表示されれば、OKです。
㉚「リソースに移動」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-107-1024x397.png)
㉛「設定」→「フロントIP構成」を選択します
㉜ IPアドレスを確認し、メモします。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-213-1024x467.png)
㉝ブラウザのURL欄に、㉜でメモしたパブリックIPアドレスを入力します。
以下のどちらかのページが表示されるはずです。
ブラウザの更新ボタンを何度かクリックし、接続先のサーバが変わる(ページの表示が変わる)ことを確認しましょう。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-109-1024x321.png)
DNSゾーン設定
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-157.png)
WebサーバにFQDNでアクセスできるように、DNSの設定をしていきます。
①検索窓に「DNSゾーン」と入力します。
②「DNSゾーン」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-110-1024x538.png)
③「west-sec-demo.com」を選択します。このドメインは事前に事務局側で準備したドメインです。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-112.png)
④「レコードセット」を選択します
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-113.png)
⑤「追加」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-114.png)
⑥ 名前:user×× と入力します
⑦ロードバランサのフロントエンドIPを入力します。
⑧「保存」を選択します。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-115.png)
⑨ブラウザのURL欄に、「http://user××.west-sec-demo.com」を入力します。
FQDNを使い、ロードバランサ経由でWebサーバにアクセスできるようになりました。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-117.png)
アラート設定
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-214.png)
LBのノードであるWebサーバのHTTPポートがダウンした際に、システム管理者にアラートメールが送付させるように設定します。
アクショングループ作成
まずは、アラートメールの送付先を設定します。
①検索窓に「アラート」と入力
②サービスより「アラート」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-119-1024x439.png)
③「アクショングループ」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-120-1024x456.png)
④「作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-121.png)
⑤以下の値を入力(既定値以外の変更箇所)
リソースグループ: 「rg-west-sec-user××」を選択してください(他のリソースグループを選択しないように注意してください)
アクショングループ名:ag-user××
表示名:ag-user××
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-122.png)
⑥「通知」タブを選択
⑦通知タイプとして「電子メール/SMS メッセージ/プッシュ/・・・」を選択
⑧名前として「user××」を入力
⑨「電子メール」にチェックを入れる
⑩受信可能なメールアドレスを入力
⑪「OK」を選択
⑫「確認と作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-123-1024x514.png)
「作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-124.png)
アクショングループが作成されると、⑩で入力したメールアドレスに、Azure (azure-noreply@microsoft.com) から以下のメールが届きます(「アクショングループに追加されました」的な内容のメールです)
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-126.png)
アラート設定
①検索窓に「ロードバランサ」と入力
②サービスより「ロードバランサ」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-128.png)
③先ほど作成したロードバランサ(名前:LB-user××)を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-129-1024x328.png)
④「監視」→「警告」を選択
⑤「作成」を選択
⑥「アラートルール」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-215-1024x478.png)
⑦ シグナル名として「Health Probe Status」を選択
LBを作成するときに、同時に作成した「正常性プローブ」の確認結果が、監視対象として利用されるようになります。
正常性プローブは、LB配下のWeb serverがHTTPの応答できる状態にあるか定期的に確認する機能となります。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-132.png)
既定のアラートロジックは、ロードバランサ配下のノードで1つでも障害が発生した(HTTP応答できなくなった)場合に障害を検知する監視条件となっているため、既定のアラートロジックをそのまま使用します。
⑧ルックバック期間として「1分」を選択
「ルックバック期間」は、障害発生からアラート通知が発出されるまでの時間を決めるパラメータです。
ルックバック期間が短いほど、アラート通知が早くなります。
⑨「次へ:アクション」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-133.png)
「アクション」タブでは、監視条件に合致した際のアクションを設定します。
⑩「アクショングループの選択」を選択
⑪ 先ほど作成したアクショングループ名(aq-user××)にチェック
⑫「選択」を選択
⑬「次へ:詳細」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/07/image-11-1024x464.png)
⑭ アラート名として「alert-user××」と入力
⑮「確認および作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-135.png)
⑯ 「作成」を選択
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-136.png)
アラート試験
ノード(Webサーバ)に障害が発生した際に、アラートが指定したメールアドレスに送信されるか確認していきます。
web-server2のApacheを停止して、擬似的な障害を発生させていきます。
web-server2にSSH接続して、以下のコマンドを入力します(Webサーバへの接続方法を忘れた方は、こちらに戻って確認ください)
以下のコマンドで、web-server2のApacheが停止します。
sudo systemctl stop apache2
(参考)再度Apacheを起動するには、上記コマンドの「stop」の部分を「start」に変更してください。
続けて、Apacheの状態を確認する以下のコマンドを入力します。
sudo systemctl status apache2
以下のように、「Active欄」の項目が「inactive(dead)」になっていれば、Apacheが停止されています。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-118.png)
数分以内に、以下のアラートメールが届きます。
障害発生からアラート通知が発出されるまでの時間(ルックバック期間)は、1分と設定しましたが、Azureの仕様により、アラートが通知されるまで、実際には「ルックバック期間(1分)+数分」かかります。
![](https://mitsurublog.com/wp-content/uploads/2024/06/image-137.png)
ディスカッション
コメント一覧
まだ、コメントがありません