クラスタシステムとは?概要や目的、歴史、種類を解説

    メールや共有フォルダ、決済システムなどの業務用サーバには安定した稼働が求められます。ハードウェアやソフトウェアの不具合によりサーバが停止してしまうと、ビジネスに多大な被害が及ぶことにもなりかねないためです。

    このようなリスクに備えるには、システムの冗長化が欠かせません。クラスタシステムは、そのための有効な手段のひとつです。この記事では、クラスタシステムの概要と歴史、目的に応じてどのような種類があるのかなどについて解説します。

    クラスタシステムとは?

    「クラスタシステム」とは、単一のシステムとして動作するように結合されたコンピュータの集合体のことです。クラスタシステムの最大の特徴として、 複数のコンピュータの能力を総合して1台のコンピュータでは実現できないような性能を得る事ができます。

    「cluster」という単語には、「ブドウなどの房」という意味があり、クラスタシステムは単に「クラスタ」ともいわれます。 その構成要素となるコンピュータ(ブドウの「実」にあたる部分)は、「ノード」と呼ばれます。

    また、適切なハードウェアやソフトウェアを選定してクラスタが正しく動作するように構成することを「クラスタリング」といいます。クラスタリングの設計では、ノード同士をどのようにつなぐかが重要です。通常はLANなどのネットワーク経由でノードを接続していきますが、どのような性能を重視したいかによって接続方法は変わります。

    クラスタリングの歴史

    近代的なクラスタリングのはじまりは、1983年に登場した「VMScluster」だとされています。当時のDEC社(現在はヒューレット・パッカード社により買収されている)によるVAXシリーズをノードとして用いたことから、「VAXcluster」という呼び名でも知られるクラスタシステムです。同システムでは、専用のハードウェアとソフトウェアによって最大16台までのノードが接続可能でした。これにより、障害発生時にも短時間で機能を回復できたといわれています。

    1987年には、IBMからメインフレーム専用のOSが登場したことで、基幹システムのトランザクションを中断することなく稼働させられるようになりました。スタンバイマシンを設置しておくことで、障害が発生してもデータベースや通信ソフトウェアと連携しサービスを引き継げるようになったのです。1990年代になるとUNIXでもクラスタシステムが稼働するようになり、マルチプラットフォーム化と低価格化が進みました。現在ではオープンソースのものも含め、クラスタリングのためのさまざまなパッケージをWindowsやLinuxでも利用できるようになっています。

    クラスタリングの目的

    クラスタリングの目的は、複数ノードの組み合わせによって実現されるクラスタシステムそのものの性質でもあります。代表的な2つの目的について、それぞれ説明します。

    スケーラビリティ(拡張性)

    「スケーラビリティ(拡張性)」とは、業務量の増加に対応できる能力のことです。クラスタシステムは、ノードを追加することでシステム全体の性能をアップさせることができます。ただし、クラスタシステムの実際の性能は必ずしもノード数に比例するとは限りません。それぞれのノードが共有リソースにアクセスするようなケースでは、ノード同士の排他制御の関係である程度ノード数が増えると全体としてのスループットが頭打ちになってしまうためです。

    このような限界を克服するために、ネットワーク以外のリソースは一切共有しない「シェアードナッシング」という構成が採用されることもあります。シェアードナッシングでは各ノードが自律的に動作し、共有リソースによる待ち時間も生じません。そのため、システム全体のスループットをノードの追加によって無制限に拡張していくことが可能になります。

    アベイラビリティ(可用性)

    「アベイラビリティ(可用性)」とは、サービスを稼働させ続ける能力のことです。障害発生時にサービスが中断しないようにしたり、たとえ中断したとしても短時間で復旧できるようにしたりすることを指します。クラスタシステムを活用すれば、冗長化によって可用性を高められます。ノードが複数存在するため、あるノードが故障しても残りのノードでタスクを続行できるのです。このように高い水準で可用性を実現していることを、「高可用性」と表現します。

    コンピュータは、長時間稼働させていれば必ず故障やエラーが発生するものです。そのため、故障した箇所をいつでも修理・交換できるようにしておいたほうが安心でしょう。一般的なクラスタシステムでは、稼働中に一部のノードを切り離すことも可能です。これにより、サービスを停止させることなくメンテナンスを実施できます。

    クラスタシステムとグリッドコンピューティングの違い

    クラスタシステムと混同されがちな用語のひとつとして、「グリッドコンピューティング」があります。どちらも分散処理という面では変わりがありませんが、利用目的が異なっています。クラスタシステムは、システム全体としての拡張性や可用性を高めるためのものです。ノードには原則として同種のハードウェアやOSが用いられ、LANなどの高速なネットワークを介して密に結合されます。

    これに対し、グリッドコンピューティングはより広範囲の計算資源を活用するためのものです。インターネットなどを介して多数のコンピュータを疎結合し、それぞれの空き時間を利用することで高い計算能力を得るのです。数百台や数千台ものコンピュータが用いられる例もあり、従来であればスーパーコンピュータが必要だった計算を可能にするほどの能力を発揮することもあります。

    クラスタシステムとデュプレックスシステムの違い

    「デュプレックスシステム」とは、障害発生に備えるために同等の構成が2系統用意されたシステムのことを指す用語です。普段は2系統のうちの一方をアクティブマシンとして稼働させておき、他方をスタンバイマシンとします。アクティブマシンに故障がみつかった場合は、スタンバイマシンに切り替えてサービスを続行します。このとき、サービスの中断時間をいかに短くするかが重要でしょう。あらかじめスタンバイマシンを稼働させておく「ホットスタンバイ」を採用すれば、素早い切り替えを実現できます。これに対し、スタンバイマシンの電源が入っていなかったり、別のタスクが割り当てられていたりする方式を「コールドスタンバイ」といいます。

    クラスタシステムでも、デュプレックスシステムと同等の構成は可能です。ただし、原則としてホットスタンバイとなるため、故障の際には短時間でサービスを再開できます。また、可用性だけでなく拡張性も備えているという特徴により、ノード数を増やしてシステム全体のスループットを高めることも可能です。

    クラスタシステムの種類

    クラスタシステムには性質や構築方法などによって多くの種類がありますが、目的によって「HPCクラスタ」と「HAクラスタ」の2つに大別できます。それぞれについて、解説していきます。

    HPCクラスタ

    「HPC」は「High Performance Computing」の略であり、HPCクラスタとは高い計算能力を得ることを目的として構築されたクラスタシステムです。例としては、スーパーコンピュータをイメージするとわかりやすいでしょう。スーパーコンピュータは、シミュレーションなどで必要になる大量の演算を多数のノードに振り分けて並列実行します。これにより、1台のコンピュータでは到底実現できない高いパフォーマンスを発揮できるのです。

    HPCクラスタでは、すべてのノードが同じ役割を持つとは限りません。制御用ノードを配置して、演算用ノードにタスクを振り分けたり演算結果をとりまとめたりするのが一般的です。また、データベースへのアクセスを専用のノードが受け持つ場合もあります。

    HAクラスタ

    「HA」は「High Availability」の略であり、高可用性という意味があります。HAクラスタとは、可用性を高めることを目的として構築されたクラスタシステムです。HAクラスタは、構築方法の違いで「フェイルオーバークラスタ」と「負荷分散クラスタ」に分類できます。

    フェイルオーバークラスタ

    フェイルオーバークラスタは、業務を中断なく行えるようにするためのものです。クラスタに参加するノードを「稼働(アクティブ)系」と「待機(スタンバイ)系」の2つのグループに分けておき、稼働系に故障が生じた場合には待機系にサービスを引き継ぎます。この特徴から、「Active-Standby型」とも呼ばれる方式です。デュプレックスシステムは、HAクラスタの一種だということがわかるでしょう。フェイルオーバークラスタは、データの持ち方によってさらに「共有ディスクタイプ」と「データミラータイプ」の2つに分けられます。

    フェイルオーバークラスタ図

    共有ディスクタイプは、稼働系と待機系が共通のディスク領域にアクセスする方式です。稼働系に故障が生じた場合には共有ディスクに破損がないかチェックし、必要に応じて修復したうえで同じデータがそのまま引き継がれます。これは大量のデータを扱う業務に向いている方法ですが、一般的に設備が高価になる傾向があります。これに対し、データミラータイプは比較的安価なハードウェアで実現できる方法です。共有ディスクを用いるのではなく、稼働系と待機系がそれぞれのディスク領域を使用します。データに矛盾が生じないようにするため、両者のディスクは常に同期させておかなければなりません。そのため、稼働系のディスクに書き込みが生じたときは、変更分を待機系にも送信するようになっています。

    クラスタシステムの各ノードは、LANなどの高速なネットワークで接続するのが基本です。しかし、稼働系と待機系が同一施設内に設置されていると、可用性を担保できないケースもあります。例えば、地震や水害などの災害によってシステム全体が被害を受けた場合です。災害時の故障にも対応できるようにするには、稼働系と待機系を地理的に離れた場所に設置する必要があるでしょう。このような方式は、フェイルオーバークラスタのなかでも特に「遠隔クラスタ」と呼ばれます。

    負荷分散クラスタ

    負荷分散クラスタは可用性に加えてパフォーマンスの向上も実現できる方式です。同等のタスクを処理できる複数のノードを接続することで、サービスに必要な処理を細分化して実行します。待機系が存在するフェイルオーバークラスタと異なり、いずれのノードも稼働系のため「Active-Active型」とも呼ばれます。故障の際にはほかのノードにタスクを割り当てることが可能なため、システムを稼働させたままのメンテナンスが可能です。負荷分散クラスタも、分散させる対象によって「ロードバランスクラスタ」と「並列データベースクラスタ」の2つに分けられます。

    負荷分散クラスタ図

    ロードバランスクラスタは、個々のタスクをどのノードで実行するかをロードバランサーが決定する方式です。業務アプリケーションのスループットを高めたい場合などによく用いられます。これに対し、並列データベースクラスタは複数のデータベースサーバを接続して可用性とパフォーマンスの向上を狙う方式です。データベースそのものは共通でも、並列データベースエンジンによってデータの入出力に関する負荷を分散させることができます。

    Linuxサーバの冗長化はLINBITクラスタスタックで

    業務用アプリケーションなどは、Linuxサーバを用いて構築するケースも多いでしょう。Linuxサーバの冗長化には、LINBIT社が開発したオープンソースの「LINBITクラスタスタック」の活用がおすすめです。しかし、オープンソースにはあらゆる責任を自社で負わなければならないという側面もあります。そのような負担を軽減したい企業のために、ここからは同ソフトウェア向けの商用サポートである「LINBITクラスタスタックサポート」を紹介します。オープンソースならではのコストメリットを最大化しつつ、3つの利用形態のなかから目的にあわせて最適なものを選べる点が特徴です。

    なお、オープンソースを原則利用しない方針をとっていたり、すでにWindows Serverでアプリケーションを運用していたりする場合もあるかもしれません。そのような企業向けの製品としては、「SIOS LifeKeeper」という選択肢もあります。

    HA(High Availability)

    「HA(High Availability)」は、LINBITクラスタスタックサポートで可能な3つの利用形態のなかで、特に可用性を高めることを目的としたものです。稼働系と待機系を用意しておくことで障害の発生に備えるフェイルオーバークラスタで、10年以上にわたり大手からスタートアップまで数多くの企業に採用されています。シェアードナッシング構成でデータは常に同期されており、万が一の故障の際にはスタンバイマシンが自動的にアクティブマシンに昇格します。レプリケーションは高速かつリアルタイムで行われるため、アプリケーション自身がデータのミラーリングについて意識する必要はありません。また、必要に応じて共有ディスクを用いたシェアード構成も選択可能です。

    DRBD HA図

    DR(Disaster Recovery)

    「DR(Disaster Recovery)」は、災害復旧に重点をおいた利用形態です。遠隔地でのレプリケーションを、ソフトウェアによって低コストで実現できます。クラウドに対応しており、オンプレミスのデータをクラウドと同期する運用も可能です。また、「マルチクラウド」という応用的な活用方法により、例えばAWSとAzureのような異なるクラウド間でのレプリケーションも実現できます。さらに、LINBITクラスタスタックサポートの加入者はオプションで「DRBD Proxy」も利用できます。これは転送アクセラレータソフトウェアで、回線品質が保証されない状況下でも、アプリケーションのスループット低下を抑えながら安定した通信を可能にするものです。

    DRBD DR 図

    SDS(Software Defined Storage)

    「SDS(Software Defined Storage)」は、ストレージの拡張性を高める利用形態です。ソフトウェアによって複数ノードのディスクを束ね、1つの大きなディスク領域として扱います。HDDとSSDのような、種類の異なるディスクを組み合わせることも可能です。ノードを追加していけば、システムを稼働させたままストレージの速度と容量をスケールアウトできるという特徴があります。故障などによるノードの入れ替えの際にも、システムを停止させる必要はありません。また、汎用のサーバとストレージを利用できるため、特定ベンダーに頼ったソリューションと比べて大幅なコストダウンが可能です。

    DRBD SDS 図

    まとめ

    ビジネスにおける機会損失のリスクに備えるために、複数のコンピュータを結合してサーバの拡張性や可用性を高めるクラスタシステムが活用されています。クラスタシステムにはさまざまな構築方法がありますが、どのような性能を重視するかによって製品や利用形態を選ぶことが重要です。「LINBITクラスタスタックサポート」は、オープンソースによる低コスト化と商用サポートを両立させた安心のサービスです。3つの利用形態のなかから自社に最適なものを選び、安定運用を実現させましょう。