VMを複数台用意しているのに、実は同じ物理ラック・同じネットワークスイッチに乗っていては冗長化の意味がありません。Azureには可用性セット(Availability Set)という仕組みがあり、VMを異なる障害ドメイン・更新ドメインへ自動で分散配置してくれます。
この記事では、Rocky Linux 9系/Ubuntu 22.04 LTSを想定環境として、Azure CLIコマンドで可用性セットを作成し、VMを2台組み込むまでのハンズオン手順を解説します。障害ドメインと更新ドメインの設計方針、可用性ゾーンとの使い分けまでカバーします。
この記事のポイント
・可用性セットはVMを異なる物理ラックに分散して障害の影響範囲を限定する
・障害ドメイン(最大3)と更新ドメイン(最大20)の2軸で分散配置を制御する
・az vm availability-set createコマンドで可用性セットを作成し、VM作成時に紐付ける
・可用性ゾーンとは保護の粒度が異なる。新規設計では可用性ゾーンを優先する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure可用性セット(Availability Set)とは何か
可用性セットは、同じアプリケーションを担う複数のVMを物理的に異なるハードウェアへ分散配置するための論理的なグループです。Azure側が「このグループのVMは同じ電源・同じスイッチを共有させない」という制約を自動で守ってくれます。可用性セットを使う主なメリットは次の2点です。
・ハードウェア障害への対応:ラック障害・電源障害が起きても、影響が一部のVMにとどまる(残りのVMは稼働し続ける)
・計画メンテナンスへの対応:Azureのホスト更新が行われるとき、同一グループのVMが同時に再起動されない
2台以上のVMを可用性セットに入れると、Azureは99.95%の稼働率SLAを保証します(Standard_B1s以上のサイズが対象)。1台だけのVMには稼働率SLAが付かないため、本番環境では必ずVMを2台以上用意することが前提です。
Linuxサーバーを長年オンプレで運用してきたエンジニアにとって、この仕組みは「ラックを分けて物理サーバーを配置する」という運用ノウハウをクラウドのAPIで宣言するイメージに近いです。
障害ドメインと更新ドメインの仕組み
可用性セットを設計する上で理解しておく核心概念が「障害ドメイン」と「更新ドメイン」です。障害ドメイン(Fault Domain)
障害ドメインは、電源とネットワークスイッチを共有する物理サーバーのグループです。同じ障害ドメインにあるVMは、ラック電源が落ちたりスイッチ障害が起きたりすると同時に影響を受けます。可用性セットのVMは異なる障害ドメインに分散されるため、1つのラックが落ちても別のラックのVMは生き続けます。設定できる障害ドメイン数は最大3(`--platform-fault-domain-count 3`)で、多くのリージョンでデフォルト値は2です。
更新ドメイン(Update Domain)
更新ドメインは、Azureが計画メンテナンス時に同時に再起動するVMのグループです。Azure側がホストのOSパッチ当てや設備メンテを行う際、同一更新ドメインのVMだけを順番に再起動します。設定できる更新ドメイン数は最大20(デフォルト5)です。5つの更新ドメインがあれば、Azureは1/5ずつ順番に再起動するため、残り4/5のVMは常に稼働し続けます。
障害ドメインと更新ドメインの設計早見表
| パラメータ | 推奨値 | 最大値 | 役割 |
|---|---|---|---|
| 障害ドメイン数 (FD) |
2~3 | 3 | 物理ラック障害からVMを保護 |
| 更新ドメイン数 (UD) |
5 | 20 | Azure計画メンテ時の同時再起動を防ぐ |
AZ CLIで可用性セットを構築するハンズオン
ここからは実際のCLIコマンドを使った構築手順を進めます。前提としてaz loginでサブスクリプションへの認証が完了していることを確認してください。Azure CLIのセットアップがまだの方は、Azureクラウド実践コースの環境準備セクションを参考にしてください。1. リソースグループと可用性セットを作成する
まず作業用のリソースグループを作成し、その中に可用性セットを定義します。# リソースグループを作成する(リージョン: japaneast) az group create \ --name rg-availset-demo \ --location japaneast # 可用性セットを作成する # 障害ドメイン数=2、更新ドメイン数=5 がよく使われる設定 az vm availability-set create \ --resource-group rg-availset-demo \ --name as-webserver \ --platform-fault-domain-count 2 \ --platform-update-domain-count 5
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-availset-demo/providers/Microsoft.Compute/availabilitySets/as-webserver", "location": "japaneast", "name": "as-webserver", "platformFaultDomainCount": 2, "platformUpdateDomainCount": 5, "sku": { "name": "Aligned" }, "type": "Microsoft.Compute/availabilitySets" }
sku.name が Aligned になっていれば、マネージドディスクとストレージ障害ドメインが連携した設定になっています。Classic と表示されている場合は、マネージドディスクが有効になっていないため、VMを作り直す必要があります。2. VMを2台作成して可用性セットに組み込む
VM作成時に--availability-set オプションで先ほど作った可用性セットを指定します。可用性セットはVM作成後に変更できません。後から追加するには既存VMを削除して作り直す必要があるため、設計段階で決めておくことが重要です。# 1台目のVMを作成する az vm create \ --resource-group rg-availset-demo \ --name vm-web-01 \ --availability-set as-webserver \ --image Ubuntu2204 \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys # 2台目のVMを作成する(同じ可用性セットを指定) az vm create \ --resource-group rg-availset-demo \ --name vm-web-02 \ --availability-set as-webserver \ --image Ubuntu2204 \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys
3. 障害ドメインと更新ドメインの割り当てを確認する
VMがどの障害ドメイン・更新ドメインに配置されたかを確認します。# vm-web-01 の配置ドメインを確認する az vm get-instance-view \ --resource-group rg-availset-demo \ --name vm-web-01 \ --query '{name:name, faultDomain:instanceView.platformFaultDomain, updateDomain:instanceView.platformUpdateDomain}' # vm-web-02 の配置ドメインを確認する az vm get-instance-view \ --resource-group rg-availset-demo \ --name vm-web-02 \ --query '{name:name, faultDomain:instanceView.platformFaultDomain, updateDomain:instanceView.platformUpdateDomain}'
# vm-web-01 { "name": "vm-web-01", "faultDomain": 0, "updateDomain": 0 } # vm-web-02 { "name": "vm-web-02", "faultDomain": 1, "updateDomain": 1 }
faultDomain の値が異なっていれば(0と1)、2台のVMが異なる物理ラックに配置されていることを意味します。同じ値になっている場合はAzureの空きリソース状況によるもので、まれに発生します。その場合はVMを再作成するか、リージョンを変えると解消することがあります。可用性セット全体のVMとドメイン情報を一覧表示するには以下のコマンドを使います。
# 可用性セットの詳細を確認する az vm availability-set show \ --resource-group rg-availset-demo \ --name as-webserver \ --output table
可用性セットと可用性ゾーンの使い分け
Azureには「可用性セット」と「可用性ゾーン(Availability Zone)」という2つの冗長化の仕組みがあります。名前が似ていますが保護する障害の粒度がまったく異なります。| 項目 | 可用性セット | 可用性ゾーン |
|---|---|---|
| 保護する障害 | 同一DC内のラック障害・計画メンテ | データセンター単位の障害(停電・火災等) |
| SLA | 99.95%(VM2台以上) | 99.99%(VM2台以上) |
| 物理的な分離 | 同一データセンター内のラック分散 | リージョン内の独立したDC(別棟) |
| 追加コスト | なし | ゾーン間のデータ転送料が発生する場合あり |
| 新規設計の推奨 | ゾーンが使えない場合・旧来のVMサイズ | 東日本・西日本など主要リージョンで推奨 |
なお、1つのVMに可用性セットと可用性ゾーンを同時に指定することはできません。どちらを使うか設計段階で決めておいてください。
よくあるエラーと対処法
「VMの可用性セットはVM作成後に変更できない」エラー
既存のVMに後から可用性セットを紐付けようとすると、操作がブロックされます。# エラー例(既存VMに可用性セットを追加しようとした場合) # BadRequest: Changing property 'availabilitySet' is not allowed.
「AlignedとClassicが混在している」警告
マネージドディスクを使うVMにはsku: Aligned の可用性セットが必要です。Classic の可用性セットにマネージドディスクのVMを作成しようとするとエラーになります。az vm availability-set create を実行すると現在のAzure CLIのデフォルトでは Aligned が選ばれますが、古いAPIバージョンを経由した作成では Classic になる場合があります。az vm availability-set show で sku.name を必ず確認してください。「faultDomainが全VMで0になる」ケース
リージョンの空きリソースが少ない時間帯に作成すると、分散が保証されないケースがあります。--no-wait を外して1台ずつ順番に作成する、または時間を置いて再試行することで解消することが多いです。本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 可用性セットを作成する | az vm availability-set create --platform-fault-domain-count 2 --platform-update-domain-count 5 |
| VMを可用性セットに組み込む | az vm create --availability-set <セット名> |
| VMの障害・更新ドメインを確認する | az vm get-instance-view --query '{faultDomain:instanceView.platformFaultDomain, ...}' |
| 可用性セットの詳細を確認する | az vm availability-set show --output table |
| ゾーン対応リージョンで高可用性を実現する | az vm create --zone 1(可用性ゾーンを使う場合) |
新規環境では可用性ゾーンが推奨ですが、可用性セットは既存構成との互換性・コスト設計・リージョン制約に合わせた有効な選択肢です。両者の違いを理解した上で設計を選択できるエンジニアを目指してください。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
この記事で解説したAzure可用性セットの設計・構築を含め、クラウド時代のLinuxインフラ管理を体系的に学べるコースをご用意しています。3,100名以上が受講した実績のある実践ハンズオン研修です。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:azure仮想マシンバックアップをリージョン間で復元する構成|az CLIでGRSボールト作成
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます