Microsoft Azureの仮想マシンスケールセットは、同一設定の仮想マシンの定義で負荷に応じた自動的なサーバ台数の増減(オートスケール)が可能です。このページでは、オートスケールの前に、基本操作となる手動スケールの方法について説明します。
オートスケールの方法は「Azure 仮想マシンスケールセット 自動スケール」を参照ください。
前提
公式ドキュメント
参考になる公式ドキュメントを以下に示します。
- Azure の仮想マシン スケール セットのフレキシブル オーケストレーション
- Azure CLI を使用してフレキシブルなスケール セットに仮想マシンを作成する
- チュートリアル:Azure CLI を使用した仮想マシン スケール セットの作成および管理
事前設定
以下、リソースグループを作成します。
az group create --name MyResourceGroup --location japaneast
仮想マシンスケールセットの最小設定
仮想マシンスケールセットの作成
以下のようなコマンドで仮想マシンスケールセットを作成します。仮想マシンスケールセットを作成すれば、そのスケールセットの中に自動的に2台の仮想マシンが作成されます。
az vmss create \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --image UbuntuLTS \ --vm-sku Standard_B1s \ --admin-username azureuser \ --ssh-key-values ~/.ssh/authorized_keys
仮想マシンの状態確認
仮想マシンスケールセットに含まれる仮想マシン一覧を表示するには以下のコマンドを使用します。
$ az vmss list-instances \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --output table InstanceId LatestModelApplied Location ModelDefinitionApplied Name ProvisioningState ResourceGroup VmId ------------ -------------------- ---------- ------------------------ -------------- ------------------- --------------- ------------------------------------ 1 True japaneast VirtualMachineScaleSet MyScaleSet01_1 Succeeded MyResourceGroup 93a5567c-01d6-4570-829f-8afc5d952bde 2 True japaneast VirtualMachineScaleSet MyScaleSet01_2 Succeeded MyResourceGroup b9e95b8c-7321-4bbc-93b3-362c8b67709c
各仮想マシンの詳細情報を閲覧したい場合は、以下のよう引数にinstance-idを指定します。instance-idは前述の仮想マシン一覧表示を参照ください。
$ az vmss get-instance-view \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --instance-id 1 { "assignedHost": null, "bootDiagnostics": null, "computerName": "myscae302000001", "disks": [ { "encryptionSettings": null, "name": "MyScaleSet01_MyScaleSet01_1_OsDisk_1_c7b1a582d8444b6eae3841c806769ac3", "statuses": [ { "code": "ProvisioningState/succeeded", "displayStatus": "Provisioning succeeded", "level": "Info", "message": null, "time": "2022-03-18T10:32:27.542767+00:00" } ] } ], <omitted>
ポータルで仮想マシンの状況を確認するには「Virtual Machine」ではなく「Virtual Machine Scale Set」を閲覧します。以下スクリーンショットのように「Virtual Machine」の画面には何も表示されません。
「すべてのサービス」から「コンピューティング」「Virtual Machine Scale Set」「仮想マシンスケールセット名(MyScaleSet01)」「インスタンス」の順に画面遷移すると、作成された仮想マシンの一覧を閲覧できます。さらに、この画面で仮想マシン(インスタンス)を押下すると、その詳細情報が見られます。
詳細情報は以下のように表示されます。
仮想マシンへの接続
仮想マシンへの接続方法を調査するには、以下のようなコマンドを実行します。すると、仮想マシンへ接続するためのIPアドレスとポート番号が表示されます。
$ az vmss list-instance-connection-info \ --resource-group MyResourceGroup \ --name MyScaleSet01 { "instance 1": "40.115.195.231:50001", "instance 2": "40.115.195.231:50002" }
特段の引数を与えずに仮想マシンスケールセットを作成すると、仮想マシンへ接続するためのロードバランスルールが自動的に作成されます。これをポータルで確認するには、「すべてのサービス」から「ネットワーキング」「ロードバランサー」「ロードバランサ名(MyScaleSet01LB)」「インバウンド NAT 規則」の順に画面遷移すると、仮想マシンへ接続するための情報を閲覧できます。
ssh等のコマンドを用いて、仮想マシンに接続可能であることを確認します。
$ ssh 40.115.195.231 -l azureuser -p 50001 The authenticity of host '[40.115.195.231]:50001 ([40.115.195.231]:50001)' can't be established. ED25519 key fingerprint is SHA256:Oj7MN9X6RQXxNBV81Gm5jFN4vDvsRmmZfuSMYtGAF2s. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '[40.115.195.231]:50001' (ED25519) to the list of known hosts. Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-1072-azure x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of Fri Mar 18 10:59:30 UTC 2022 System load: 0.01 Processes: 109 Usage of /: 4.8% of 28.90GB Users logged in: 0 Memory usage: 20% IP address for eth0: 10.0.0.5 Swap usage: 0% 0 updates can be applied immediately. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. To run a command as administrator (user "root"), use "sudo <command>". See "man sudo_root" for details. azureuser@myscae302000001:~$
仮想マシンへのスケール変更(台数変更)
仮想マシンの台数を手動で変更する場合は、以下コマンドのように引数new-capacityを与える事で台数の変更が可能です。
az vmss scale \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --new-capacity 3
操作後、仮想マシンが2台から3台へ増えた事を確認します。
$ az vmss list-instances \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --output table InstanceId LatestModelApplied Location ModelDefinitionApplied Name ProvisioningState ResourceGroup VmId ------------ -------------------- ---------- ------------------------ -------------- ------------------- --------------- ------------------------------------ 1 True japaneast VirtualMachineScaleSet MyScaleSet01_1 Succeeded MyResourceGroup 93a5567c-01d6-4570-829f-8afc5d952bde 2 True japaneast VirtualMachineScaleSet MyScaleSet01_2 Succeeded MyResourceGroup b9e95b8c-7321-4bbc-93b3-362c8b67709c 5 True japaneast VirtualMachineScaleSet MyScaleSet01_5 Succeeded MyResourceGroup 6b284c5b-b169-4e15-8b47-6d69306f2c7e
仮想マシンスケールセットの起動停止
仮想マシンスケールセット内の仮想マシンに対して、起動や停止などの操作を行う事もできます。
割り当て解除ならば以下のように操作します。
az vmss deallocate \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --instance-ids 1
仮想マシンの停止ならば以下のように操作します。
az vmss stop \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --instance-ids 2
仮想マシンの起動ならば以下のように操作します。
az vmss start \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --instance-ids 2
仮想マシンの再起動ならば以下のように操作します。
az vmss start \ --resource-group MyResourceGroup \ --name MyScaleSet01 \ --instance-ids 2
仮想マシンスケールセットの通常設定
仮想マシンスケールセットの作成
仮想マシンスケールセットも仮想マシン同等の引数を与えた構築が可能です。例えば、仮想マシンの作成と同時に、仮想ネットワークやcond-initを指定する事もできます。操作例は以下のようになります。
cat << EOF > cloud-init-nginx.txt #cloud-config packages: - nginx EOF az vmss create \ --resource-group MyResourceGroup \ --name MyScaleSet02 \ --image UbuntuLTS \ --vm-sku Standard_B1s \ --admin-username azureuser \ --ssh-key-values ~/.ssh/authorized_keys \ --vnet-name MyVnet \ --subnet MySubnet \ --nsg MyNsg \ --custom-data cloud-init-nginx.txt
仮想マシンスケールセットの変更
作成後の仮想マシンスケールセットの構成変更も可能です。操作は仮想マシンとほぼ同等です。
az vmss update \ --resource-group MyResourceGroup \ --name MyScaleSet02 \ --vm-sku Standard_DS1_v2
仮想マシンと仮想増しスケールセットの違いは、仮想マシンスケールセットの場合は変更が即時反映されません。仮想マシンスケールセットのshowコマンドは設定変更後のsku「Standard_DS1_v2」を示していますが、インスタンスは設定変更前のsku「Standard_B1s」を示しています。
$ az vmss show \ --resource-group MyResourceGroup \ --name MyScaleSet02 \ --query "sku" { "capacity": 2, "name": "Standard_DS1_v2", "tier": "Standard" } $ az vmss show \ --resource-group MyResourceGroup \ --name MyScaleSet02 \ --instance-id 0 \ --query "sku" { "capacity": null, "name": "Standard_B1s", "tier": "Standard" }
実際にインスタンスにログインすると、設定変更前のsku「Standard_B1s」相当のリソースしか割り当てられていない事が分かります。
azureuser@mysca21a1000000:~$ free -m total used free shared buff/cache available Mem: 912 144 250 0 518 624 Swap: 0 0 0 azureuser@mysca21a1000000:~$ azureuser@mysca21a1000000:~$ cat /proc/cpuinfo | grep id vendor_id : GenuineIntel physical id : 0 core id : 0 apicid : 0 initial apicid : 0 cpuid level : 20 flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear azureuser@mysca21a1000000:~$
変更が反映されるタイミングはアップグレードポリシーに従い、アップグレードポリシーは「手動」「自動」「ローリング」の3通りを選ぶ事ができます。デフォルト設定は「手動」で、「手動」の場合は以下のようなコマンドで設定変更を反映する事ができます。
az vmss update-instances \ --resource-group MyResourceGroup \ --name MyScaleSet02 \ --instance-ids 0
設定変更後、確かにskuが更新された事を確認します。
$ az vmss show \ --resource-group MyResourceGroup \ --name MyScaleSet02 \ --instance-id 0 \ --query "sku" { "capacity": null, "name": "Standard_DS1_v2", "tier": "Standard" }