「AWSのマルチAZと同じ意味だと思っていたら、設計思想が違って混乱した」
この記事では、AzureのVM冗長化機能である可用性セット(Availability Set)と可用性ゾーン(Availability Zone)の違いをaz CLIの構築手順と合わせて解説します。AWSマルチAZとの比較と使い分けの判断基準もまとめます。Ubuntu 22.04 LTSを想定環境として説明します。
この記事のポイント
・可用性セットは同一DC内のラック分散、可用性ゾーンはDC間分散(AWSマルチAZ相当)
・az vm availability-set create で障害ドメインと更新ドメインを設定する
・az vm create --zone 1 でゾーン指定VMを作成し、DC障害にも耐えられる設計にする
・新規構築には可用性ゾーンを選ぶのがMicrosoftの推奨
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
可用性セットと可用性ゾーン——何が違うのか
AzureのVM高可用性は「障害の範囲をどこまで想定するか」によって2つのアプローチに分かれます。可用性セット(Availability Set)は、同一リージョン内の同一データセンター(DC)において、複数のVMを異なる「障害ドメイン(Fault Domain)」と「更新ドメイン(Update Domain)」に分散する仕組みです。ラック単位の電源障害やハードウェア障害から保護しますが、DC全体の障害には対応できません。SLAは99.95%です。
可用性ゾーン(Availability Zone)は、同一リージョン内の物理的に独立した複数のDCにVMを分散する仕組みです。電源・ネットワーク・冷却が各ゾーンで独立しており、DC丸ごとの障害にも耐えられます。SLAは99.99%です。
AWSのマルチAZはAzureの可用性ゾーンに相当します。AWSのアベイラビリティゾーン(AZ)は独立DCへのVM分散であり、Azureの可用性セット(同一DC内のラック分散)とは設計思想が根本的に異なります。AWSには直接相当する可用性セットの仕組みはなく、プレイスメントグループのSpreadモードが挙動として近いものになります。
AzureでのLinuxサーバー構築スキルを体系的に習得したい場合は、Azure Linux実践セミナーでカリキュラムを確認してみてください。
可用性セットをaz CLIで構築する
1. リソースグループと可用性セットを作成する
まずリソースグループを作成し、可用性セットを定義します。# リソースグループを作成する(東日本リージョン) az group create \ --name rg-ha-demo \ --location japaneast # 可用性セットを作成する(障害ドメイン2、更新ドメイン5) az vm availability-set create \ --name avset-demo \ --resource-group rg-ha-demo \ --platform-fault-domain-count 2 \ --platform-update-domain-count 5
2. VMを可用性セットに配置する
--availability-set オプションを指定することで、VMを作成時に可用性セットへ配置できます。zones が空欄であれば可用性セット配置(ゾーン指定なし)の確認が取れます(出力例・環境により異なります)。# 1台目のVMを可用性セットに配置する az vm create \ --resource-group rg-ha-demo \ --name vm-app-01 \ --availability-set avset-demo \ --image Ubuntu2204 \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys # 2台目のVMを同じ可用性セットに配置する az vm create \ --resource-group rg-ha-demo \ --name vm-app-02 \ --availability-set avset-demo \ --image Ubuntu2204 \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys # 出力例(環境により異なります) # { # "location": "japaneast", # "powerState": "VM running", # "privateIpAddress": "10.0.0.4", # "publicIpAddress": "52.185.xxx.xxx", # "resourceGroup": "rg-ha-demo", # "zones": "" # }
3. 配置されたドメインを確認する
2台のVMがそれぞれ異なる障害ドメインに分散されているか、az vm show で確認します(出力例・環境により異なります)。az vm show \ --resource-group rg-ha-demo \ --name vm-app-01 \ --query "{name:name, fd:instanceView.platformFaultDomain, ud:instanceView.platformUpdateDomain}" \ --output table # 出力例(環境により異なります) # Name Fd Ud # --------- ---- ---- # vm-app-01 0 0 # vm-app-02 1 1
可用性ゾーンをaz CLIで構築する
1. ゾーン指定でVMを2台作成する
--zone オプションでゾーン番号(1・2・3)を指定することで、物理的に独立したDCにVMを分散できます(出力例・環境により異なります)。# ゾーン1にVMを作成する az vm create \ --resource-group rg-ha-demo \ --name vm-zone-01 \ --zone 1 \ --image Ubuntu2204 \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys # ゾーン2にVMを作成する az vm create \ --resource-group rg-ha-demo \ --name vm-zone-02 \ --zone 2 \ --image Ubuntu2204 \ --size Standard_B2s \ --admin-username azureuser \ --generate-ssh-keys # 出力例(環境により異なります) # { # "privateIpAddress": "10.0.0.5", # "publicIpAddress": "20.78.xxx.xxx", # "resourceGroup": "rg-ha-demo", # "zones": "1" # }
2. ゾーン冗長Standard Load Balancerを追加する
複数ゾーンに分散したVMへトラフィックを均等に振り分けるには、Standard SKUのロードバランサーを使います。Basic SKUはゾーン冗長に対応していないため注意が必要です。# ゾーン冗長パブリックIPを作成する(ゾーン1・2・3指定) az network public-ip create \ --resource-group rg-ha-demo \ --name pip-lb-demo \ --sku Standard \ --zone 1 2 3 # Standard SKUロードバランサーを作成する az network lb create \ --resource-group rg-ha-demo \ --name lb-demo \ --sku Standard \ --public-ip-address pip-lb-demo \ --frontend-ip-name FrontendIP \ --backend-pool-name BackendPool
AWSマルチAZとの比較
AWSとAzureの高可用性概念を横並びにすると次のように整理できます。| 概念 | Azure | AWS |
|---|---|---|
| DC内ラック分散 | 可用性セット(Availability Set) | プレイスメントグループ(Spreadモード) |
| DC間分散(同一リージョン) | 可用性ゾーン(Availability Zone) | アベイラビリティゾーン(AZ) |
| SLA(複数VM) | 可用性セット:99.95% / 可用性ゾーン:99.99% | マルチAZ:概ね99.99%前後(サービスにより異なる) |
| ロードバランサー | Standard Load Balancer(ゾーン冗長対応) | ALB・NLB(マルチAZ対応) |
| 設定タイミング | VM作成時のみ(後変更不可) | サブネット(AZ)選択で指定 |
可用性セットと可用性ゾーンの使い分け
・新規構築には可用性ゾーンを選ぶ:DC障害にも対応でき、SLA 99.99%が得られます。Microsoftも新規ワークロードには可用性ゾーンを推奨しています・可用性セットが適するケース:可用性ゾーンに対応していない旧リージョン・旧世代VMサイズを利用する場合、または既存の可用性セット構成を移行コストを抑えながら維持する場合
・同時指定は不可:可用性セットと可用性ゾーンを同一VMに両方指定することはできません
・後から変更できない:VM作成後に可用性の設定(セット・ゾーン)は変更不可。設計は構築前に固めておくことが重要です
・ゾーン間通信コスト:可用性ゾーン間のデータ転送には帯域コストが発生します。大量通信が必要なシステムでは事前に見積もっておいてください
よくあるエラーと対処法
「The selected VM size is not supported in this availability zone」指定したゾーンがVMサイズをサポートしていない場合に発生します。次のコマンドで対象ゾーンで利用可能なサイズを確認してください。
# japaneastでゾーン対応のStandard_B2sを確認する az vm list-skus \ --location japaneast \ --zone \ --query "[?name=='Standard_B2s']" \ --output table
近接配置グループと可用性セットを同時に指定したときに発生します。どちらか一方を削除して再実行してください。
「Argument --availability-set is not applicable when using availability zones」
--zone と --availability-set を同時に指定したときのエラーです。どちらか一方のみを指定してください。
本記事のまとめ
| やりたいこと | コマンド・設定 |
|---|---|
| 可用性セットを作成する | az vm availability-set create --name avset-demo |
| VMを可用性セットに配置する | az vm create --availability-set avset-demo |
| VMをゾーン指定で作成する | az vm create --zone 1 |
| ゾーン冗長ロードバランサーを作成する | az network lb create --sku Standard |
| 障害ドメインを確認する | az vm show --query instanceView.platformFaultDomain |
| ゾーン対応VMサイズを調べる | az vm list-skus --location japaneast --zone |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:Azure可用性セットを使ってVMを冗長化するAZ CLIハンズオン|障害ドメインと更新ドメインの設計
- この記事の属するカテゴリ:Azureへ戻る

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