クラスタとは

DBサーバーのHAクラスタの概要図

クラスタとは、共通の目的を達成しようとするリソースのグループであり、互いに認識しあいます。
クラスタリングには、通常、特定のチャネル(ポート)の詳細を交換して状態を維持するための
リソース(通常はサーバー)を設定する必要があるため、リソースの状態は他の場所でも複製されます。

通常、ロードバランシングも含まれ、ロードバランシングポリシーに従って、要求がクラスタ内のリソースの1つにルーティングされます。

上記図はWeb3階層環境化におけるデータ層のサーバー構成例です。
データベースはOracleを利用していると思って下さい。
2台のサーバー(Node1,Node2)にはOracle本体がインストールされています。
2台のサーバーは、「クラスタ通信アダプタ」間を「クラスタ通信ケーブル」で物理的にNIC機器間を連携しています。
Node1,Node2はそれぞれOracleデータベースの実データが管理される共有ディスク(Storage)にSCSIなどの専用の通信機器で接続されます。
Node1が通常時のネットワークルーティングになります。(稼働系)対して、Node2が通常時は待機状態で活動はしていません。(待機系)
Node1が故障、異常時にはフェールオーバーを自動的に行い、Node2を本番系にします。

このようにハードウェアリソースを複数台を用意して、1台が故障しても待機していた同環境の別リソースがサービスを
継続して維持できる構成を「冗長構成」と呼びます。

上記図でわかるようにNode1,Node2の「クラスタ通信アダプタ」間は、常に定周期でお互いの生存確認を
pingなど簡単なネットワークコマンドを流す事で行っています。このような生存確認をハートビート(HeartBeat)と呼びます。

「クラスタ」とはお互いの機器が同様の機器構成で認識しあう点に言葉の主旨があります。

ロードバランサーとは

アプリケーションサーバーのロードバランサーの概要図

ロードバランサーとは、HTTP通信などの大量のリクエストを同一構成をした各サーバーに通信を振り分けるためのネットワーク機器です。
上記例は、Webアプリケーションサーバー層を1台のロードバランサーで振り分けしている概要図です。
ロードバランサーも先の事例と同様に故障した際に待機系にVIP(仮想IPアドレス)を引き渡しして、
稼働系が故障しても待機系で通信及び振り分け処理を継続して実施するようにしています。

ロードバランサーとクラスタの単語が混同し易い理由はこのように、
ロードバランサー自体の主目的はネットワーク上の同一環境のサーバーに通信を振り分ける事で
全体として要求の負荷分散をすることがが主目的であり、物理構成(ハードウェア構成)では
クラスタの技術を用いてロードバランサー自体をクラスタ化しているからです。

上記例ではWebアプリケーションサーバー4台がロードバランサー繋がっています。
Webアプリケーションサーバー自体はクラスタ化されていません。

ロードバランサーは次のタスクを行います。

  1. どのサーバーが稼働してるかの継続的にチェックする。(HealthCheck)
    ヘルスチェック用htmlなどに実際にリクエストを投げたりします。
  2. 新しい要求が受信されると負荷分散ポリシーに従ってサーバーの1つに送信します。
  3. セッション情報維持のために同一の通信経路から来た要求を再度同じサーバーに振り分ける事も可能です。

クラスタ及びロードバランサーにしても構成をみると必ずサーバー機器、ネットワーク機器も冗長構成をとっています。
これは単一の機器のみで通信経路を確保するとその機器が故障した場合に、サービスの通信経路を確保できなくなります。
そのような事を「単一障害点」と呼び、システム構成時に機器、ネットワーク経路を冗長化させることで「単一障害点」を無くすことが システムの可用性を高めることになります。

クラスタ構成における短所は、普段利用しない待機系の機器も揃えなければならず、
またクラスタ構成できる機器はその値段も高いのでHAクラスタ構成は可用性は良いが設備費用が高い点がデメリットになります。