高可用性システムのためのアーキテクチャこんな時にはこのITアーキテクチャ (3)

ユーザーから見てシステムが停止せずに使えることを高可用性という。これを実現するためには、信頼性の高いハードウェアを使い、2重化やクラスタリングで耐障害性を高める方法が一般的であるが、システム構築費用は高くなる。高可用性が求められる部分とそうでない部分を分離することが、高可用性と費用の折り合いを付けるためには重要だ。

» 2006年12月15日 12時00分 公開
[河野紀昭日本IBM ICP-エクゼクティブI/Tアーキテクト]

 ユーザーから見て、事前に予告された計画停止以外ではシステムが停止せずに使えることを高可用性(High Availability)という。ここでユーザーから見てというのがポイントで、ユーザーから見えないところでシステムの一部が停止することがあっても、ユーザーに対するサービスが停止しなければよい。Webの場合、図1のようにアプリケーション・サーバをクラスター構成にする一方で、DBサーバーなどを2重化して、1台のマシンが停止してもシステム停止にならないようにするのが、基本的なデザインとなる。

ALT 図1 とまらないシステムのための基本的なデザイン

勘所:システムの構成要素を2重化して可用性を高めよう



 この構成は、高可用性を意識した良いシステムといえるのだが、ハードウェアなどの障害ケースによっては、ユーザーが影響を受けないわけではない。障害の場所による、ユーザーへの影響を分析すると次のようになる。

障害の種類 障害時のシステムの動き ユーザーへの影響
アプリケーションサーバ障害 仕掛かり中の処理はロールバックされる。新規処理は稼働中のアプリケーション・サーバーに振り分けられる。停止したサーバの保持していたセッション情報が失われる セッションがなくなるので、再ログインして処理をやり直す
DBサーバ障害 DB が停止し、バックアップ・サーバーに切り替えて復旧する。仕掛かり中の処理はロールバックされる エラーが返るので、再処理を行う
RAIDを構成するDISK単体の障害 ほかのDISK により処理続行 影響なし

 このように、いくつかの障害ではユーザーへの影響が生じることが分かるが、障害発生の可能性と併せて考慮し、これが許容できるものであればデザインとしてはOKとなる。このように障害個所ごとに影響を分析することが、高可用性設計では重要だ。

勘所:障害個所ごとの影響分析をして、アーキテクチャを吟味しよう



 ビジネス遂行上、障害のユーザーへの影響が許容できない場合には、それぞれの障害への 対策を強化することになる。

 アプリケーション・サーバ停止時に再ログインからやり直すことが許されない場合には、複数のアプリケーション・サーバでセッションを共有するデザインが有効だ。ディスクの筺体障害によりシステムが長時間停止することが許されない場合は、ディスクを筺体ごと2重化してミラーリングなどでデータを複製する手法がある。これらの対策を施した設計を図2に示す。

ALT 図2 2重化してミラーリングなどでデータを複製する手法

 さらに、データベース・サーバーやDISK筐体の待機系との切り替えによる短時間のサービス中断も許されない場合には、データベースを2重化するとか、システム全体を2つ持って更新結果を送り合うといった設計をする場合もある(図3)。

ALT 図3 システム全体を2つ持って更新結果を送り合う設計

 このように障害対策を強化すれば、可用性は向上するが、システム構築費用も高くなる。そこで、重要なのがシステムのどの部分の可用性を高めるかということだ。高可用性の考えはユーザーに対するサービスを停止させないことなので、ユーザーに対するサービスに直結する部分と、そうでない部分を分離するデザインを検討するとよい。図4に示す例では、ユーザーが直接使用し高い可用性を求められるオンライン部分と、一定時間内に回復すれば許されるバッチ部分、システム停止がある程度許容される情報系の3つにシステムを分割して、それぞれの要件に合うシステム構成にしている。

ALT 図4 情報系の3つにシステムを分割

 高可用性設計では、保守作業のための計画停止は許されるとしてデザインを行う。保守作業によるサービス停止を許さず、24時間365日連続したサービスが受けられることを、連続可用性(Continuous Availability)という。これを実現するためには、代行システムを用意するといった工夫が必要になるので、次回述べることにしよう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ