
「同一の機能を持つシステムを2台以上用意して冗長化構成をとる」という点で、クラスタリングはフェイルオーバーの考え方を満たす技術の1つであるということができます。ただし、フェイルオーバーの目的が「失敗時の切り替え」であるのに対し、クラスタリングの目的が「負荷分散」である点で両者に違いがあります。
身近にあるフォールトトレランス技術
フォールトトレランスは、システムを絶対に止めてはならないものに対して特に用いられる技術です。つまり、システムの停止がそのまま即、生命の安全や社会生活に著しい支障をきたしかねないものに対して用いられる技術であるということもできます。以下に、身近な例を挙げます。
- 飛行機のエンジン
- 2機以上のエンジンを搭載した航空機において、どちらかのエンジンが故障しても、そのまま墜落することのないよう残ったエンジンでも飛び続けられるよう設計されている。
- 自動車のタイヤ
- タイヤの表面がパンクしてもタイヤが破裂したり急激にしぼんだりしてハンドルコントロールを失うことのないよう、正常に走行し続けられる技術が使われている(ランフラットタイヤ)。
- RAID
- 複数ハードディスクのうち1台が故障しても、コンピュータが全停止しないよう残りのディスクでデータを損失せずに稼働し続けられるようになっている(例:RAID5)。
上記以外にも、停止することが絶対に許されないシステムでは、CPU、メモリ、電源、ネットワークカードなど様々なパーツにおいて二重化をすることで、単一障害点(Single Point of Failure)をできる限り減らしフォールトトレランスの能力を上げる工夫が行われることになります。
耐性があるがためにパーツの故障に気がつかないことも
システムがフォールトトレラントであることは、事業継続の観点からも極めて望ましい状態であるということができますが、複数のパーツを用意するためコストがかかったり、また、部品点数が増えることから一般的に部品の故障頻度そのものは増加する可能性が増加したりするなど、デメリットもあります。
また、バックアップの機器が正常に働いているがために、「実はパーツの一部に故障が起こっている」のに、気がつかないというケースもあります。RAID5の技術などで、ハードディスク1台に故障が出ているにもかかわらず、故障に気がつかずそのまま運用を続けて2台目が壊れてしまう・・・というケースなどです。
フェイルオーバーとフェイルセーフとの関係
フェイルオーバーはシステムを冗長化する技術の1つであり、フォールトトレランスを実現するための技術の1つです。フェイルオーバーは、あくまでもシステムを二重化・三重化するなど”冗長化”によるシステム障害耐性の向上を目指しています。フォールトトレランスは、”冗長化”以外にも、異種技術を複数用いることで片方の技術が失敗しても、同じ原因で”共倒れ”にならないようにする(例:2種類のアンチウイルスソフトを導入することで、片方のソフトがバグで稼働停止しても、片方のソフトは無事に稼働し続ける)など、その手段は1つに限定せず、いかにシステムの全停止を防ぐかという考えに基づいたものです。
フェイルセーフは、フォールトトレランスが「いかに可用性を維持するか」を目的としているのに対して、システムの一部に障害が発生した場合に、二次被害を防止する観点から、「いかに”安全に”停止させるか」を目的とした考え方になります。