この記事のポイント
- 可用性セットは更新ドメインと障害ドメインを使ってVMを分散配置し、システム停止リスクを低減
- 最大20の更新ドメインと最大3つの障害ドメインを利用し、メンテナンスや障害の影響を最小化
- 可用性セットは単一データセンター内、可用性ゾーンは複数データセンターにまたがる高可用性を提供
- VMの作成時にのみ可用性セットを設定可能。既存VMへの後からの追加は不可
- 追加コストなしで利用可能。99.95%のSLAを保証し、アプリケーションの冗長性と高可用性を実現
監修者プロフィール
坂本 将磨
Microsoft AIパートナー、LinkX Japan代表。東京工業大学大学院で技術経営修士取得、研究領域:自然言語処理、金融工学。NHK放送技術研究所でAI、ブロックチェーン研究に従事。学会発表、国際ジャーナル投稿、経営情報学会全国研究発表大会にて優秀賞受賞。シンガポールでのIT、Web3事業の創業と経営を経て、LinkX Japan株式会社を創業。
クラウドシステムの信頼性は、ビジネスの成功に直結します。Azureの可用性セットは、システムの高可用性を実現する強力なツールです。
本記事では、更新ドメインと障害ドメインを活用したVM分散配置の仕組みから、具体的な設定方法、可用性ゾーンとの違いまでを詳細に解説します。
導入メリットや注意点も網羅し、Azureを最大限に活用したインフラ構築のヒントを提供。
ダウンタイムを最小限に抑え、ビジネスの継続性を確保するための知識が満載です。
目次
Azureの可用性セットとは
可用性とは、システムやサービスがどれだけ継続的に稼働できるかを示す概念です。つまり、システムに障害が発生してもどの程度迅速に復旧できるかを指しています。
Azure の可用性セット(Availability Set)は、仮想マシン(VM)の可用性を高め、「システムが止まらない」ために設計されたAzureの機能です。
可用性セットイメージ
システム全体がダウンするリスクを大幅に減らすことができる可用性セットについて今回解説していきます。
可用性セットの仕組み
では、可用性セットはどのような仕組みになっているのでしょうか。
可用性セットの「セット」というのは、複数の仮想マシン(VM)を特定のグループにまとめる仕組みです。こうすることで、仮想マシンが異なる物理サーバーや異なるドメインに分散され、計画的なメンテナンスや予期しない障害が発生しても、一部の仮想マシンが停止している間に、他の仮想マシンは稼働を続けられるようになります。
つまり、「セット」としてまとめることで、システム全体の可用性を高め、ダウンタイムを最小限に抑えることができるという訳です。
更新ドメインと障害ドメインによる仮想マシンの分散
Azureは更新ドメイン(Update Domain)と障害ドメイン(Fault Domain)という2つの重要な概念を使って仮想マシン(VM)を分散させています。その内容について見ていきましょう。
- 更新ドメイン(UD):
- 同時にメンテナンスや再起動が行われる可能性のあるVMのグループのことです。
- Azureがシステムのメンテナンスを行う場合、一度にすべてのVMを停止するのではなく、異なる更新ドメインに属するVMを順番に再起動します。こうすることで、メンテナンス中でもアプリケーションの一部が稼働し続け、影響を最小限に抑えます。
- 障害ドメイン(FD):
- 同じ物理的なハードウェア(例えば、電源やネットワークスイッチ)を共有するVMのグループです。
- ハードウェアが故障した場合、その障害の影響は同じ障害ドメイン内にとどまります。Azureは異なる障害ドメインにVMを分散させることで、1つのハードウェア障害で全てのVMがダウンしないようにしているのです。
ドメインイメージ (参考:Microsoft)
こうしたドメインに基づいて仮想マシンを自動的に分散させるので、メンテナンスや障害が発生してもアプリケーションの一部が稼働し続け、サービスが停止しないようにしてくれるのです。
最大20の更新ドメインと最大3つの障害ドメイン
Azure の可用性セットでは、仮想マシン(VM)を以下のように分散することができます。
- 更新ドメイン: 最大で20個まで設定できます。
- 障害ドメイン: 最大で3個(一部のリージョンでは2個)まで設定可能です。
例えば、4台のVMを持つ可用性セットの構成はこのようになるでしょう。
可用性セット
├── 障害ドメイン 0
│ ├── 更新ドメイン 0: VM1
│ └── 更新ドメイン 1: VM4
├── 障害ドメイン 1
│ └── 更新ドメイン 2: VM2
└── 障害ドメイン 2
└── 更新ドメイン 3: VM3
【障害ドメイン】各障害ドメインに1台以上のVMを配置することで、1つの障害ドメインが故障しても、他のドメインにあるVMは稼働を続けることが可能です。
【更新ドメイン】計画的なメンテナンスが行われる際も、異なる更新ドメインに属するVMがリブートされる順序がずれるため、アプリケーションの停止時間が最小化されます。
同じ障害ドメイン内でも異なる更新ドメインに配置
上記の例のように、Azure は、同じ障害ドメイン内のVMであっても、異なる更新ドメインに配置します。こうすることで、単一障害やメンテナンスによる影響を最小限に抑えることができるのです。
では、可用性セット内のVMがどの障害ドメインと更新ドメインに配置されているかを確認するにはどうしたらよいでしょうか?
次のようにPowerShellで可用性セット情報の確認をしてみてください。
$avSet = Get-AzAvailabilitySet -ResourceGroupName "myResourceGroup" -Name "myAvailabilitySet"
$avSet.VirtualMachinesReferences | ForEach-Object { $vm = Get-AzVM -ResourceId $_.id
Write-Host "VM: $($vm.Name)`tFD: $($vm.PlatformFaultDomain)`tUD: $($vm.PlatformUpdateDomain)"
}
このスクリプトを実行すると、各VMがどの障害ドメイン(FD)と更新ドメイン(UD)に属しているかを確認できます。
可用性セットと可用性ゾーンの違い
さらにAzureは、可用性セットと可用性ゾーンという2つの仕組みを用意しています。それぞれの違いを簡単に解説します。
可用性セット
- 範囲: 1つのデータセンター内にある仮想マシン(VM)を対象としています。
- 分散方法: VMを更新ドメインと障害ドメイン(を使って分散させます。
- 保護レベル: サーバーやラックの故障に対してVMを保護してくれますが、データセンターレベルの災害には対応できないため、全てのVMが停止するリスクがあります。
可用性ゾーン
- 範囲: 同じリージョン内に複数のデータセンターが存在しています。
- 分散方法: 各ゾーンは独立したインフラ(電源、冷却システム、ネットワークなど)を持っているので、VMは物理的に分離されたデータセンターに配置されます。
- 保護レベル: データセンターレベルの障害や災害からもアプリケーションを保護できるため、可用性セットよりも広範囲な障害に対応することができます。
例えば、可用性ゾーンを使用したVM配置はこのようになります。
リージョン X
├── データセンター A (Zone 1): VM1
├── データセンター B (Zone 2): VM2
└── データセンター C (Zone 3): VM3
この例では、仮想マシンが複数のデータセンター(ゾーン)に分散されているため、データセンターレベルの障害にも対応できるという訳です。
可用性ゾーンの耐性と利点
以上のように可用性ゾーンは、ゾーン単位の障害に耐性を持つ高可用性の仕組みになっています。その中身をさらに詳しく見てみましょう。
-
より高レベルの可用性
Azureは可用性ゾーンに基づいて、99.99%の稼働率を保証しています(SLA: Service Level Agreement)。(これに対して、可用性セットでは**99.95%**の稼働率です。) -
大規模災害への耐性:
可用性ゾーンは、異なる物理的データセンターにVMを分散させるため、データセンター全体の障害や災害が発生しても、別のゾーンで稼働を続けられるよう設計されています。 -
地理的分散:
可用性ゾーンは、システムを分散しているものの同じリージョン内にあるので低レイテンシー(遅延が少ない)を維持できます。
両者の比較
上記をまとめると、利用場面は以下のようになるでしょう。
- 可用性セット:単一データセンター内での高可用性が必要な場合
- 可用性ゾーン:より高いレベルの可用性と災害復旧が必要な場合
可用性セットの使い方
では次に、可用性セットの作成手順と注意点について説明します。
可用性セットの作成手順
ここでは、Azureポータルを使用して仮想マシンを可用性セットに配置する設定を以下ご紹介します。
1.Azureポータルにアクセスし、Azureアカウントでサインインします。
- Azureポータル画面*
※前提準備として、Azureアカウントの作成を行ってください。
➡️Azure Portalとは?操作方法やメリットをわかりやすく解説!
-
「リソースの作成」で仮想マシンの「作成」をクリックします。
リソースの作成画面
-
「基本」タブで以下を設定します。
基本タブ
・サブスクリプション
・リソースグループ
・仮想マシン名
・地域
・可用性オプション (可用性セットを選択)
-
「可用性セット」において「新規作成」をクリックします。
新規作成ボタン -
「可用性セットの作成」で以下を設定します。
・名前
・障害ドメイン
・更新ドメイン
-
④「OK」をクリックします。
-
「基本」タブで以下を設定します。
基本タブ入力画面
・可用性セット(項目5で作成したものを選択)
・イメージ
・サイズ
- 「基本」タブで以下を設定します。
基本タブ入力画面2
・ユーザ名
・キーの組名
-
「基本」タブで以下を設定したら、「次:ディスク>」をクリックします。
ディスククリック
・パブリック受信ポート
・受信ポートを選択 -
「ディスク」タブで以下を設定し、「次: ネットワーク」をクリックします。
ディスクタブ
・ディスクサイズ
・ディスクの種類 -
「ネットワーク」タブで以下を設定します。
ネットワークタブ
・仮想ネットワーク
・サブネット
・パブリック受信ポート
・負荷分散のオプション
- 入力を終えたら、最後に「確認および作成」をクリックします。
確認および作成ボタン
仮想マシンを可用性セットに追加する際の注意点
ここで、仮想マシンの追加や移動時にいくつかの重要なポイントに注意が必要です。
-
新規VM作成時の追加
可用性セットは、仮想マシンの作成時に指定しなければなりません。VMを作成後に、可用性セットに後から追加することはできません。
-
既存VMの移動
既に作成されている仮想マシンを、後から可用性セットに移動することはできません。この場合、VMを一旦削除し、可用性セットに所属させて再作成する必要があります。
-
サイズ制限
可用性セット内に配置される仮想マシンは、すべて同じ仮想マシンサイズ(CPU、メモリ構成)である必要があります。
複数のVM設置及び注意点
以上、仮想マシンを可用性セットに配置する方法や注意点について説明しましたが、少なくとも2台以上の仮想マシン(VM)を可用性セットに配置することが推奨されます。
1台が停止しても、他のVMが稼働を続けるため、アプリケーションが停止するリスクを減らせるからです。
例えば
Webサーバーのように同じ機能や役割を持つVMは、同じ可用性セットに配置する
こうすれば、特定のサーバーがダウンしても、他のサーバーがその役割を引き継ぐことができます。
- ロードバランサーの使用
複数のVMに対してトラフィックを分散させるため、Azure Load Balancerなどのロードバランサーを使用することが推奨されます。
そうすることで負荷を均等に分散し、システムの高可用性が実現されます。
ロードバランサ―イメージ 参考:Microsoft
可用性セットのメリット
最後に、可用性セットを使うことで得られるメリットを説明します。
アプリケーションの冗長性
冗長性とは、システムやデータを安全に、そして高可用性で運用するために、重要なコンポーネントや機能を複数の予備システムやデバイスに分散させる仕組みのことですが、アプリケーションの冗長性において、可用性セットは重要な役割を果たしています。
可用性セットを使用することで、複数のVMにワークロードを分散して実行できるので、1つのVMに障害が発生しても、他のVMが正常に動作し続けるため、システムの停止を防ぐことができるのです。
高可用性
可用性セットを使用することで、Azureの99.95%のサービスレベル契約(SLA)が適用されます。
メンテナンスや障害の影響を最小限に
以下のように計画的メンテナンス字も計画外の障害でも影響を最小限に抑えることができます。
- 計画的メンテナンス
-
更新ドメインごとに順次実施:
Azureの計画的なメンテナンスは、更新ドメイン単位で順番に実施されます。複数の仮想マシン(VM)を同じ可用性セットに配置している場合、異なる更新ドメインに分散されるため、全てのVMが一度に停止することはありません。 -
アプリケーションの継続的な稼働を確保: 例えば、更新ドメイン 0 のVMがメンテナンス中でも、更新ドメイン 1 のVMは引き続き稼働するため、アプリケーションが継続的に利用できる状態が維持されます。
- 計画外の障害
-
障害ドメインによる影響の局所化: 障害ドメインは、物理的に異なるハードウェア(ラックやサーバー)にVMを分散させるため、ハードウェア障害が発生した場合、その影響は1つの障害ドメイン内に局所化されます。
-
ハードウェア障害の影響を最小限に抑制: 1つの障害ドメインが停止しても、他の障害ドメインに配置されているVMは正常に稼働し続けるため、サービスの停止を防ぎます。
追加コストなしで利用可能
Azureの可用性セットは、追加のコストを発生させることなく利用できる機能です。可用性セット自体には料金がかからず、既存のVMにかかる通常の料金のみで高可用性を実現できるため、コスト効率が非常に高いです。
まとめ
本記事では、Azureの可用性セットについて、その概要、仕組み、可用性ゾーンとの違い、使い方、およびメリットを解説しました。
可用性セットは、仮想マシンの可用性を高めるためのAzureの重要な機能であり、更新ドメインと障害ドメインを使用してVMを分散配置することで、計画的および計画外のメンテナンス時でもアプリケーションの継続的な稼働を確保します。可用性セットはAzure上でのアプリケーション設計において重要な役割を果たし、信頼性の高いシステム構築を支援してくれるのは間違いないでしょう。
ぜひ適切に設計された可用性セットを使用することで、アプリケーションの冗長性と高可用性を実現し、メンテナンスや障害の影響を最小限に抑えてみてください。
この記事が、皆様のお役に立てたら幸いです。