Azure 仮想マシンスケールセット 手動スケール

スポンサーリンク

Microsoft Azureの仮想マシンスケールセットは、同一設定の仮想マシンの定義で負荷に応じた自動的なサーバ台数の増減(オートスケール)が可能です。このページでは、オートスケールの前に、基本操作となる手動スケールの方法について説明します。

オートスケールの方法は「Azure 仮想マシンスケールセット 自動スケール」を参照ください。

前提

公式ドキュメント

参考になる公式ドキュメントを以下に示します。

事前設定

以下、リソースグループを作成します。

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」の画面には何も表示されません。

仮想マシンスケールセットの状態確認 01

「すべてのサービス」から「コンピューティング」「Virtual Machine Scale Set」「仮想マシンスケールセット名(MyScaleSet01)」「インスタンス」の順に画面遷移すると、作成された仮想マシンの一覧を閲覧できます。さらに、この画面で仮想マシン(インスタンス)を押下すると、その詳細情報が見られます。

仮想マシンスケールセットの状態確認 02

詳細情報は以下のように表示されます。

仮想マシンスケールセットの状態確認 03

仮想マシンへの接続

仮想マシンへの接続方法を調査するには、以下のようなコマンドを実行します。すると、仮想マシンへ接続するための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"
}
タイトルとURLをコピーしました