Azureの障害への強みと冗長性
はじめに
Windows Azure は世界中に58のリージョンを備え、140の国と地域で利用できます。リージョンとは、大規模かつ回復性の高いネットワークを経由して、相互に接続された一連のデータセンターです。
Azureは他のクラウドサービスと比べデータセンターが多いという強みを持っており、その点データの冗長性、つまり障害時にデータのバックアップを作成する環境にも強みを持っていると言えます。
この記事では、Azureの障害に対する強みを主に冗長性という観点から解説し、障害への耐性のもう一つの概念であり、Azureの強みである可用性についても解説します。
Azureの冗長性
Azureは、耐障害性と冗長性を備えるように設計されており、耐障害性を備えたアプリケーションやサービスを設計・配置できます。ただし、Azure上でアプリケーションを稼働するだけで完全に耐障害性が保証されているわけではなく、Azureの機能・特性を理解した上で適切に設計する必要があります。
Azureのインフラストラクチャは、障害発生時にも運用を継続できるように設計されています。各層でネットワークデバイスの冗長化を行い、各データセンターで2社のインターネットサービスプロバイダーを利用しています。フェールオーバー(プライマリとして通常メインで稼働しているシステムに障害が発生した際に、代替となるシステムに切り替えが行われる処理)は殆どの場合、運用担当者の介入なしに自動で実行され、ネットワーク異常やネットワークの潜在的な問題を検出するために、ネットワーク運用センターで24時間365日常時監視されています。
ローカル冗長ストレージおよび地理的冗長ストレージ
Azureストレージでは、ローカル冗長ストレージおよび地理冗長ストレージという2つのタイプのストレージを提供しています。
・ローカル冗長ストレージ
持続性と可用性が強みのストレージを持ち、同一サブリージョン内で、同じ内容のコピー(レプリカ)を3つ保持します。これにより、一般的な(ディスク、ノード、ラックの)障害が発生した場合は確実に復旧できるようになっています。
・地理的冗長ストレージ
同一サブリージョン内に加え、同一リージョン内の2つの近いデータセンター間でもデータを複製し、サービスの持続性を最大限に高めることができます。
例えば、シンガポールのデータセンターを利用している場合は、香港のデータセンターに複製が作られています。
データセンターの冗長性
Azureは世界中の複製のデータセンターで稼働しています。データセンター全体に影響が及ぶ壊滅的な障害が発生した場合、バックアップ場所にある別のデータセンターに切り替えて運用し、サービスを継続できます。最初に述べたようにAzureはデータセンターの数が他のクラウドサービスよりも多いため、他サービスに比べデータセンターの冗長性に強みをもっていると言えます。
Azureの可用性
企業のITインフラにおいて、高可用性、つまりシステムの障害発生の少なさは必須条件です。ですが、コンピュータはいつか必ず止まります。Azureは、全てのネットワーク機器、サーバ、ストレージなどがロードバランサーの下に複数配置されており、単一障害点のない設計となっています。サーバーに障害があった場合、以下のようなことが自動で行われます。
●サーバー、仮想マシンなどの障害を断定する。
●それをネットワークから切り離す。
●別のハードウェア上に仮想マシンを構築する
●ヘルスチェックを行う。
●ネットワーク・ロードバランサーにつなぎ直す
典型的な障害に関しては、自動で処理されます。Azureで管理されているハードウェア、ネットワーク、ストレージ、OSなどの各レイヤーごとに管理・監視されています。
PaaSになれば、例えば、ミドルウェアであるSQL Serverの管理・監視までマイクロソフトが対応します。IaaSの場合は、OS部分の詳細までは関知しませんが、ハードウェアから下のレイヤーには対応します。IaaSとPaaSでは、対応するサポート範囲に違いは出てきます。
重要な点は、人を介さずに自動的に行われているという事です。それによって正確に同じ作業を行う事ができます。もちろん、全ての障害対応が自動化できるわけではないので、クラウドの中でも、運用のエンジニアは重要です。ですが障害対応の全てを人がやる必要性はなくなっている、という事です。
可用性の高いシステムを構築するには、①個々のパーツレベルでの冗長化を高め、耐障害性に優れた部品を選択する、②並列に並べたサーバー上のアプリケーションで可用性を担保しながら分散処理を行う(スケールアウト)という2つの方向性があります。
可用性セット
可用性を高める上での具体的な例として、Azureでは可用性セットという概念があります。データセンターのラックの中に電源ユニットなどの物理ハードウェアが数多く設置されています。可用性セット内に複数のサーバーを置くという設定をすると、仮想マシンを作った時に電源障害などの単一障害点を避けて配置されます。
つまり、別のラックに配置されるといった事になります。IaaSの場合でも2つ以上のサーバーを可用性セットの中に設定することできます。ちなみに、AzureのIaaSでは、可用性セットを採用する事で、稼働率としてSLA:99.95%となっています。この稼働率の高さも他サービスと比較しての強みと言えます。