冗長化とは?障害に強いシステムを作るための種類と仕組み

システムが安定的に稼働し続けることは、企業の信頼を支える重要な要素です。もし業務システムが突然停止した場合、業務がストップし、企業の信頼が大きく落ちてしまう可能性があります。そのため、冗長化を行い、システムの突然の停止に備えることが大切です。
「冗長化」とは、システムの信頼性を高め、障害時の業務継続性を確保するための重要な技術です。
本記事では、冗長化の意味やメリット・デメリット、構成方法について解説します。システム障害が発生した場合の対策を考えている方はぜひ参考にしてみてください。
システムにおける冗長化の目的と必要性
冗長化の主な目的は、システムに予期せぬ障害が発生しても、サービスを中断させずに運用を続けることです。これにより、事業の継続性を確保し、企業の評判を損なう可能性のある障害を防げます。平常時からシステム内に予備の設備やサブシステムを待機させておくことが、冗長化の重要なポイントです。
冗長化は、システムの安定稼働を支えるだけでなく、ビジネス全体の継続性にも大きく関わる重要な要素です。
システムにおける冗長化の目的と、なぜそれが必要なのかについて、以下の3点を解説します。
- 冗長化二重化・ミラーリング・バックアップの違い
- 冗長化と可用性(Availability)との関係性
- 冗長化と冗長構成・冗長設計の違い
冗長化・二重化・ミラーリング・バックアップの違い
冗長化と、二重化やミラーリングなど類義語との意味の違いについては、以下のとおりです。
項目 | 詳細 |
---|---|
冗長化 | システムの一部または全体に予備の構成要素を用意し、障害発生時に予備に切り替えることで、システム全体の停止を防ぐ技術 |
二重化 | システムを構成する要素を2つ用意し、一方に障害が発生した場合に、もう一方に切り替えることでシステムを継続させる技術 |
ミラーリング | データを複数のストレージに同時に書き込み、常に同じ状態に保つ技術(ディスク複製) |
バックアップ | データを別の場所にコピーし、元のデータが消失した場合に復元できるようにする技術 |
システムの重要度に応じて、二重化で十分なのか、それとも冗長化が必要なのかを判断しましょう。より高い信頼性が求められるシステムでは、冗長化を検討する必要があります。とくに、金融システムや基幹システムなど、停止が許されないシステムでは、冗長化は必須の対策といえるでしょう。
冗長化と可用性(Availability)との関係性
冗長化は、システムの可用性を高めるための有効な手段のひとつです。可用性とは、システムが正常に稼働し、利用できる時間の割合のことです。
冗長化によって、システムの一部に障害が発生しても、予備のシステムが自動的に処理を引き継ぎます。これにより、システム全体の停止時間を最小限に抑えられ、可用性を高めることが可能です。
システムの可用性は、ビジネスの継続性に直結します。とくに、オンラインサービスやECサイトなど、24時間365日稼働が求められるシステムでは、冗長化による可用性の向上が不可欠です。冗長化のレベルは、システムの重要度や許容できる停止時間などを考慮して決定しましょう。
冗長化と冗長構成・冗長設計の違い
「冗長化」と「冗長構成」「冗長設計」は、それぞれ意味が異なります。これらの言葉は、文脈によって使い分ける必要があります。
- 冗長化:システム全体の信頼性を高めるための「概念」
- 冗長構成:冗長化を実現するためのシステムの「構成方法」(「アクティブ・スタンバイ構成」や「マルチプライマリ構成」など)
- 冗長設計:冗長化の考え方に基づいてシステムを「設計」
「サーバーを冗長化する」は、概念的な表現で、具体的には「アクティブ・スタンバイ構成でサーバーを冗長化する」という場合は、冗長構成を指します。
また、「システムの可用性を高めるために、冗長設計を取り入れる」といった使い分けもされます。「冗長化」は広い意味で使われ、「冗長構成」や「冗長設計」はより具体的な内容を指すことを覚えておきましょう。
冗長化のメリット・デメリット
冗長化のメリットとデメリットは、以下の通りです。
メリット | デメリット |
---|---|
|
|
冗長化はシステムの信頼性を高める有効な手段ですが、導入にはコストも伴います。メリットとデメリットの両方を理解し、自社のシステムに冗長化が必要かどうかを判断することが重要です。
冗長化のメリット
冗長化の最大のメリットは、システムの可用性を大幅に向上させ、事業継続性を確保できることです。システムの一部に障害が発生しても、予備のシステムが自動的に処理を引き継ぐため、サービス停止時間を最小限に抑えられます。これにより、ビジネス機会の損失を防ぎ、顧客からの信頼を維持することが可能です。
具体的には、以下のようなメリットがあります。
メリット | 詳細 |
---|---|
サービス停止時間の短縮 | サーバーが故障しても、自動的に別のサーバーに切り替わるため、ユーザーはサービスを継続して利用できる |
事業継続性の向上 |
|
信頼性の向上 | 安定したサービス提供により、顧客からの信頼を得られる |
データ損失リスクの低減 | データを複数の場所に保存することで、データ消失のリスクを減らせる |
とくに、24時間365日稼働が求められるシステムや、金融システムのように短時間の停止も許されないシステムでは、冗長化は必須の対策です。
冗長化のデメリット
冗長化の主なデメリットは、導入コストと運用コストが増加することです。
具体的には、以下のようなデメリットがあります。
デメリット | 詳細 |
---|---|
導入コストの増加 | 予備のサーバーやネットワーク機器、ソフトウェアライセンスなど、追加の設備投資が必要になる |
運用・管理コストの増加 | 冗長化されたシステムは、監視、メンテナンス、アップデートなど、より多くの運用コストがかかる |
システム構成の複雑化 | システムが複雑になるため、障害発生時の原因究明や復旧作業が難しくなる可能性がある |
冗長化の導入は、システムの重要度、許容できるダウンタイム、予算などを総合的に考慮して判断する必要があります。費用対効果を十分に検討し、過剰な冗長化にならないように注意が必要です。
小規模なシステムや重要度の低いシステムでは、冗長化が不要な場合もあります。冗長化のデメリットをカバーするためには、適切な設計、運用体制の構築、そして定期的な訓練が不可欠です。
冗長化構成の種類一覧
冗長化のそれぞれの構成には特徴があり、システムの要件や目的に応じて適切な構成を選択することが重要です。どのようなシステムを構築したいかによって、最適な冗長化構成は異なります。
ここでは、以下の構成について説明します。
- アクティブ/アクティブ
- アクティブ/スタンバイ
- プライマリ/レプリカ
アクティブ/アクティブ[b]
アクティブ/アクティブ構成は、メインと予備の複数のシステムが同時に稼働し、負荷分散しながら処理を行う冗長化構成です。すべてのシステムが常にアクティブな状態であるため、リソースを有効活用でき、高いパフォーマンスを発揮します。また、一部のシステムに障害が発生しても、残りのシステムで処理を継続できるため、可用性も高まります。
アクティブ/アクティブ構成は、高いパフォーマンスと可用性が求められるシステムに適している点が特徴です。ただし、すべてのシステムが同時に稼働するため、導入・運用コストは比較的高くなります。
アクティブ/スタンバイ[c]
アクティブ/スタンバイ構成は、通常時に稼働するアクティブ機(本番機)と、障害発生時に待機するスタンバイ機(予備機)を用意する冗長化構成です。アクティブ機に障害が発生すると、自動的にスタンバイ機に切り替わるため、システム停止時間を最小限に抑えることが可能です。
データベースサーバーの冗長化によく用いられます。通常時はアクティブ機がデータベースへのアクセスを受け持ち、スタンバイ機はデータの同期を行いながら待機します。アクティブ機がダウンすると、設定に応じてスタンバイ機が自動または手動でアクティブ機に昇格し、処理を引き継ぐ点が特徴です。
アクティブ/スタンバイ構成は、比較的シンプルな構成で高い可用性を実現できるため、多くのシステムで採用されています。ただし、スタンバイ機は通常時は稼働しないため、リソースの利用効率はアクティブ/アクティブ構成に比べて低くなります。
プライマリ/レプリカ
プライマリ/レプリカ構成は、プライマリ機がデータの書き込みと読み込みを担当し、レプリカ機がプライマリ機のデータを複製して読み込み専用として機能する冗長化構成です。プライマリ機に障害が発生した場合、レプリカ機をプライマリ機に昇格させることで、システムの継続運用が可能です。また、読み込み処理をレプリカ機に分散させることで、システム全体のパフォーマンスを向上させることができます。
データベースの冗長化によく用いられます。プライマリデータベースでデータの更新を行い、レプリカデータベースはプライマリデータベースの複製を保持する点が特徴です。これにより、読み込み処理をレプリカデータベースにオフロードし、プライマリデータベースの負荷を軽減できます。
プライマリ/レプリカ構成は、読み込み処理が多いシステムに適しています。ただし、プライマリ機に障害が発生した場合、レプリカ機をプライマリ機に昇格させるための切り替え時間が発生するため、完全な無停止運用は難しい場合もあるでしょう。また、データの書き込みはプライマリ機でしか行えないため、書き込み処理の負荷分散はできません。
サーバー冗長化の構成と種類
サーバー冗長化は、システム全体の可用性を高めるうえで重要な要素です。どのようなシステムを構築したいか、どの程度の可用性が必要かによって、適切な冗長化構成を選択する必要があります。
ここでは、以下の構成と種類について説明します。
- N+1
- ホットスタンバイ
- コールドスタンバイ
サーバーについては、こちらの記事で詳しく解説しています。
N+1
N+1冗長化は、N台の稼働系に対し、1台の予備系を用意する構成であり、サーバーだけでなく、ストレージやネットワーク機器などにも適用されます。N台のうち、どのサーバーに障害が発生しても、1台の予備サーバーが処理を引き継ぐことができるため、効率的かつ経済的に冗長性を確保できます。
例えば、5台のWebサーバーが稼働しているシステムで、1台の予備サーバーを用意する構成がN+1冗長化です。6台のうち、どのWebサーバーがダウンしても、予備サーバーがその処理を引き継ぎます。
N+1冗長化は、コストを抑えつつ、一定レベルの可用性を確保したい場合に適しています。ただし、予備サーバーは1台しかないため、同時に複数のサーバーに障害が発生した場合には対応できません。
ホットスタンバイ
ホットスタンバイは、障害発生時に迅速な切り替えを実現するため、予備機を常に起動し、本番機とほぼ同じ状態に保つ冗長化方式です。予備機は常に稼働状態で待機しているため、障害発生時には即座に処理を引き継ぐことができ、システムのダウンタイムを最小限に抑えられます。データも常に同期されているため、切り替え後のデータ損失もありません。
データベースサーバーの冗長化で、アクティブ/スタンバイ構成をホットスタンバイで運用するケースが考えられます。アクティブ機がダウンすると、ほぼリアルタイムでスタンバイ機に処理が切り替わり、ユーザーはサービスの中断をほとんど感じません。
ホットスタンバイは、システムのダウンタイムを極力短くしたいシステムに適しています。ただし、予備機も常に稼働させる必要があるため、次に解説するコールドスタンバイに比べてコストは高くなります。
コールドスタンバイ
コールドスタンバイは、予備機を通常時は停止させておき、障害発生時に起動して処理を引き継ぐ冗長化方式です。予備機を常に稼働させる必要がないため、ホットスタンバイに比べて運用コストを抑えることが可能です。
バックアップサーバーをコールドスタンバイで運用するケースが考えられます。通常時はバックアップサーバーを停止させておき、本番サーバーに障害が発生した場合にのみ、バックアップサーバーを起動してデータをリストアし、サービスを復旧させます。
コールドスタンバイは、ホットスタンバイほど迅速な切り替えは必要なく、ある程度のダウンタイムが許容できるシステムに適している点が特徴です。システムの復旧には、予備機の起動とデータのリストアなどの時間が必要になるため、RTO(目標復旧時間)を考慮して採用を検討する必要があります。
ネットワーク冗長化の構成と種類
ネットワークの冗長化は、通信の安定性を確保し、ビジネスの継続性を支えるうえで重要です。ネットワークに障害が起きると、業務が停止してしまう可能性があるため、冗長化による対策は不可欠です。
ここでは、以下の構成と種類について説明します。
- STP (Spanning Tree Protocol)
- VRRP (Virtual Router Redundancy Protocol)
- リンクアグリゲーション
- チーミング
STP
STP (Spanning Tree Protocol) は、ネットワーク内でループ構成が発生するのを防ぎ、冗長性を確保するためのプロトコルです。ネットワークがループ構成になると、データが無限に循環してしまい、通信障害の原因となります。STPは、ネットワーク内の経路を監視し、ループが発生しないように一部の経路をブロックすることで、この問題を解決する点が特徴です。
複数のスイッチを環状に接続した場合、STPは自動的に1つの経路をブロックし、残りの経路で通信を行います。もし、アクティブな経路に障害が発生した場合は、ブロックしていた経路を自動的にアクティブにし、通信を継続します。これにより、ネットワークの安定性を保ちながら、冗長性も確保が可能です。
STPは、主にレイヤー2スイッチで構成されるネットワークの冗長化に用いられます。設定が比較的簡単で、広く普及している技術ですが、切り替えに時間がかかる場合があるため、高速な切り替えが必要な場合は他の技術を検討する必要があります。
VRRP
VRRP (Virtual Router Redundancy Protocol) は、複数のルーターを仮想的にひとつのルーターとして動作させ、デフォルトゲートウェイの冗長化を実現するプロトコルです。デフォルトゲートウェイに障害が発生すると、ネットワーク内の機器は外部との通信ができなくなります。
2台のルーターにVRRPを設定し、それぞれに異なるIPアドレスを割り当て、さらに共通の仮想IPアドレスを割り当てる点が特徴です。通常時は、プライマリ機が仮想IPアドレス宛の通信を処理し、バックアップ機は待機状態となります。プライマリ機がダウンすると、バックアップ機が自動的にプライマリ機に昇格し、仮想IPアドレスを引き継ぐことが可能です。これにより、ユーザーはルーターの切り替えを意識することなく、通信を継続できます。
VRRPは、ルーターやファイアウォールだけではなく、スイッチやロードバランサーの冗長化にも利用されます。STPよりも高速な切り替えが可能であり、より高い可用性が求められるネットワークに適している点も特徴です。例えば、企業の基幹ネットワークやデータセンターのネットワークなど、高い信頼性が求められる環境で利用されます。
リンクアグリゲーション
リンクアグリゲーションは、複数の物理回線を束ねて1つの論理回線として扱うことで、帯域幅の拡大と冗長性の向上を実現する技術です。複数の回線を同時に使用することで、通信速度を向上させることができます。また、一部の回線に障害が発生しても、残りの回線で通信を継続できるため、可用性も高まります。
リンクアグリゲーションにより、2本の1Gbps回線を束ねて冗長性と負荷分散を確保することが可能です。ただし、必ずしも2Gbpsの帯域幅を実現できるわけではなく、通信プロトコルや設定によってスループットが制限される場合があります。片方の回線が切断されても、もう片方の回線で通信を継続できます。これにより、高速な通信と高い信頼性の両立が可能です。
リンクアグリゲーションは、サーバーとスイッチ間、スイッチ間の接続など、高速な通信と高い可用性が求められる環境に適しています。ただし、リンクアグリゲーションに対応した機器が必要であり、設定も複雑になる場合があるでしょう。導入には、ネットワーク機器の選定や設定に関する知識が必要になります。
チーミング
チーミングは、主にサーバー側で複数のネットワークインターフェースカード(NIC)を束ねて、1つの論理インターフェースとして扱う技術です。リンクアグリゲーションとほぼ同義で用いられますが、チーミングはとくにサーバー側の設定を指すことが多いです。
複数のNICを同時に使用することで、サーバーのネットワーク帯域幅を拡大し、通信速度を向上させることができます。また、一部のNICに障害が発生しても、残りのNICで通信を継続できるため、可用性も高まります。これにより、サーバーのネットワークパフォーマンスを向上させるとともに、障害に対する耐性を強化することが可能です。
主要な冗長化技術
冗長化技術は、システムのさまざまなレイヤーで適用でき、それぞれ異なる目的と特徴があります。システムのどの部分を守りたいのか、どのような障害から保護したいのかによって、適切な技術を選択することが重要です。
ここでは、以下の技術について説明します。
- RAID (Redundant Array of Independent Disks)
- DRBD (Distributed Replicated Block Device)
- ロードバランサー (Load Balancer)
- 仮想IP (VIP: Virtual IP Address)
RAID (Redundant Array of Independent Disks)
RAID (Redundant Array of Independent Disks) は、複数のディスクを組み合わせ、冗長性やパフォーマンスを向上させる技術です。RAID1やRAID5のようにデータ保護機能を持つものもあります。RAID0はデータを分散書き込みすることで高速化を図るが、耐障害性は持っていません。
複数のハードディスクにデータを分散して書き込んだり、同じデータを複数のハードディスクに書き込んだりします。これにより、1台のハードディスクが故障しても、システム全体を停止させることなく、データを失わずに運用を続けられます。
DRBD (Distributed Replicated Block Device)
DRBD (Distributed Replicated Block Device) は、ネットワークを介して複数のサーバー間でブロックデバイス(ハードディスクやパーティションなど)を、リアルタイムにミラーリングするソフトウェアです。
2台のサーバー間でデータを同期させることで、一方のサーバーに障害が発生しても、もう一方のサーバーで処理を継続できます。これにより、システムの可用性を高められます。
ロードバランサー (Load Balancer)
ロードバランサー (Load Balancer) は、複数のサーバーにネットワークトラフィックを分散させる装置またはソフトウェアです。ロードバランサーは、複数のサーバーに負荷を分散することで、システム全体の処理能力を向上させることができます。また、一部のサーバーに障害が発生しても、残りのサーバーで処理を継続できるため、可用性も高まります。
Webサーバーの前にロードバランサーを設置し、複数のWebサーバーにアクセスを振り分ける構成が一般的です。ロードバランサーは、ラウンドロビン、最小接続、IPハッシュなどの負荷分散アルゴリズムを使用し、最適なサーバーにリクエストを送信します。これにより、特定のサーバーに負荷が集中するのを防ぎ、システム全体の応答速度を向上させることが可能です。
また、サーバーがダウンした場合には、ロードバランサーが自動的にそのサーバーを切り離し、残りのサーバーで処理を継続します。
ロードバランサーについては、こちらの記事で詳しく解説しています。
仮想IP (VIP: Virtual IP Address)
仮想IP (VIP:Virtual IP Address) は、複数のサーバーやネットワーク機器で共有されるIPアドレスであり、主に冗長化構成において、クライアントからのアクセスを受け付ける窓口として利用されます。
仮想IPを使うことで、クライアントは物理的なサーバーのIPアドレスを意識する必要がなくなります。これにより、サーバーの切り替えやメンテナンス時にも、クライアント側の設定変更が不要となるのです。
仮想IPは、ロードバランサーやVRRPなど、さまざまな冗長化技術と組み合わせて利用されます。これにより、システムの可用性を高めるとともに、運用管理の負担を軽減できます。
まとめ
冗長化とは、システムに障害が発生した場合に備え、あらかじめ同じ機能を持つ予備の機器やシステムを用意しておくことです。
アクティブ/アクティブ構成やロードバランサー活用で、障害発生時も即時自動切換えが可能です。サービス停止を最小限に抑え、常に安定稼働している状態を実現できます。
自社にあった冗長化を行い、システム障害が起きても問題ないように対策しましょう。