azure可用性セット・可用性ゾーン構築ガイド|AWSマルチAZと比較

運営:リナックスマスター.JP(代表 宮崎智広)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Azure > azure可用性セット・可用性ゾーン構築ガイド|AWSマルチAZと比較
「Azureで高可用性構成を設計する際に、可用性セットと可用性ゾーンのどちらを選べばいいかわからない」
「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の推奨


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

可用性セットと可用性ゾーン——何が違うのか

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

--platform-fault-domain-count の最大値はリージョンによって異なり、東日本(japaneast)では最大2または3が一般的です。

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

vm-app-01 が FD:0、vm-app-02 が FD: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" # }

zones に "1" が入っていれば、可用性ゾーン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)選択で指定
AWSでマルチAZ構成を経験しているエンジニアがAzureへ移行するときに最も混乱するのが「可用性セットとマルチAZは別物」という点です。AWSのマルチAZはDC間分散であり、Azureの可用性ゾーンに対応します。可用性セットはラック分散であり、AWSには直接相当する機能がほとんど存在しません。

可用性セットと可用性ゾーンの使い分け

・新規構築には可用性ゾーンを選ぶ: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

「AvailabilitySetAndProximityPlacementGroupCannotBeUsedTogether」
近接配置グループと可用性セットを同時に指定したときに発生します。どちらか一方を削除して再実行してください。

「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
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、AzureでのLinuxサーバー設計・構築・運用スキルをハンズオン形式で習得できるAzure Linuxセミナーをご活用ください。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

運営

リナックスマスター.JP(代表 宮崎智広)

株式会社イーネットマーキュリーが運営するLinux教育サイトです。代表の宮崎智広は現役のLinuxサーバー管理者として20年以上の実務経験を持ち、累計3,100名以上のエンジニアを指導してきました。実践型のLinuxセミナーや無料マニュアルの配布を通じてLinux人材の育成に取り組んでいます。