
オンプレミスでシステムを構築している場合、サーバーやハードディスクの故障、ネットワーク障害など様々なケースでシステムが停止してしまうリスクがあります。
クラウドを利用することで、サーバーやハードディスクの管理をクラウド事業者に任せ、複数のデータセンターにまたがるシステムの冗長化を容易に行うことができます。
オンプレミスからクラウドへ移行することでシステムの安全性は高まりますが、絶対に停められないシステムに対してさらに安全性を高めるために、データセンター単位ではなく地域内や国単位でシステムを分散することがクラウドでは可能です。
そこで今回は Microsoft Azure を使用したシステム冗長化をどのように設定するのか、その方法と注意点について解説します。
システムを構成する要素のなかで冗長化ポイントは複数ありますが、今回はデータ同期の課題があるために比較的冗長化が難しいデータベースに焦点を当ててみようと思います。
Azure SQL Databaseを利用した冗長構成パターン解説
Micsoroft Azure ではデータベースサービスとして「Azure SQL Database」を提供しています。「Azure SQL Database」を利用することで以下のような冗長構成を組むことができます。
1.ローカル冗長
1つのデータセンター内でデータを3つにコピーしてハードディスク障害に備えます。この機能はデフォルトで有効になっており、障害時の切り替えを利用者で実施する必要はありません。
データセンター内の冗長化だけでもオンプレミスで構築するよりも手軽に実施することができ、クラウド利用のメリットが感じられるかと思います。
2.データセンター間冗長(ゾーン冗長)
比較的距離の近いデータセンター2~3箇所で冗長構成を組むことができます。データセンター単位の障害に対応可能で、設定画面からボタン一つで有効化できます。
データは自動的に同期されるため、利用者側での作業は不要です。ただし、「Azure SQL Database」のプランによっては利用できず、安価なプランでは未対応となっています。
3.地理冗長
東日本と西日本など、地域をまたいだ冗長構成です。
例えば平常時は東日本エリアのデータセンターを利用し、地域全体の障害が発生した場合は西日本のデータセンターへ接続先を切り替えてシステム運用を継続します。データセンター間の冗長構成時と同様、データは自動で同期されます。
「Azure SQL Database」 では「フェールオーバーグループ」という機能で地域をまたいだ冗長構成を組むことができます。
今回テーマとしている冗長構成は「3.地理冗長」に該当します。
Azure SQL Databaseの地理冗長構成を実際にやってみた
ここからは先ほどご紹介した地理冗長を実現する「フェールオーバーグループ」機能がどのように設定できるのか、実際の画面操作の流れでお伝えします。
データベースの準備
まずはデータベースを2つの地域で作成します。今回は日本とアメリカにデータベースを構築しました。

冗長化機能の選択
Azure の操作画面から「フェールオーバーグループ」を選択します。

地域の選択
障害発生時の切替先データベースを選択します。普段は日本のデータベースを使用し、障害発生時にアメリカのデータベースへ切り替える構成とします。

以上で設定は終了です。たった3STEPで簡単に冗長構成を組むことができました。
構成画面から地図上で日本とアメリカ間で冗長構成を構築している様子が確認できます。現在は日本のデータベースを使用していることがアイコンからわかります。

次に、障害が発生したと仮定してデータベースの切り替えをやってみます。画面から「フェールオーバー」を選択して少し待つだけで接続先地域が切り替わります。

先ほどの構成画面からも緑色のアイコンがアメリカへ移動したことが分かります。

データベース冗長構成時の注意点
「Azure SQL Database」を使用することで簡単に冗長構成を構築できることが伝わったでしょうか。便利な機能ではありますが、実際に利用するうえで事前に検討しておかなければいけない注意点を4点お伝えします。
1.コスト面について
「Azure SQL Database」は稼働時間やデータ量、通信量に応じて月額コストが決まります。冗長化設定時は各データセンターでデータベースを稼働することになるため、稼働するデータベース分のコストが発生します。冗長化設定時はコストの増加を見込んでおく必要があります。
2.地域の切り替え方法
「フェールオーバー」機能を利用して接続先を切り替える場合、利用者のタイミングで実施する手動切り替えと、クラウド事業者(Microsoft)側による自動切り替えがサポートされています。
自動切り替えが便利そうですが、地域内のシステムが全停止するなど極端な状況になるまで実施されません。
公式でも手動切り替えが推奨されており、有事の際には切り替え作業が必要なことを想定してあらかじめ手順を整備しておきます。
3.切り替え作業の定期的な訓練
実際に切り替えを実施してみると、想定通りにアプリケーションが動作しないなど、二次災害が起こる可能性もゼロではありません。
定期的に「避難訓練」のように実際に接続先を切り替えてみることも計画すると良いかと思います。
4.システム応答速度
アプリケーション、データベースともに同じ地域にあれば問題ないですが、データベースだけ別の地域に移動するとアプリケーションとの通信の物理的な距離が延びます。
多くのシステムでは体感するほどの速度低下は感じられないかもしれませんが、ミリ秒単位で速度が求められる場合は事前の検証をする必要があります。
このように、冗長構成を組む際は設定をして終わりではなく、上記のような事前の検討が必要となります。
まとめ
「Azure SQL Database」を使用することでオンプレミスでは難しい、地域間の冗長化を簡単に行うことができます。
一方でコストや運用面の注意点もあり、システムに応じた冗長レベルを要件として固めることが重要です。また、「Azure SQL Database」は冗長化含め様々なプランが存在し、性能や価格が大きく変わります。
多くのシステム要件に対応できるメリットはありますが、その反面選択肢が多く、初めて利用する際には迷うことも多いのではないかと思います。最適な構成はシステムによって変わるため、経験豊富な専門家と一緒に検討することが重要です。
弊社ではMicrosoft Azure を使用したシステム導入の経験を豊富に持つエンジニアが多く在席しています。
もしオンプレミスからクラウドへの移行や、クラウドのシステム構成にお悩みであればぜひ一緒に検討させてください。
Microsoft Azureに関連して、クラウド上で構築するサーバー(Azure Virtual Machine)をテーマに以下の記事を執筆しています。
こちらも併せてぜひご覧ください。
