Huney

応用情報(AP) / システム構成要素

高信頼性・高性能システムとは?クラスタリング・HAクラスタ・負荷分散・グリッドコンピューティングを解説

クラスタリングとクラスタシステムの仕組みを初心者向けに解説。HAクラスタ、フェールオーバークラスタ、負荷分散クラスタ、シェアードエブリシングとシェアードナッシング、グリッドコンピューティングの違いを学びます。

読了時間:約21分
  • #システム構成要素
  • #クラスタリング
  • #HAクラスタ
  • #フェールオーバークラスタ
  • #負荷分散
  • #シェアードエブリシング
  • #シェアードナッシング
  • #グリッドコンピューティング
  • #応用情報技術者試験

はじめに

前回の記事では、デュアルシステムやデュプレックスシステムなど、障害に備えるための構成を学びました。

しかし、実際のシステムでは、障害対策だけでなく処理性能の向上も重要です。

例えば、人気のネットショップを考えてみましょう。

普段は問題なく利用できても、大規模なセールが始まるとアクセスが急増します。

その結果、

  • Webページの表示が遅くなる
  • 商品検索に時間がかかる
  • 注文処理が完了しない
  • サーバに負荷が集中して停止する

といった問題が発生する可能性があります。

このような問題に対応する方法の一つが、複数のコンピュータを連携させることです。

複数台を組み合わせれば、障害に備えたり、大量の処理を分担したりできます。

今回は、次の技術を学びます。

高信頼性・高性能システム
│
├─ クラスタリングとクラスタシステム
│   │
│   ├─ HAクラスタ
│   │   └─ フェールオーバークラスタ
│   │
│   ├─ 負荷分散クラスタ
│   │
│   └─ リソースの共有方式
│       ├─ シェアードエブリシング
│       └─ シェアードナッシング
│
└─ グリッドコンピューティング

それでは、基本から理解していきましょう。


1. クラスタリングとは

1-1. クラスタリングの基本

**クラスタリング(Clustering)**とは、複数のコンピュータを連携させ、まとまったシステムとして動作させる技術です。

また、このように構成されたシステムを**クラスタシステム(Cluster System)**と呼びます。

Clusterには「集まり」「群れ」という意味があります。

例えば、3台のサーバを連携させる構成を考えてみましょう。

               利用者
                 │
                 ▼
       ┌─────────────────┐
       │ クラスタシステム │
       │                 │
       │ ┌─────────────┐ │
       │ │ サーバA     │ │
       │ └─────────────┘ │
       │                 │
       │ ┌─────────────┐ │
       │ │ サーバB     │ │
       │ └─────────────┘ │
       │                 │
       │ ┌─────────────┐ │
       │ │ サーバC     │ │
       │ └─────────────┘ │
       └─────────────────┘

利用者から見ると、複数のサーバが連携して一つのサービスを提供しています。

ただし、クラスタシステムは必ずしも一台のコンピュータのように見えるとは限りません。

どのように連携し、どの程度一体化して見えるかは、クラスタの種類や構成によって異なります。


1-2. クラスタリングの目的

クラスタリングには、大きく分けて2つの目的があります。

① 信頼性・可用性の向上

サーバが故障しても、別のサーバが処理を引き継げるようにします。

通常時

サーバA:稼働中
サーバB:待機中

        ↓

サーバAが故障

        ↓

サーバBが処理を引き継ぐ

このような構成は、主にサービス停止時間の短縮を目的としています。

② 処理性能の向上

複数のサーバに処理を分担させることで、全体の処理能力を高めます。

               利用者
                 │
                 ▼
             負荷分散
                 │
       ┌─────────┼─────────┐
       │         │         │
       ▼         ▼         ▼
    サーバA    サーバB    サーバC

1台では処理しきれない要求を、複数台で分担します。

このように、クラスタリングには信頼性を高める目的と、性能を高める目的があることが重要です。


2. HAクラスタ

2-1. HAクラスタとは

**HAクラスタ(High Availability Cluster)**とは、システムの可用性を高めることを目的としたクラスタ構成です。

HAはHigh Availabilityの略で、日本語では高可用性と呼ばれます。

可用性とは、必要なときにシステムやサービスを利用できる性質のことです。

例えば、銀行のシステムや企業の基幹システムなどでは、長時間のサービス停止を避ける必要があります。

そこで、複数のサーバを連携させて障害に備えます。


2-2. HAクラスタの仕組み

代表的な構成の一つが、主系と待機系を用意する方式です。

              利用者
                │
                ▼
         ┌────────────┐
         │ サーバA    │
         │ 主系       │
         │ 稼働中     │
         └──────┬─────┘
                │
          状態を監視
                │
         ┌──────▼─────┐
         │ サーバB    │
         │ 待機系     │
         └────────────┘

サーバBはサーバAの状態を監視します。

サーバAに障害が発生した場合、サーバBが処理を引き継ぎます。

この仕組みによって、サービス停止時間の短縮を目指します。

ただし、HAクラスタを構築しても、必ず無停止になるわけではありません。

障害検知や切替処理に時間がかかる場合があります。


2-3. HAクラスタの特徴

HAクラスタの特徴は次のとおりです。

  • 複数のサーバで障害に備える
  • サーバの稼働状態を監視する
  • 障害時に別のサーバへ処理を引き継ぐ
  • サービス停止時間の短縮を目指す

HAクラスタでは、単にサーバを2台用意するだけでなく、障害を検知し、適切に切り替える仕組みが重要になります。


3. フェールオーバークラスタ

3-1. フェールオーバークラスタとは

**フェールオーバークラスタ(Failover Cluster)**とは、稼働中のサーバに障害が発生した場合、別のサーバへ処理を切り替えるクラスタ構成です。

HAクラスタを実現する代表的な方式の一つです。

前回の記事でも、フェールオーバーについて学びました。

フェールオーバーとは、障害時に待機系などへ処理を切り替えることでしたね。

フェールオーバークラスタでは、この仕組みをクラスタ全体で実現します。


3-2. フェールオーバークラスタの動作

通常時はサーバAが業務処理を行います。

【通常時】

            利用者
              │
              ▼
        ┌──────────┐
        │ サーバA  │
        │ 稼働中   │
        └──────────┘

        ┌──────────┐
        │ サーバB  │
        │ 待機中   │
        └──────────┘

サーバAが故障すると、クラスタの仕組みが障害を検知します。

【障害発生】

        ┌──────────┐
        │ サーバA  │
        │  故障!  │
        └──────────┘
              │
              ▼
         障害を検知
              │
              ▼
        ┌──────────┐
        │ サーバB  │
        │ 処理引継ぎ│
        └──────────┘

その後、サーバBがサービスを提供します。

【切替後】

            利用者
              │
              ▼
        ┌──────────┐
        │ サーバB  │
        │ 稼働中   │
        └──────────┘

これにより、サーバAが故障してもサービスを継続・再開できます。


3-3. フェールオーバークラスタで重要な技術

フェールオーバークラスタでは、次の仕組みが重要になります。

① ヘルスチェック

**ヘルスチェック(Health Check)**とは、サーバやサービスが正常に動作しているかを確認することです。

例えば、一定間隔で応答を確認します。

監視サーバ
    │
    │ 応答確認
    ▼
サーバA
    │
    └─ 正常応答

応答がなくなった場合、障害の可能性があると判断します。

ただし、通信障害によって応答できないだけの場合もあるため、複数の情報から状態を判断することが重要です。

② ハートビート

**ハートビート(Heartbeat)**とは、クラスタを構成するサーバ間で定期的に状態を確認するための通信です。

サーバA ◀──────▶ サーバB
        ハートビート

ハートビートが途絶えると、相手のサーバに障害が発生した可能性があります。

③ スプリットブレイン

**スプリットブレイン(Split Brain)**とは、クラスタ内の通信障害などによって、複数のサーバが自分を主系だと判断してしまう状態です。

例えば、次のような状況です。

サーバA          サーバB
  主系             待機系
   │                 │
   └──── 通信断 ─────┘
   │                 │
   ▼                 ▼
自分が主系!      自分が主系!

両方のサーバが同じデータへ書き込みを行うと、データの破損や不整合につながる可能性があります。

これを防ぐために、**クォーラム(Quorum)**による多数決や、**フェンシング(Fencing)**による異常系統の切り離しなどが利用されます。

🍯 フェールオーバークラスタでは「故障したら切り替える」だけでなく、「誤って両方が稼働しないようにする」ことも重要です。


4. 負荷分散クラスタ

4-1. 負荷分散クラスタとは

**負荷分散クラスタ(Load Balancing Cluster)**とは、複数のサーバに処理を振り分けることで、システム全体の処理能力や応答性を高めるクラスタ構成です。

例えば、Webサイトに大量のアクセスが発生した場合を考えてみましょう。

1台のWebサーバでは処理しきれなくなることがあります。

そこで、複数のWebサーバを用意します。

               利用者
                 │
                 ▼
       ┌─────────────────┐
       │ ロードバランサ  │
       └────────┬────────┘
                │
       ┌────────┼────────┐
       │        │        │
       ▼        ▼        ▼
   ┌──────┐ ┌──────┐ ┌──────┐
   │Web A │ │Web B │ │Web C │
   └──────┘ └──────┘ └──────┘

このように、利用者からの要求を複数のサーバへ分散します。


4-2. ロードバランサとは

**ロードバランサ(Load Balancer)**とは、複数のサーバへ処理を振り分ける装置やソフトウェアです。

例えば、利用者から100件のリクエストが届いたとします。

100件のリクエスト
        │
        ▼
   ロードバランサ
        │
  ┌─────┼─────┐
  │     │     │
  ▼     ▼     ▼
 33件  33件  34件
  │     │     │
  ▼     ▼     ▼
Web A Web B Web C

均等に振り分ければ、1台への負荷集中を軽減できます。

ただし、実際にはサーバの処理能力や現在の負荷に応じて振り分けることもあります。


4-3. 代表的な負荷分散方式

ロードバランサでは、さまざまな振り分け方式が利用されます。

① ラウンドロビン方式

**ラウンドロビン(Round Robin)**とは、サーバへ順番にリクエストを振り分ける方式です。

リクエスト1 → サーバA
リクエスト2 → サーバB
リクエスト3 → サーバC
リクエスト4 → サーバA
リクエスト5 → サーバB

仕組みがシンプルであることが特徴です。

ただし、各リクエストの処理負荷が異なる場合、負荷が均等になるとは限りません。

② 最少接続方式

**最少接続方式(Least Connections)**とは、現在の接続数が少ないサーバへ新しい接続を振り分ける方式です。

例えば、

サーバA:10接続
サーバB: 3接続
サーバC: 7接続

という状況なら、サーバBが選ばれます。

接続時間が長いサービスなどで利用されることがあります。

③ 重み付きラウンドロビン方式

**重み付きラウンドロビン(Weighted Round Robin)**とは、サーバごとに重みを設定して振り分ける方式です。

例えば、

サーバA:高性能 → 重み3
サーバB:標準   → 重み2
サーバC:低性能 → 重み1

と設定すると、振り分けの目安は次のようになります。

サーバA:3/6
サーバB:2/6
サーバC:1/6

高性能なサーバへ多くのリクエストを振り分けられます。


4-4. 負荷分散クラスタのメリット

① 処理能力を向上できる

複数のサーバでリクエストを処理できるため、全体の処理能力を高められます。

② サーバを追加しやすい

アクセス数が増えた場合、サーバを追加することで処理能力を拡張できる場合があります。

このように、サーバの台数を増やして処理能力を高めることを**スケールアウト(Scale Out)**と呼びます。

一方、既存サーバのCPUやメモリを増強することは**スケールアップ(Scale Up)**と呼びます。

③ 障害時の影響を軽減できる

適切なヘルスチェックを行っていれば、故障したサーバを振り分け対象から外せます。

サーバA:正常
サーバB:故障
サーバC:正常

       ↓

サーバA・Cへ振り分け

ただし、ロードバランサ自体が単一障害点にならないよう、ロードバランサの冗長化も重要です。


5. HAクラスタと負荷分散クラスタの違い

ここまでの内容を整理しましょう。

比較項目 HAクラスタ 負荷分散クラスタ
主な目的 可用性の向上 処理能力・応答性の向上
基本的な考え方 障害時に処理を引き継ぐ 複数台で処理を分担
代表的な構成 主系・待機系 複数の稼働サーバ
代表的な技術 フェールオーバー ロードバランシング
期待する効果 サービス停止時間の短縮 負荷集中の軽減

ただし、実際のシステムでは両方の考え方を組み合わせることがあります。

例えば、Webサーバを3台用意して負荷分散し、そのうち1台が故障しても残り2台でサービスを継続する構成です。

この場合、性能向上と可用性向上の両方を目指しています。


6. シェアードエブリシングとシェアードナッシング

クラスタシステムでは、複数のコンピュータがCPU・メモリ・ストレージなどの資源をどのように利用するかも重要です。

ここでは、代表的な2つの考え方を学びます。

  • シェアードエブリシング
  • シェアードナッシング

6-1. シェアードエブリシングとは

**シェアードエブリシング(Shared Everything)**とは、複数の処理主体がCPU・メモリ・ストレージなどの主要な資源を共有する構成です。

代表的な例として、共有メモリ型のマルチプロセッサシステムがあります。

      シェアードエブリシング

     ┌──────────────────┐
     │    共有資源      │
     │                  │
     │  CPU・メモリ     │
     │  ストレージ      │
     └────────┬─────────┘
              │
       ┌──────┼──────┐
       │      │      │
       ▼      ▼      ▼
     処理A  処理B  処理C

複数の処理が共通の資源を利用します。

メリット

  • データを共有しやすい
  • 処理間で情報をやり取りしやすい
  • データの一元管理を行いやすい

デメリット

  • 共有資源へのアクセスが集中する可能性がある
  • 資源の競合が発生する場合がある
  • 共有部分が性能上のボトルネックになる可能性がある

例えば、複数の処理が同じメモリ領域へ頻繁にアクセスすると、競合が発生することがあります。


6-2. シェアードナッシングとは

**シェアードナッシング(Shared Nothing)**とは、各コンピュータがCPU・メモリ・ストレージなどの資源を独立して持つ構成です。

       シェアードナッシング

    ┌────────┐
    │ノードA │
    │CPU     │
    │メモリ  │
    │保存領域│
    └────────┘

    ┌────────┐
    │ノードB │
    │CPU     │
    │メモリ  │
    │保存領域│
    └────────┘

    ┌────────┐
    │ノードC │
    │CPU     │
    │メモリ  │
    │保存領域│
    └────────┘

各ノードが独立した資源を持ち、必要に応じてネットワーク経由で連携します。

メリット

  • 共有資源の競合を避けやすい
  • ノードを追加して処理能力を拡張しやすい
  • 障害の影響を限定できる場合がある

デメリット

  • ノード間の通信が必要になる
  • データの分散管理が複雑になる場合がある
  • データの整合性や配置を考える必要がある

例えば、大量のデータを複数のノードへ分割して保存する分散データベースなどで利用されます。


6-3. シェアードディスクとの違い

クラスタ構成では、**シェアードディスク(Shared Disk)**という方式も重要です。

これは、各ノードがCPUやメモリを独立して持ちながら、ストレージを共有する構成です。

          シェアードディスク

    ┌────────┐    ┌────────┐
    │ノードA │    │ノードB │
    │CPU     │    │CPU     │
    │メモリ  │    │メモリ  │
    └───┬────┘    └────┬───┘
        │              │
        └──────┬───────┘
               │
               ▼
       ┌──────────────┐
       │ 共有ストレージ│
       └──────────────┘

シェアードディスクは、シェアードエブリシングと同じ意味ではありません。

CPUやメモリまで共有するのか、ストレージだけを共有するのかという違いがあります。

なお、共有ストレージを利用する場合は、複数ノードからの同時書き込みによるデータ破損を防ぐ仕組みも重要です。


6-4. 共有方式の比較

比較項目 シェアードエブリシング シェアードディスク シェアードナッシング
CPU 共有する構成 ノードごとに独立 ノードごとに独立
メモリ 共有する構成 ノードごとに独立 ノードごとに独立
ストレージ 共有する構成 共有 ノードごとに独立
特徴 共通資源を利用 データを共有しやすい 資源の独立性が高い
主な課題 共有資源の競合 共有ストレージの競合・障害 データ分散・整合性管理

🍯 はちみつ屋さんで例えると

シェアードエブリシング

みんなで同じ調理場・道具・材料を使って、はちみつ商品を作るイメージです。

シェアードディスク

それぞれの作業場と道具を持っていますが、材料倉庫は共有します。

シェアードナッシング

それぞれが自分の作業場・道具・材料を持って作業します。

シェアードナッシングでは独立性が高い一方、材料の在庫状況などを共有するには連絡が必要になります。


7. グリッドコンピューティング

7-1. グリッドコンピューティングとは

**グリッドコンピューティング(Grid Computing)**とは、ネットワーク上に存在する複数のコンピュータの計算資源を連携させ、大規模な処理を実行する技術です。

Gridには「格子状の網」という意味があります。

例えば、1台のコンピュータでは何日もかかる計算を考えてみましょう。

その計算を複数のコンピュータへ分割し、並行して実行します。

             大規模な計算
                  │
                  ▼
             処理を分割
                  │
       ┌──────────┼──────────┐
       │          │          │
       ▼          ▼          ▼
   コンピュータA  コンピュータB  コンピュータC
       │          │          │
       ▼          ▼          ▼
     計算A       計算B       計算C
       │          │          │
       └──────────┼──────────┘
                  │
                  ▼
              結果を統合

このように、複数のコンピュータが協力して計算を行います。


7-2. グリッドコンピューティングの特徴

グリッドコンピューティングには、次のような特徴があります。

① 分散した計算資源を利用する

ネットワーク上に存在する複数のコンピュータを利用します。

これらのコンピュータは、必ずしも同じ場所に設置されている必要はありません。

② 異なる組織の資源を利用できる

大学や研究機関など、異なる組織が保有する計算資源を連携させる構成もあります。

③ 大規模な計算に適している

大量の計算を分割して実行できる場合、処理時間を短縮できます。

ただし、すべての処理が効率よく分割できるわけではありません。

処理間の通信や結果の統合に時間がかかる場合もあります。


7-3. グリッドコンピューティングの利用例

代表的な利用分野として、次のようなものがあります。

  • 科学技術計算
  • 気象シミュレーション
  • 物理学の研究
  • 大規模なデータ解析
  • 医薬品開発に関する計算

例えば、研究機関が大量のシミュレーションを実行する場合、複数のコンピュータへ計算を分配できます。


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

ここも応用情報技術者試験で押さえておきたいポイントです。

どちらも複数のコンピュータを利用しますが、一般的な構成や管理方法に違いがあります。

比較項目 クラスタコンピューティング グリッドコンピューティング
基本的な考え方 複数台を連携させたシステム 分散した計算資源を連携
主な目的 可用性・性能の向上 大規模な計算資源の活用
管理 一元的に管理されることが多い 複数の管理主体にまたがる場合がある
設置場所 同一拠点・近接拠点が多い 地理的に離れていてもよい
コンピュータの種類 比較的統一されることが多い 異なる種類が混在する場合がある
利用例 Webシステム、DBシステム 科学技術計算、研究用途

ただし、これらは典型的な特徴であり、厳密に区別できない構成もあります。

例えば、地理的に離れたクラスタも存在します。

重要なのは、クラスタは複数台を一つのシステムとして連携させること、グリッドは分散した計算資源を集めて活用することです。


9. 高信頼性と高性能を両立するには

実際のシステムでは、可用性と性能の両方が求められます。

例えば、ネットショップを考えてみましょう。

                  利用者
                    │
                    ▼
           ┌────────────────┐
           │ ロードバランサ │
           └───────┬────────┘
                   │
          ┌────────┼────────┐
          │        │        │
          ▼        ▼        ▼
       ┌─────┐  ┌─────┐  ┌─────┐
       │Web A│  │Web B│  │Web C│
       └─────┘  └─────┘  └─────┘
          │        │        │
          └────────┼────────┘
                   │
                   ▼
           ┌──────────────┐
           │ APサーバ群   │
           └───────┬──────┘
                   │
                   ▼
           ┌──────────────┐
           │ DBクラスタ   │
           └──────────────┘

この構成では、複数の技術を組み合わせています。

Webサーバ

負荷分散クラスタによって、アクセスを複数台へ振り分けます。

APサーバ

複数台で業務処理を分担することで、処理能力を高めます。

DBサーバ

HAクラスタなどを利用し、障害時のサービス停止時間を短縮します。

ただし、この構成でもロードバランサやネットワーク、共有ストレージなどが単一障害点になっていると、そこが故障した際にサービス全体へ影響する可能性があります。

そのため、システム全体の信頼性を考えるときは、サーバだけでなく通信経路やストレージも含めて設計することが重要です。


10. 応用情報技術者試験で押さえたいポイント

今回の内容で特に重要なのは、次の違いです。

① HAクラスタと負荷分散クラスタ

HAクラスタ
→ 障害に強くする

負荷分散クラスタ
→ 処理を分担して性能を高める

② フェールオーバーとロードバランシング

フェールオーバー
→ 障害時に別のサーバへ切り替える

ロードバランシング
→ 複数のサーバへ処理を振り分ける

③ シェアードエブリシングとシェアードナッシング

シェアードエブリシング
→ 主要な資源を共有する

シェアードナッシング
→ 各ノードが独立した資源を持つ

④ クラスタとグリッド

クラスタ
→ 複数台を連携させて
   一つのシステムとして動作させる

グリッド
→ 分散した計算資源を連携させて
   大規模な計算を実行する

まとめ

この記事で覚えること

  • クラスタリングは、複数のコンピュータを連携させて一つのシステムとして動作させる技術
  • HAクラスタは、システムの可用性向上を目的としたクラスタ
  • フェールオーバークラスタは、障害時に別のサーバへ処理を切り替えるクラスタ
  • ヘルスチェックは、サーバやサービスの正常性を確認する仕組み
  • ハートビートは、クラスタを構成するサーバ間で状態を確認する通信
  • スプリットブレインは、複数のサーバが自分を主系と判断してしまう状態
  • 負荷分散クラスタは、複数のサーバへ処理を分担させる構成
  • ロードバランサは、複数のサーバへリクエストを振り分ける装置やソフトウェア
  • ラウンドロビン方式は、サーバへ順番にリクエストを振り分ける方式
  • 最少接続方式は、接続数が少ないサーバへ振り分ける方式
  • シェアードエブリシングは、主要な計算資源を共有する構成
  • シェアードディスクは、各ノードがCPU・メモリを持ち、ストレージを共有する構成
  • シェアードナッシングは、各ノードが独立した資源を持つ構成
  • グリッドコンピューティングは、分散した計算資源を連携させ、大規模な処理を実行する技術

🍯 はちみつメモ

クラスタリングは「複数のコンピュータをチームにする技術」!

**HAクラスタは「誰かが倒れても仕事を続けるチーム」、負荷分散クラスタは「みんなで仕事を分担するチーム」**と考えると覚えやすいよ。

シェアードエブリシングは資源を共有、シェアードナッシングは資源を独立させる構成。

そして、グリッドコンピューティングは、離れた場所にあるコンピュータの計算能力を集めて、大きな仕事に取り組む仕組みだよ!