フォールトトレラントとフェールセーフの違い
フォールトトレラントは
フォールトトレラントとフェールセーフの違いは、故障の後に動き続けるか止めるか
サーバが1台壊れてもサービスを続けるのか、安全のために止めるのか。設計では、故障した後の動きを先に決めておきます。フォールトトレラントは、部品が故障しても、機能を落とさずに動き続けるように作る設計です。フェールセーフは、故障したときに、システムを安全な側に倒して止める設計です。
この2つの間に、機能を落として動き続けるフェールソフトがあります。人の誤操作を防ぐフールプルーフは、起点が故障ではない点で、ほかの3つと性質が違います。予備を持たせて止まりにくくした効果は、稼働率の数字で比べられます。
信頼性設計には、故障を防ぐ方向と、故障に備える方向がある
システムが正しく動けなくなる原因を、フォールトと呼びます。フォールトは英語で、故障や欠陥を指す語です。システムを止まりにくくする工夫をまとめて、信頼性設計と呼びます。
1つ目の方向は、故障そのものを起こりにくくすることです。品質の高い部品を使い、点検や保守を続けます。この考え方をフォールトアボイダンスと呼びます。
2つ目の方向は、故障は起きるものと考え、起きても困らないように作ることです。部品はいつか必ず壊れるので、アボイダンスだけでは故障を0にできません。フォールトトレラント・フェールソフト・フェールセーフの3つは、この2つ目の方向に入ります。フールプルーフは、故障ではなく人の誤操作に備える考え方です。
フォールトトレラント・フェールソフト・フェールセーフは、故障の後の動きで分ける
3つとも、起点は同じ故障です。違うのは、故障の後にどれだけ機能を残すかです。
フォールトトレラントは、機能を落とさずに動き続ける
フォールトトレラントは、一部が故障しても、外から見て同じように動き続ける考え方です。装置を2台以上用意しておき、1台が壊れても残りで同じ処理を続けます。このように予備を持たせることを、冗長化と呼びます。
故障の影響を外に見せないことを、フォールトマスキングと呼びます。例えば、3台で同じ計算をして多数決を取れば、1台が誤った答えを出しても、外には正しい答えが出ます。
資料によっては、フォールトトレラントを「故障しても全体として止まらない」という広い意味で使い、機能を落として続けるフェールソフトも含めることがあります。以下では、違いが見えやすいように、機能を落とさずに続けるものをフォールトトレラント、機能を落として続けるものをフェールソフトと分けて説明します。
フェールソフトは、機能を落としてでも動き続ける
フェールソフトは、壊れた部分を切り離し、残った部分で動き続ける考え方です。全部を止めずに済む代わりに、使える機能が減ったり、処理が遅くなったりします。機能を落として動かし続けることを、縮退運転と呼びます。
4台のWebサーバのうち1台が壊れ、残りの3台で受け付けを続ける場合が、これに当たります。同じ量の要求を3台でさばくので、応答は遅くなります。
フェールセーフは、安全な側に倒して止める
フェールセーフは、故障したときに、事故や被害が起きない側にシステムを倒す考え方です。動き続けることより、安全を優先します。多くの場合、安全な側とは止めることです。
人が近づいたことを見張るセンサーが壊れたら、工場のロボットを止める場合が、これに当たります。センサーが壊れたまま動かすと、人に気づけないからです。
| 考え方 | 起点 | その後の |
|---|---|---|
| フォールト | 故障 | 機能を |
| フェールソフト | 故障 | 壊れた部分を |
| フェールセーフ | 故障 | 安全な側に |
| フールプルーフ | 人の | 誤った操作を |
フールプルーフとは、人の誤操作を防ぐ考え方
フールプルーフは、人が操作を間違えても危険にならないように、誤った操作を受け付けない作りにする考え方です。人は操作を必ずどこかで間違える、という前提に立ちます。ヒューマンエラーを避けるための技術の1つです。
電子レンジは、ドアを開けると加熱が止まり、ドアを閉めないと加熱が始まりません。ファイルの削除ボタンを押すと、本当に削除するかの確認が出る作りも同じです。
フェールセーフとの違いは起点にあります。フェールセーフは装置の故障から始まり、フールプルーフは人の操作から始まります。装置が正しく動いていても、人の誤りで事故が起きることがあるため、別の考え方として扱います。
事例を選んで、4つのどれに当たるかを確かめる
見分けるときは、次の2つを順に見ます。まず起点が故障か人の操作かを見て、故障なら、その後に機能を残すかどうかを見ます。
- フォールトトレラント(これに当たる)
- フェールソフト
- フェールセーフ
- フールプルーフ
- フォールトトレラント
- フェールソフト(これに当たる)
- フェールセーフ
- フールプルーフ
- フォールトトレラント
- フェールソフト
- フェールセーフ(これに当たる)
- フールプルーフ
- フォールトトレラント
- フェールソフト
- フェールセーフ
- フールプルーフ(これに当たる)
- フォールトトレラント(これに当たる)
- フェールソフト
- フェールセーフ
- フールプルーフ
- フォールトトレラント
- フェールソフト(これに当たる)
- フェールセーフ
- フールプルーフ
- フォールトトレラント
- フェールソフト
- フェールセーフ(これに当たる)
- フールプルーフ
- フォールトトレラント
- フェールソフト
- フェールセーフ
- フールプルーフ(これに当たる)
光った語が、判断の決め手です。「同じように」「正しい答えが出続ける」なら機能を落としていないので、フォールトトレラントです。「遅くなりながら」「その機能だけを止め」なら機能を落として続けているので、フェールソフトです。
アクティブ-スタンバイ構成とアクティブ-アクティブ構成
フォールトトレラントにする代表的な方法が、装置を2台以上並べる冗長化です。並べた装置の使い方には、2つの構成があります。
アクティブ-スタンバイ構成は、ふだんは1台だけが処理し、もう1台は待機している構成です。処理している1台が壊れると、待機していた1台が処理を引き継ぎます。引き継ぎの間は、短い時間だけ処理が止まることがあります。このため、待機系への引き継ぎをフェールソフトの例として扱う資料もあります。デフォルトゲートウェイを2台のルータで受け持つFHRPの仕組みが、この構成の例です。
アクティブ-アクティブ構成は、2台以上がどれも処理を受け持つ構成です。ふだんは負荷を分け合い、1台が壊れると残りが全部を受け持ちます。残りの台数で足りなければ処理が遅くなり、そのときの動きはフェールソフトに当たります。
待機している装置をどの程度準備しておくかは、BCPとDRの記事のスタンバイ方式の節で比べています。台数を増やす方法はスケールアウトの記事で説明しています。2台にしたときの稼働率は、可用性とSLAの記事の計算機で求められます。AWSでは、複数のアベイラビリティゾーンに装置を分けて置き、1か所の故障に備えます。分けて置く単位は、リージョンとアベイラビリティゾーンの記事で説明しています。
単一障害点・フェールオーバー・高可用性との関係
そこが止まるとシステム全体が止まってしまう1か所を、単一障害点と呼びます。英語のsingle point of failureの頭文字から、SPOFとも書きます。冗長化は、装置を2台以上並べて、この単一障害点をなくす手段です。
1台だけのロードバランサが単一障害点になる例は、ロードバランサの記事にあります。
アクティブ-スタンバイ構成で、稼働系が故障したときに待機系へ切り替えることを、フェールオーバーと呼びます。NISTの用語集は、多くは人の操作なしに、自動で待機系へ切り替える能力と定義しています。FHRPによるルータの切り替わりも、フェールオーバーの例です。
反対に、故障した側が直ったあと、処理を元の側へ戻すことをフェールバックと呼びます。AWSの災害復旧サービスの文書も、災害が解決したあとに元の環境へ戻す手順をフェールバックとしています。
高可用性は、可用性を高く保ち、システムを止まりにくくすることです。英語のhigh availabilityから、HAとも書きます。NISTの用語集は、装置や部品が止まっている間も可用性を保つフェールオーバーの機能と説明しています。
フォールトトレラントの設計は、高可用性を得るための手段です。AWSの設計指針の「信頼性の柱」も、単一障害点を避けることを設計の基本に挙げています。そして、複数のアベイラビリティゾーンに分けてフォールトトレランスと高可用性を得る形を勧めています。可用性の高さは、稼働率の数値で比べられます。
参考にした資料
- NIST CSRC Glossary「failover」(NIST SP 800-53 Rev. 5の定義)
- NIST CSRC Glossary「High Availability」(NIST SP 800-113の定義)
- AWS「Using Elastic Disaster Recovery for recovery and failback」(Failbackの定義)
- AWS「REL10-BP01 Deploy the workload to multiple locations」(信頼性の柱)
練習問題(全5問)
正解:故障した
フェールソフトは、
正解:フェールセーフ
起点は
正解:フールプルーフ
起点は
正解:品質の
フォールトアボイダンスは、
正解:1台が
アクティブ-スタンバイ構成では、
選んでから「採点する」を押すと、解説つきで答え合わせができます。