冗長化とは?1台故障しても止まらないシステム設計を解説

システム開発・テクノロジー
冗長化とは?ざっくりと3行で
  • 障害が発生しても継続稼働できるように、同じ役割を持つコンポーネントを複数用意するシステム設計の手法だ
  • サーバー・ネットワーク・電源・ストレージなどあらゆる層で適用でき、単一障害点(SPOF)をなくすことが冗長化の本質的な目標
  • 二重化・三重化のコストと障害リスクのバランスを取ることがポイント。「1台壊れても業務継続できる」がシステム設計の最低ラインとして求められる場面が多い

【深掘り】これだけ知ってればOK!

冗長化を理解するキーワードがSPOF(Single Point of Failure=単一障害点)だ。システムのどこかに「ここが壊れると全体が止まるポイント」があれば、それがSPOFだ。冗長化の設計とは、このSPOFをシステムから一つひとつ排除していく作業といえる。

冗長化には大きく2つのパターンがある。アクティブ-アクティブは2台が常時稼働して負荷を分散し、1台が落ちても残りで処理を継続する形だ。処理能力も二重になる利点がある。アクティブ-スタンバイは1台がメインで稼働し、もう1台は待機状態に置いて障害時にのみ切り替わる形だ。スタンバイ機のコストが半分無駄になるが、切り替えのシンプルさで採用されやすい。

冗長化の適用対象はサーバーだけではない。ネットワーク冗長化——複数の回線・ルーターを用意する。電源冗長化——UPS(無停電電源装置)や2系統の電源。ストレージ冗長化——RAIDやレプリケーション。データセンター冗長化——地理的に離れたデータセンターに同じシステムを持つ。本当に止められないシステムは複数の層で冗長化が施されている。

冗長化で見落とされやすいのが切り替えテストだ。冗長構成を組んでも、実際に障害が起きたときにフェイルオーバーが正常に動くか確認しないと、「いざというときに切り替わらなかった」という事態が起きる。定期的なフェイルオーバーテスト障害訓練(ゲームデー)は冗長化の効果を保証するために欠かせない運用だ。

コストとのバランスも重要だ。すべてを二重化すればコストが2倍になる。実務ではシステムの重要度に応じて冗長化のレベルを変えるのが現実的だ。決済処理は三重化、ログ保存は単一構成でバックアップのみ、というように重要度と停止リスクの大きさに応じてメリハリをつける設計が求められる。

よくある誤解

冗長化とバックアップは同じではない

冗長化はシステムをリアルタイムで継続稼働させるための仕組みだ。バックアップはデータを別場所に保存して事後復旧するための仕組みだ。冗長化があってもデータが消えることはあり、その場合にバックアップが必要になる。両方を組み合わせることが完全な障害対策になる。

冗長化すれば完全に止まらないわけではない

2台が同時に壊れた場合・ソフトウェアのバグによる障害・データセンター全体の電源断など、冗長化をもってしても対処できない事態はある。想定するリスクの種類に合わせて冗長化の設計を選ぶ視点が必要だ。

会話での使われ方

ITKAGYO運営者のアイコン画像

このDBサーバー、1台構成ですよね。SPOF になってるので少なくともプライマリとレプリカの2台構成にすべきです。

新しくアサインされたインフラエンジニアが既存システムのリスクを指摘している場面。

ITKAGYO運営者のアイコン画像

冗長化の切り替えテスト、前回やったのいつですか?フェイルオーバーが本当に動くか確認しないと怖いです。

インフラ運用の月次MTGで担当者が定期テストの必要性を訴えている場面。

ITKAGYO運営者のアイコン画像

予算の都合で全部二重化は無理なので、決済系だけアクティブ-アクティブにして、それ以外はバックアップで対応します。

予算交渉の場で情シスが優先度をつけた冗長化方針を説明している場面。

【まとめ】3つのポイント

  • 「SPOF(単一障害点)をなくすことが冗長化の本質」:1か所が壊れると全体が止まるポイントを複数構成に変えることで、部分障害でも継続稼働できるシステムを作る
  • 定期的なフェイルオーバーテストなしに冗長化は完成しない:冗長構成を組んだだけで安心してはいけない。定期的な切り替えテストで実際に動くことを確認して初めて意味を持つ
  • 重要度に応じてメリハリのある冗長化設計を:すべてを二重化するとコストが倍になる。停止時の損害額を基準に重要システムから優先して冗長化レベルを決めるのが合理的な設計だ

よくある質問

Q
冗長化に使われる代表的な技術を教えてください
A

ロードバランサー(サーバーへの負荷分散)・クラスタリング(複数サーバーを1つのシステムとして動かす)・RAID(ストレージの冗長化)・DNS フェイルオーバー(障害時のIPアドレス切り替え)・レプリケーション(DBのデータ同期)が代表的な技術です。

Q
クラウドで冗長化するにはどうすればいいですか?
A

AWSではマルチAZ(複数のアベイラビリティゾーン)にEC2インスタンスを分散し、ELB(ロードバランサー)で負荷分散する構成が基本です。RDSのマルチAZ配置でDBの冗長化も実現できます。

Q
アクティブ-アクティブとアクティブ-スタンバイの使い分けは?
A

常時高負荷で処理能力を最大化したい場合はアクティブ-アクティブ、コストを抑えながら障害対策したい場合はアクティブ-スタンバイが適しています。切り替え時間を数秒以内に抑えたい場合はホットスタンバイ、数分許容できる場合はウォームスタンバイという段階もあります。

Q
冗長化とクラスタリングの違いは何ですか?
A

冗長化はシステムを複数用意して障害時に継続稼働するための設計概念全般を指します。クラスタリングは複数のサーバーを連携させて1つのシステムとして機能させる具体的な技術手法で、冗長化を実現する手段の一つです。

【出典】参考URL

https://e-words.jp/w/SLA.html :冗長化・SPOF・フェイルオーバーの関連概念
https://it-notes.stylemap.co.jp/infrastructure/scalability%E2%86%92-a-comprehensive-guide-to-it-terminology/ :冗長化と可用性の関係

コメント

「IT用語、難しすぎて心が折れそう……」という方のための、ハードル低めな用語辞典です。

情報レベルは「基礎中の基礎」。会話を止めないためのエッセンスだけを抽出しています。分かりやすさを追求するあまり、時々例え話が暴走しているかもしれませんが、そこは「ほどよく」聞き流していただけると幸いです。
ほどよくIT用語辞典システム開発・テクノロジー
デプロイ太郎のSNSを見てみる!!
タイトルとURLをコピーしました