可用性の高いシステムとするには,平均故障間隔(MTBF)を長く,平均復旧時間(MTTR)を短くする必要があった。そのために平均故障間隔の短い単一故障個所を減らす工夫が必要だと説明した。

 今回と次回の2回に分けて,平均故障間隔の短い単一故障個所を減らす実装方法について説明したい。実装上のポイントは単純だ。それは,「単一故障個所となる構成要素を並列に複数並べ,単一故障個所とならないようにすること」である。このようにして単一故障個所を解消することを「冗長化」と呼ぶ。Webシステムにおける冗長化設計では,内部的に冗長化されたハードウエアを採用することと,ソフトウエアやネットワークを含むシステム全体を冗長化することの両面を検討する。

内部を冗長化したハードウエア

 平均故障間隔の短い単一故障個所がハードウエアであれば,内部的に部品を冗長化したものを選ぶことで,そのハードウエアの信頼度が上がり,システム全体の平均故障間隔が長くなる。

 例えば,最近ではミッドレンジ以上のサーバー機はファンや電源ユニットなど壊れやすい部品を冗長化していることがあるので,意識的にこうした製品を選ぶとよい。

 信頼度をさらに向上させる必要があれば,筐体内部のあらゆる部品を冗長化したハードウエアを選定する方法もある。例えばサーバー機であれば,冗長化を徹底した「FT(Fault Tolerant)サーバー」を選ぶ。FTサーバーは,ディスクや電源ユニットに加え,演算機構(CPU,メモリー,チップセットなど)やディスクI/Oインタフェース,ネットワークI/Oインタフェース,バスなど,ほとんどの部品を冗長化している。冗長化された部品は,(必要に応じて)リアルタイムに同期したり,同時並行的に動作したりして,常に同じ状態を保っている。そのため万一,片方で故障が発生しても,もう片方で処理を継続することができる。

 ただしFTサーバーは,1台のサーバー機に2~3台分の部品に加え,故障時の制御機構なども別途含まれるため,通常のサーバー機と比べて価格は数倍になる。このためWebシステムで利用する場合は,一般的にDBMS(Database Management System)など重要度の高いサービスの提供や,シングル・サーバー構成のときに用いる。それ以外の場合は,FTサーバーを採用して単体の信頼度を上げるよりも,システム全体の冗長化と絡めて検討した方が,拡張性とコスト・パフォーマンスが上がる。

システム全体の冗長化

 ハードウエア単体の信頼度を上げただけでは,可用性を十分に確保できたとはいえない。Webシステムは,HTTPD,APコンテナ,DBMSを別々のサーバー機に実装することが多いため,ネットワークやソフトウエアの障害も考慮に入れつつ,システム全体としての冗長化を検討する必要がある。

 そのときにポイントになるのは,ソフトウエアが保持していたデータや状態の再現である。システム全体の冗長化に使える技術は,データや状態の再現が可能かどうかで,二つに分類できる(図1)。一つは,データや状態の再現が完全にはできない「負荷分散クラスタリング技術」であり,もう一つは,データや状態の完全な再現が可能な「HA(High Availability)クラスタリング技術」である。

図1●システム全体を冗長化する技術
図1●システム全体を冗長化する技術
「負荷分散クラスタリング技術」と「HA(High Availability)クラスタリング技術」の2種類がある。各サーバーが保持する機能やデータは,理論上,負荷分散クラスタリング技術では同等とは限らないが,HAクラスタリング技術では同等となる。サーバー停止時のセッション継続性などに差が出てくる
[画像のクリックで拡大表示]

負荷分散クラスタリング技術

 負荷分散クラスタリング技術は,同等の機能を提供するサーバー機を複数設置し,それぞれで異なるリクエストを同時並行で受け付ける技術である。どのサーバー機にどのリクエストを振り分けるかは,サーバー機の手前に配置した「分散制御ソフト」で集中管理しており,分散制御ソフトは同じクライアントからのリクエストを同じサーバー機に振り分けるなどの調整を行う。サーバー機は,それぞれ別々に異なるデータや状態を保持している。

 分散制御ソフトは,管理対象となるサーバー機での障害発生を検出すると,そのサーバー機を処理の振り分け対象から外し,以降の処理は稼働中のサーバー機に振り分ける。この仕組み上,障害が発生したサーバー機で処理した内容(データや状態)を,ほかのサーバー機に引き継ぐことはできない。復旧の完全性に欠けるという弱点はあるが,簡易な仕組みで平常時の処理の高速化やスループット向上を実現できる利点もある。そのためWebシステムでは,WebサーバーやAPサーバーの可用性向上に負荷分散クラスタリング技術を適用することが多い。

 図2左は,WebサーバーとAPサーバーに負荷分散クラスタリング技術を適用したシステム構成例である。Webサーバーへのリクエストの振り分け制御には,分散制御ソフトを搭載したアプライアンス」(負荷分散装置)「BIG-IP v9を利用し,APサーバーへのリクエストの振り分け制御にはHTTPD(HTTPデーモン)である「Apache」のモジュール「mod_jk」が備える負荷分散機能を利用した。

図2●冗長化を考慮したシステム構成例
図2●冗長化を考慮したシステム構成例
この例では,「負荷分散クラスタリング技術」と「HAクラスタリング技術」を組み合わせている。HTTPDとAPコンテナを冗長化するために負荷分散クラスタリング技術を,DBMSを冗長化するためにHAクラスタリング技術を,それぞれ利用する。この構成では,負荷分散装置以外の単一故障個所(SPOF)はないので,可用性が高い
[画像のクリックで拡大表示]

 図2の構成は,システム構築責任者から,次のような要望があったために採用した。「障害が発生しても,できるだけサービスを止めたくない」「障害が生じたサーバーで処理中のリクエストを送ったユーザーには,エラーを返して再処理を求めても構わない」「安価に性能と可用性を向上したい」――である。もし,「高価でも構わないので,障害が生じたサーバーで処理中のリクエストをきちんと処理したい」などの要望が示されたなら,WebサーバーやAPサーバーにも,次で説明するHAクラスタリング技術を採用することになっただろう。

高安 厚思(たかやす あつし) オープンストリーム テクニカルコンピテンシーユニット 主管システムズアーキテクト
銀行系シンクタンクでオブジェクト指向技術の研究に携わった後,大手SI業者でアーキテクチャ構築やプロセス研究を担当。現職ではSOA(Service Oriented Architecture)を中心とする研究開発とアーキテクチャ構築に従事している