Azureで基本的な構成を構築してみる②（ALB、DNS作成）

#1. 背景
前回の記事続きになります。Azureの基本的な構成を作ってみました。

[Azureで基本的な構成を構築してみる①（前提、ネットワーク・VM作成）](https://qiita.com/MAKOTO1995/items/a838e70918eefca98dfa)
[Azureで基本的な構成を構築してみる②（ALB、DNS作成）](https://qiita.com/MAKOTO1995/items/8276122169d727d81d96)　←今ここ
[Azureで基本的な構成を構築してみる③（MySQL作成, VMからのSSL接続）](https://qiita.com/MAKOTO1995/items/bab048556921f10b4dac)

#2. アーキテクチャ図
今回はアプリケーションLBの作成と、DNSを用いて独自ドメインによるアクセスを可能にしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/e5e08a40-d198-9c60-b016-dbc0a487d81d.png)




#4. 構築手順
###4.5 ApplicationGateway作成
Azureポータルで「LB」と打つと「ロードバランサー」がヒットします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/181293f9-18a8-9b37-ae1d-5cf062786d75.png)

自分は最初、これがAWSでいうALBだと勘違いして作成してしまいましたが、**Azureの「ロードバランサー」は第４層で動作するNLB**になります。
今回、記事には書いてませんが要件でロードバランサーでSSLオフロードする必要があるため、NLBだと要件が満たせません…。
**第７層で動作するALBは、Azureでは「Application Gateway」になります**。初見だと分かりづらいですね。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/29e76e9a-1d72-44e7-55b5-00e01f6ec8bc.png)
Azureポータルで「ロードバランサー」の画面に移動 → 「Application Gateway」 → 「＋作成」

ApplicationGatewayのレベルとしてv1とv2がありますが、公式サイト見て料金計算してみたところ、v2だと固定コストだけでも、¥約２万/月もかかります…。
一方v1だと固定コストで最低 ¥約2千/月みたいです。
Azureとしてはv2が推奨されていますが、アプリケーションは運用初期でコストを抑えたいプラス冗長性不要なので、今回はv1を選択しました。

【基本】タブ
リソースグループ：VMを同じグループ選択
レベル：Standard
インスタンス数：1
SKUサイズ：S
HTTP2：有効
仮想ネットワーク：VMと同じVnet選択
サブネット：Vnet作成時に作った、AGW専用のサブネット選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/c1426b6b-b58b-2a56-70c4-5a14c4c35aaf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/e40a21a6-51e3-9714-95e1-8c580ae6ae38.png)

【フロントエンドの数】
ApplicationGatewayに割り当てるIPを設定します。
・フロントエンドの種類：両方
・パブリックIP：新規作成（Standardレベルでは動的IPしか選べない）
・プライベートIPの指定：任意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/aff98eeb-46b1-191c-cdb0-69f779054621.png)


【バックエンドの数】
LBの背後に置くVMを設定します。
・バックエンドプールを新規作成。ターゲットに前記事で作成したVMを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/b1d9bb71-215b-86ac-910a-8bad17b962c8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/8f5dbcad-b65f-4614-82d0-88ec6806bcdc.png)

【構成】
ここではリスナー、（AWSでいう）ターゲットグループを設定します。
「ルーティング規則の追加」を押下」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/ad2cf1f3-022e-14bb-9e43-f5d24d210aff.png)

○「リスナー」タブ
LBが外部からリッスンするポートを設定します。
 ・フロントエンドIP：パブリック
　　・プロトコル：HTTP（SSL化する場合はHTTPSを選択するが、その前に一旦HTTPで接続を試す）
　　・ポート：80（SSL化するなら443）
　　・リスナーの種類：Basic
　　・エラーページのURL：いいえ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/11a4d362-1b8d-bdbe-563b-4bbda0a312d8.png)

○「バックエンドターゲット」タブ
どのバックエンドプールを使うか、バックエンドプールのVMの何番ポートに接続するか等をここで設定します。
HTTP設定を新規作成↓
　　・設定名：任意
　　・バックエンドプロトコル：HTTP
　　・バックエンドポート：80
　　・追加設定はデフォルトのまま
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/4f098f40-efa2-da75-6248-12835df6b3c4.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/745d8166-1c15-15d8-a5ff-1f267ddeb630.png)


　→作成
　（ApplicationGatewayのデプロイには20~30分ほどかかりました。）

作成後、ALBのパブリックIPから、ブラウザよりVMのWebサーバ画面確認できればOK。

###4.6 VMのセキュリティグループ設定
ALBが作れたので、クライアントからはバックエンドのVMに直接アクセスできないように設定します。
Azureポータルで「Virtual Machines」 → 前記事で作成したVM → 「ネットワーク」と移動　→ 「受信ポートの規則」タブ
HTTP規則を編集します。
・ソース：IP Adress
・ソースIPアドレス：ApplicationGroupの所属するサブネットのCIDR
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/3221e37f-eefd-8f87-4f83-1fdd9a699ffe.png)

→保存
これで、VMのパブリックIPではブラウザでアクセスできなくなります。


###4.7 DNS作成
お名前ドットコムから取得した独自ドメインをAzureで管理するための設定をしていきます。
DNSゾーンやAレコード作成は、AWSのRoute53が使えていれば難なくできると思います。

####DNSゾーン作成
Azureポータルで「DNSゾーン」に移動 → 「+作成」
【基本】タブ
・リソースグループ：VM, AGW等と同じリソースグループ選択
・名前：使用する独自ドメインを入力（ここがゾーン名となる）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/341c3fea-ca45-300c-e476-cc8257ac6949.png)
→作成


####Aレコード登録
作成したゾーンに移動し、Aレコード（エイリアスレコード）として、ターゲットに上記で作成したAGWのパブリックIPを選択して保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/8ab5cccb-00d8-bb74-e1d2-dc797d2ff96c.png)

####NSレコードのメモ
後述の手順で、お名前.com側でAzureDNSのNSレコードを設定する必要があるため、このゾーン名のNSレコード4つをメモしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/0f205d10-6300-612c-5775-25975bb2c4ab.png)



###4.8 お名前.com側のネームサーバ設定
お名前ドットコムにログインして独自ドメインの管理するネームサーバをAzureDNSのものに変更します。
上記でメモしたNSレコードを４つ入力して更新します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577028/e0306793-5a6c-5df7-1d9e-156479b3880f.png)

30分〜１時間ほど経ってから、ドメインに対してAzure DNSのネームサーバが登録反映されているか確認してみます。
以下のコマンドにより、AzureのNSが表示されればOKです（場合によっては反映にもっと時間を要するかもしれません。）

```
$ dig -t NS <ドメイン名> +short   
nsx-xx.xxxxxxxxxxx.xxx.
nsx-xx.xxxxxxxxxxx.xxx.
nsx-xx.xxxxxxxxxxx.xxx.
nsx-xx.xxxxxxxxxxx.xxx.
```

最後にブラウザを開き、```http://<ドメイン名>/```でページ見れるか確認してみましょう。

次の記事では、DBとしてMySQLを構築していきます。