フォールトトレラントシステムとは
フォールトトレラント
システムとは、
システムを構成する一部の要素に障害が発生した場合でも、
システム全体が停止することなく、処理を継続できるような設計がなされた
システムのことです。単純な
システムでは、一部の障害が全体の停止を引き起こす可能性がありますが、フォールトトレラント
システムでは、機能を維持したまま処理を継続するか、障害の重大度に応じて機能を低下させつつも処理を続行します。
特に、連続稼働が求められる
システムや人命に関わる
システムでは、フォールトトレラント性が不可欠です。フォールトトレラント性は、個々のマシンの特性だけでなく、マシン間の連携に関する規則にも適用されます。例えば、TCPプロトコルは、パケットの損失や順序の入れ替えを考慮して設計されており、通信性能が低下してもデータの正確性を維持できます。
データ形式においても同様の考え方が適用できます。例えば、HTMLは下位互換性を維持するように設計されており、古いブラウザでも新しい機能を使ったHTMLを完全に処理できなくても、理解できる範囲で表示することが可能です。
障害復旧
フォールトトレラント
システムにおける障害復旧は、ロールフォワードとロールバックの2つに大別されます。
ロールフォワード: 障害発生時のシステム状態から復旧を行い、処理をさらに進めます。
ロールバック: システム状態を過去の状態(チェックポイント)に戻し、そこから処理を再開します。ロールバック復旧では、チェックポイントから障害発生地点までの処理が何度実行しても結果が変わらない
冪等性を持つ必要があります。
システムによっては、障害の種類や発生箇所によってロールフォワードとロールバックを使い分けることがあります。
システム内部では、例外的な状態を想定し、それに対処できるように
システムを構築することで、フォールトトレラント性を実現します。また、自己安定性を持たせることで、
システムをエラーのない状態に収束させることも有効です。しかし、重大な
システム障害に対処するにはコストがかかるため、冗長化などの二重化がより良い方法となる場合があります。
フォールトトレラントシステムに求められる特性
フォールトトレラント
システムには、以下の基本的な特性が求められます。
単一障害点がないこと: 一つの障害がシステム全体の停止に繋がらないように対策が施されていること。
単一故障点がないこと: ハードウェアの故障に対しても同様に対策が施されていること。
障害部品の隔離: 障害が発生した箇所を特定し、隔離できること。
障害の伝播を防ぐこと: 障害が他の部分に影響を及ぼさないようにすること。
代替モード: システムが危険な状態に陥った場合に、安全な状態に移行できる代替モードがあること。
これらの特性に加えて、フォールトトレラントシステムは計画的なサービス停止と予期しないサービス停止の両方を考慮する必要があります。これらの要素を総合的に評価したものが可用性であり、パーセントで表されます。例えば、99.999%の可用性が保証されたシステムは、統計的に99.999%の時間稼働し続けると見込まれます。
二重化によるフォールトトレラントシステム
二重化(多重化、冗長化)は、フォールトトレラント性を実現するための重要な手段です。二重化には、主に以下の3つの種類があります。
レプリケーション: 同じ
システムの複製を複数用意し、並列に同じ処理を実行させ、多数決によって正しい結果を採用します。
冗長性: 同じシステムの複製を複数用意し、障害が発生した場合に予備のシステムに切り替えます。
多様性: 同じ仕様の異なる実装の
システムを複数用意し、
レプリケーションのように運用します。これにより、各
システムが同時に同じ障害を起こす可能性を低減できます。
RAIDは、冗長性を活用したフォールトトレラントな
記憶装置の代表例です。
ロックステップ方式
ロックステップ方式は、
システムを構成する各部分を多重化して並列に動作させる方式です。多重化された各部分は常に同期しており、同じ入力に対して同じ出力が得られることが期待されます。多重化された部分の出力は多数決回路に集められ、比較されます。
DMR (Dual Modular Redundant): 各部品を二重化した構成です。多数決回路は結果が異なることを検出できますが、どちらが正しいかは判断できません。
TMR (Triple Modular Redundant): 各部品を三重化した構成です。多数決回路は比較結果が2対1になった場合にエラーを判定し、正しいと思われる結果を出力できます。エラーを発生させた複製部品は故障したものとみなし、多数決回路はDMR状態に移行します。
ロックステップ方式では、各複製部品が同じクロックで同期して動作するため、同期が容易です。また、各複製間で状態をコピーしたり、リセット状態から同時に動作を開始することで同期を取ることも可能です。
Pair-and-Spare
DMRの一種にpair-and-spareがあります。これは、2つの複製部品がロックステップで同じ処理を行い、多数決回路が相違を検出したらエラー信号を出力します。もう一組の二重化
システムが同じ処理を行い、エラーが出ていない方を採用します。Pair-and-spareは、TMRよりも冗長ですが、商用
システムで採用された例があります。
その他の重要な要素
単一故障点の排除
システムに障害が発生し、修理が必要になった場合、修理中もサービスを継続できるようにする必要があります。ソフトウェアの障害でパッチを当てる場合も同様です。
障害部品の隔離
障害が発生した場合、その発生箇所を特定し、隔離できる必要があります。このために、障害箇所を特定するための独立した機構が必要です。
障害の封じ込め
障害が発生した場合、それが
システム全体に伝播して、
システム全体が停止してしまうことがあります。例えば、通信関係で障害が発生した場合、不正なパケットが大量に発生してネットワーク全体の回線容量を消費し、サービス不能になることがあります。このような場合に障害箇所を隔離し、
システム全体への影響を防ぐ必要があります。
代替モード
障害の種類によっては、
システムや操作者、結果が危険にさらされる可能性があります。これを防ぐため、ミッションクリティカルな
システムではセーフモードを備える必要があります。セーフモードは、インターロック機構やソフトウェアによって実装可能です。
まとめ
フォールトトレラント
システムは、
システムの信頼性と
可用性を高めるために不可欠な技術です。二重化や多様性、障害隔離、代替モードなどの技術を適切に組み合わせることで、障害が発生した場合でも
システムを安定的に稼働させることができます。