Azureでの仮想マシンスケールセットの構築方法

#はじめに
#仮想マシンスケールセット（VMSS）
仮想マシンスケールセット（virtual machine scale sets : VMSS）では、複数の仮想マシン（VM）を一つのグループとしてまとめ、スケジュール、もしくは負荷に従いサーバの台数を自動で調整することができる。
アプリケーションの可用性が向上するとともに、多数のVMの一括管理が可能になる。
詳しくは[こちら](https://docs.microsoft.com/ja-jp/azure/virtual-machine-scale-sets/overview)。
##VMSSの作り方
下の写真の画面から「追加」をクリックする。
![vmss1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/3de961df-1f8c-1594-6b5c-400d1831f14c.png)
「ネットワークインターフェース」の項で鉛筆マークを選択し、NICに割り当てるネットワークセキュリティグループ（NSG）をなしにする。
（NICに割り当てられるNSGを個別で設定することもできるが、今回はVMSS構成のフローの紹介のため割愛する。）
![vmss2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/28c1a0d5-107c-600f-313d-c6396d89de04.png)
![vmss3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/fe78cd93-6e2b-93cf-2115-6a6d76b54c2b.png)
残りの項はデフォルトの設定のまま進める。
![vmss4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/182b8a28-2ba2-82e8-e2b2-c60cbf7deaa8.png)
ちなみに、「拡大縮小中」の項の「スケーリングポリシー」を「カスタム」にすると、下の写真のような画面が現れ、もろもろの設定をすることができる。今回は、拡大縮小のポリシーを、ここからではなく別途作成、適用する。
![vmss5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/7b9d8ca4-7d35-355a-175b-1bc157110728.png)
vmssの作成が終わると、「仮想マシンのスケールセット」を含め、以下のリソースが作成されることとなる。
![vmss6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/27085df4-6390-e782-6cd7-0a6f3f97a5c5.png)
##VMへのリモートアクセス
作成したパブリックIPアドレスを選択し、パブリックIPアドレスを「リモートデスクトップ接続」にコピペ。
**ただし、現状ではまだリモートログインに成功しない。**
**仮想NWにNSGが割り当てられていないためである。**
![nsg3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/ec774fea-22cb-c78b-92bf-875d68497357.png)
NSGが割り当てられていない場合、暗黙のdeny的に受信フローは禁止される。[こちら](https://docs.microsoft.com/ja-jp/azure/load-balancer/concepts-limitations#load-balancer-sku-comparison)に詳しい。
そのため、NSGを作成し、RDPとHTTP、HTTPSのトラフィックを許可する。
![nsg1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/59af0bce-3255-c4cc-ff50-50078b3453f6.png)
![nsg2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/d7f32ec7-0cf3-332f-ef26-20f2a768a0a8.png)
作成したNSGを、VMSSに紐づいている仮想NWに適用する。
![nsg4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/dc06c41a-e408-97d8-e0a4-70fce65a2b4d.png)
そのうえで、VMSSの「インバウンドNAT規則」を確認する。パブリックIPアドレスはロードバランサー（LB）に割り当てられており、各トラフィックはポート番号に従ってバックエンドプールのVMに割り振られる。natpool2のVMにリモートログインする場合は、パブリックIPアドレスに加えてポート番号も指定することで、リモートログインが可能になる。
192.168.0.4:50002　といった具合である。
![nsg5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/2299d9a7-b447-a13d-8a41-7f3ca4251d35.png)
###ちなみに
パブリックIPアドレスの「構成」から、任意のDNS名をパブリックIPアドレスに紐づけることができる。
![DNS1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/fc8217ec-3ab3-e5ef-2a4f-8883bb918350.png)
##スケールアウト/スケールインのルールの設定
VMSSの「拡大縮小中」の「Choose how to scale resource」から「カスタム自動スケーリング」を選択。「規則を追加する」をクリック。
![rule1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/2ab800fa-e25b-709f-889f-c7bd6c6e64b4.png)
着目するメトリックと、インスタンスを追加/削減する閾値を定める。
今回は、各インスタンスの10分間の平均CPU使用率に着目し、平均70%を上回ればインスタンスを1つ追加、40%を下回れば1つ削減、というルールを作成した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/8b1321a9-7e71-a2e5-f98f-9050b7a7b334.png)
スケールアウトとスケールインの設定を併せて行うことが重要である。
###ちなみに
ここで言う「10分間のCPU使用率の平均」とは、設定した時間間隔（ここでは10分）における、時間グレインの平均CPU使用率のことである。
時間グレインとは、CPU値などの値を取得する間隔のこと。1分の時間グレインだと、10分間のうちに算出されたCPU使用率が10個あるので、それを平均することになる。
##スケールアップ/ダウン
VMのサイズの変更は、「サイズ」から行う。変更したいサイズを選択したら、「サイズの変更」をクリックする。
![scaleup_down1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/9ac3f1bf-9983-32b7-77a1-09b115cfab34.png)
##おまけ
VMをwebサーバとして活用したい場合、スケールセット内でVMが自動で増減するたびにIISが自動でインストールされるように設定すると、管理が非常に容易になる。そうしなければ、VMが増減するたびに手動でIISをインストールしなくてはならないためである。
VMSSの「拡張機能」を選択する。
![IIS1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/3ae13102-c0ad-fa5e-977d-8b0f3dc83c08.png)
Powershell Desired State Configurationを選択する。
![IIS2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469705/bebffa9f-6196-715b-febe-b4cc6f964844.png)
ここからは全くわからないので割愛する。
##便利なサイト
[料金計算ツール](https://azure.microsoft.com/ja-jp/pricing/calculator/)
Azureリソースを使用したときにかかる費用を見積もることができる。
例えばVMだと、OSをLinuxにしたときはどうか、サイズを変動させるとどうか、など、様々なパターンでの確認ができる。
行った見積もりは、自分のPCに保存することができるので、チーム内での共有も容易。