インフラでいう耐障害性とは?初心者向けに可用性との違いや障害に強いシステムの仕組みをわかりやすく解説
結論
インフラでいう耐障害性(Fault Tolerance)とは、サーバーやネットワークなどに障害が発生しても、システムを継続して動作させる能力のことです。
耐障害性が高いシステムは、一部の機器が故障してもサービス停止やデータ損失を最小限に抑えられます。可用性を高めるための重要な要素の1つです。
耐障害性とは?
耐障害性とは、システムの一部に障害が発生しても、全体として正常に動作し続けられるように設計する考え方です。
例えば、Webサーバーが3台ある環境で1台が故障しても、残り2台が処理を引き継げば利用者はサービスを継続して利用できます。
つまり、「障害が起きても止まらない、または影響を最小限に抑える仕組み」が耐障害性です。
どんな場面で使われる?
耐障害性は、停止が許されないシステムで広く採用されています。
| 利用場面 | 耐障害性が必要な理由 |
|---|---|
| 金融システム | 取引を停止させないため |
| ECサイト | 売上機会を失わないため |
| クラウドサービス | 24時間サービスを提供するため |
| 社内システム | 業務停止を防ぐため |
| 医療システム | 重要な情報を継続して利用するため |
なぜ重要なのか
サーバーやネットワーク機器は、どれだけ高性能でも故障する可能性があります。
耐障害性を考慮していないシステムでは、1台の故障がサービス全体の停止につながることがあります。
そのため、障害を前提として設計することが、現在のインフラでは非常に重要です。
耐障害性を高める主な技術
| 技術 | 役割 |
|---|---|
| 冗長化 | 予備機を用意する |
| フェールオーバー | 障害時に自動で切り替える |
| 負荷分散 | 複数サーバーへ処理を分散する |
| レプリケーション | データを複製する |
| RAID | ディスク障害に備える |
| UPS | 停電時に電源を維持する |
これらの技術を組み合わせることで、障害に強いシステムを構築できます。
耐障害性と可用性の違い
| 項目 | 耐障害性 | 可用性 |
|---|---|---|
| 意味 | 障害が発生しても動き続ける能力 | 利用したいときに利用できる能力 |
| 重視する点 | 障害への強さ | サービス継続 |
| 関係 | 可用性を高めるための要素 | 最終的なサービス品質 |
耐障害性が高いほど、結果として可用性も高くなります。
耐障害性と冗長化の違い
| 項目 | 耐障害性 | 冗長化 |
|---|---|---|
| 意味 | 障害に強い性質や能力 | 予備機を用意する構成 |
| 役割 | システム全体の継続運用 | 障害時の備え |
冗長化は、耐障害性を実現するための代表的な方法の1つです。
実際のIT現場での利用例
Webシステム
複数のWebサーバーとロードバランサーを組み合わせ、1台が停止しても他のサーバーが処理を継続します。
Windows Server
Windows Server Failover Clusterを利用し、障害発生時に自動で待機系サーバーへ切り替えます。
クラウド環境
複数のアベイラビリティゾーン(AZ)へサーバーを配置し、データセンター障害にも備えます。
ストレージ
RAID構成を採用し、ディスクが故障してもデータを利用できるようにします。
業務でよくあるトラブル例
冗長化しているのに停止した
主な原因
- フェールオーバー失敗
- 共有ストレージ障害
- ロードバランサー障害
- 設定ミス
障害発生後に自動復旧しない
主な原因
- 監視設定の誤り
- クラスタ構成の異常
- ハートビート通信障害
- ソフトウェア不具合
障害発生時の確認する順番
- 影響範囲を確認する
- 障害が発生した機器を特定する
- フェールオーバーが実行されたか確認する
- 待機系サーバーが正常か確認する
- イベントログを確認する
- 利用者がサービスを利用できるか確認する
耐障害性を備えた環境では、故障した機器だけでなく、代替機器が正常に動作しているかも必ず確認しましょう。
GUIでの確認方法
Windows環境では、次のツールを利用します。
- フェールオーバークラスターマネージャー
- サーバーマネージャー
- イベントビューアー
- パフォーマンスモニター
クラウドでは、AWS Management ConsoleやAzure Portalなどからリソースの状態やアラートを確認できます。
CUI(コマンド)での確認方法
Windowsでは、次のようなコマンドを利用します。
- Get-Cluster(クラスタ情報確認)
- Get-ClusterNode(ノード状態確認)
- ping(通信確認)
- ipconfig(ネットワーク設定確認)
- systeminfo(システム情報確認)
Linuxでは、systemctl、journalctl、topなどのコマンドを利用して障害状況を確認します。
確認結果の見方
- フェールオーバーが正常に実行されたか
- 待機系サーバーが稼働しているか
- イベントログにエラーがないか
- 利用者が正常にアクセスできるか
- 障害が他の機器へ波及していないか
原因の切り分け
| 確認項目 | 確認内容 |
|---|---|
| サーバー | OSやサービスに異常はないか |
| ネットワーク | 通信障害はないか |
| クラスタ | フェールオーバーは成功したか |
| ストレージ | 共有ディスクやRAIDに異常はないか |
| 監視 | 障害検知が正常に動作したか |
初心者がやりがちなミス
- 耐障害性と可用性を同じ意味だと思う
- 冗長化だけで十分だと考える
- フェールオーバーテストを実施しない
- 待機系サーバーの動作確認を怠る
- 障害発生後にログを確認せず再起動する
上司へ報告するポイント
- 障害が発生した機器
- 影響範囲
- フェールオーバーの実施状況
- サービス継続の可否
- イベントログの内容
- 実施した確認内容
- 現在の復旧状況
エスカレーションするタイミング
- フェールオーバーが失敗した
- 待機系サーバーも利用できない
- 共有ストレージに障害がある
- 複数の機器で同時に障害が発生している
- 原因が特定できない
応用知識
耐障害性は、クラウドサービスやコンテナ環境でも重要な考え方です。例えば、KubernetesではPodが異常終了すると自動的に新しいPodを起動し、サービスを継続します。また、クラウドでは複数のリージョンやアベイラビリティゾーンにシステムを配置することで、データセンター単位の障害にも対応できます。
関連するIT用語
- 可用性(Availability)
- 高可用性(HA)
- 冗長化
- フェールオーバー
- 負荷分散
- レプリケーション
- RAID
- クラスタ
- ディザスタリカバリー(DR)
よくある質問(FAQ)
耐障害性とは簡単に言うと何ですか?
障害が発生しても、システムやサービスを継続して利用できるようにする能力や仕組みのことです。
耐障害性と可用性の違いは何ですか?
耐障害性は「障害にどれだけ強いか」を表し、可用性は「利用したいときに利用できるか」を表します。耐障害性を高めることで、結果として可用性も向上します。
耐障害性を高めるには何が必要ですか?
冗長化、フェールオーバー、負荷分散、レプリケーション、RAID、UPS、監視システムなどを組み合わせることが一般的です。
耐障害性が高ければシステムは絶対に止まりませんか?
いいえ。耐障害性を高めることで停止する可能性は低くなりますが、設定ミスや大規模災害、ソフトウェアの重大な不具合などにより停止する可能性はあります。そのため、バックアップや災害対策(DR)もあわせて実施することが重要です。
まとめ
耐障害性とは、障害が発生してもシステムやサービスを継続して動作させる能力です。サーバーやネットワーク、ストレージなどの一部が故障しても、影響を最小限に抑えられるよう設計することが目的です。
また、「冗長化で予備機を用意する」「フェールオーバーで自動切り替えを行う」「負荷分散で処理を分散する」「レプリケーションでデータを複製する」といった技術を組み合わせることで、耐障害性を高められます。インフラエンジニアにとっては、「障害は必ず起こる」という前提でシステムを設計・運用する考え方を身に付けることが重要です。
