フィールディングEyeNECフィールディングがお届けする百花繚乱のコラム集

5分で解説!気になるIT用語

2020年03月11日

冗長化

第15回 「冗長化」

 「冗長化(じょうちょうか)」とは、コンピュータや機器、システムに何らかの障害が発生した際に備えて、予備の設備やサブシステムなどを平常時から運用しておくことをいう。

 例えばサーバを2台用意して、一方のサーバ(サーバAとする)でシステムを稼働させ、もう一方のサーバ(サーバBとする)は待機状態にしておく。そうすることで、サーバAが機器の故障などで停止しても、すぐにサーバBでシステムを稼働するよう切り替えることができるわけだ。

 この冗長化によって確保できた安全性のことを、「冗長性」という。一瞬たりとも停止が許されない、人命や財産に関わるようなものは、冗長化の設計を行うことが必須となる。

 なお、冗長化という用語はIT業界のみならず、航空業界や鉄道業界などでも使用されるが、本コラムではITに絞って解説していく。

[メリット]

 それでは冗長化を行うことによるメリットを挙げていこう。

  • ①障害発生時の素早い対応

     通常の障害対応の場合、機器の部品を交換したり、システムのバックアップから復旧作業を行ったりという流れになるが、その間は当然システムなどが停止したままとなる。
     しかし冗長化を行っておくと、自動的にサブシステムに切り替わったり、待機状態だった予備のネットワーク回線に切り替わったりしてシステムを稼働させ続けることができる。わずかなシステムダウンが大きな損失につながる企業にとっては、非常に有効な手立てと言える。
     ただし、冗長化を行っている部分まで同時に被害を受けた場合は当然機能しないため、いざという時のバックアップをとっておくなどの備えは必要である。

  • ②負荷分散

     障害が発生した際だけではなく、アクセス集中などで大きな負荷がかかる場合にも冗長化は有効。複数のサーバに負荷を分散させてシステムを円滑に稼働させることができ、負荷がかかりすぎることによるサーバダウンも未然に防ぐことができる。

  • ③BCP対策

     別記事にて取り上げた「BCP(事業継続計画)」の策定においても、冗長化は非常に重要な項目となる。
     現代はビジネスとITが切り離せない関係にあるため、自然災害やテロ、火災といった緊急事態の発生に備えて冗長化を行っておけば、重要な業務を継続できる可能性は大きく高まる。

[デメリット]

 冗長化のデメリットは非常にコストがかかることである。同じ機能を持つサーバを2台用意するというなら、単純計算でサーバのコストは倍になる。

 実際には、自動切り替えや負荷分散などの構築も行うため、さらにコストがかかることは確実だ。

 よって、冗長化はどんなものにでも行えばいいのではなく、このデメリットを度外視してでも停止させてはならないシステムに対して行うものとなる。例えば、人命に大きく関わる医療機関、顧客の財産を守らなければならない金融機関、国の機能そのものに影響する政府機関のシステムがその代表と言えるだろう。

冗長化の構成

[冗長化の構成]

 冗長化の構成には次のようなものがある。

  • ①アクティブ/アクティブ構成

     同じ機能を持つシステムを複数用意し、それを同時に稼動させる方式。
     例えば2台のサーバが並行して処理を行う形で、平常時は負荷分散によってシステムが効率的に稼働する。障害発生によって片方のサーバが停止しても、もう片方のサーバが全ての処理を行うため、(負荷分散は機能しなくなるものの)システムを引き続き稼働させることができる。

  • ②アクティブ/スタンバイ構成

     同じ機能を持つシステムを複数用意し、そのうちのいくつかを待機状態にしておく方式。「アクティブ/パッシブ構成」ともいう。
     例えば2台のサーバを用意して、片方を平常時に稼働させ(=アクティブ、稼動系)、もう片方を待機状態にする(=スタンバイ、待機系)構成にしておくことで、障害発生時には待機系が処理を引き継ぐことができる。
     この待機状態には2つの種類がある。

    • ・ホットスタンバイ
      平常時から待機系の電源を入れ、稼動系とのデータの同期を常に行っておく状態。電源が入っていることから「ホット」という名称がついている。
      障害発生によって稼動系がダウンしても即座に待機系に切り替えられ、データの同期も行われているため、障害発生前と何ら変わりなくシステムの稼働を継続できる。
    • ・コールドスタンバイ
      平常時には待機系の電源を入れない状態。電源が入っていないことから「コールド」の名称がついている。
      障害が発生すると稼動系から待機系に処理を引き継ぐのは同様だが、こちらはホットスタンバイに比べて切り替えに少し時間がかかるため、その間はシステムが停止してしまう。

     また、平常時には電源を入れていない関係上、データの常時同期も行われていないため、それが必要なシステムには不向き。その代わり、ホットスタンバイに比べてコストが安く済むというメリットがある。

  • ③マスター/スレーブ構成

     複数の機器を連携してシステムなどを動作させるにあたり、そのうちのひとつに全ての管理・制御を担当する「マスター」という役割をあて、残りをマスターに制御させる「スレーブ」とする方式。
     主にデータベースサーバで行われる方式で、この場合、平常時はマスターがデータ読み込み・書き込みといった各処理を行い、スレーブはマスターの制御によって主にマスターのデータの複製(バックアップ)を行う。そしてマスターに障害が発生した際は、スレーブの中のひとつがマスターに切り替わって処理を継続する。

  • ④マルチマスター構成

     マスター/スレーブ構成と違い、全てにマスターの役割を持たせる方式。
     マスター/スレーブ構成のデータベースの場合、スレーブはデータ読み込みだけができて書き込みはできないが、マルチマスター構成の場合は全てで書き込みが可能となっている。
     スレーブをマスターに切り替えるタイムラグがなくなり、障害発生時にも停止することなく稼働するという利点があるが、それぞれのデータの状態は完全に同期させる必要があるため、もしデータの同期に不具合が起こった場合、どのデータが正しいものなのかがわからなくなってしまう可能性がある。
     マスター/スレーブ構成の場合は、常にマスターのデータが正しいという明確な上下関係が存在するためこの問題は起こらないが、マルチマスター構成の場合は、いざという時の整合性を確保するための仕組みが必要になる。

[冗長化の種類]

 それでは最後に代表的な冗長化の種類を紹介しよう。

  • ①サーバ冗長化

     サーバのダウンによってシステムが停止すると、業務自体が停止してしまうという企業は多いだろう。もし外部に対してサービスを提供している場合は大きな損害につながってしまう。
     そうした事態を防ぐためにサーバ冗長化が必要となる。物理サーバ、仮想サーバのどちらでも行うことが可能だ。

  • ②ネットワーク冗長化

     同様に、ネットワークの冗長性を確保することも非常に重要となる。例えば、メイン回線と予備回線というネットワークの二重化を行っておけば、障害発生の際に予備回線に切り替えて業務を継続することができる。ルーターを複数台使った冗長化構成も非常に有効だろう。

  • ③データベース冗長化

     重要性がそこまで高くないデータベースの場合は、通常のバックアップ対応でも問題ないだろうが、基幹システムに深く関わっているというような場合には冗長化が必須となる。
     先に挙げたマスター/スレーブ構成などを行って、障害発生時でもシステムに影響しない環境を構築したい。

この記事は2020年03月11日時点のものです。

コラム「フィールディングEye」へ戻る