HA/HPC クラスターとは?シャーディング方法を解説

クラスタークラスターとは、複数のコンピュータで1つの機能を実現することです。

クラスターを構築することで障害に強くしたり、パフォーマンスを向上できます。

シャードの解説から先に読みたい方はこちらをどうぞ。

関連記事:データベースの基礎知識編
関連記事:データベース設計
学習ロードマップ
スポンサーリンク

クラスターの種類

クラスターは目的に応じて、次の 2 種類が存在します。

クラスターの種類クラスターの目的
HPC (High Performance Computing) クラスターパフォーマンス向上
HA (High Availability) クラスター可用性 (システムの継続稼働) の向上

HPC クラスター

HPC クラスターとは、パフォーマンスの向上を目的としたクラスターです。

複数のノード (コンピュータ) に処理を分散できるため、早く処理が終わります。

HA クラスター

HA クラスターとは、可用性 (システムの継続稼働) の向上を目的としたクラスターです。

1台が故障しても他のノード (コンピュータ) で処理を継続できます。

高可用性 (HA) クラスターは、次の2種類の構成が存在します。
※HPC は全ノードで処理を分散するので、アクティブ/アクティブ構成と言えます。

アクティブ/スタンバイ (アクティブ/パッシブ) 構成

アクティブ/スタンバイ構成とは、待機状態のノードを用意し、障害時に切り替える構成です

アクティブ/スタンバイ構成は、スタンバイ (待機) 側の状態によって次の 2 種類があります。

アクティブ/スタンバイの種類説明
ホットスタンバイデータベースを起動して待機
コールドスタンバイデータベースを起動せずに待機

コールドスタンバイにする理由は、待機中のデータベースライセンス費をカットできることです。

その代わり、障害が発生してからデータベースを起動するため、切り替えが遅くなります。

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

アクティブ/アクティブ構成とは、通常時から全てのノードを処理に使う構成です。

アクティブ/アクティブ構成は、HA クラスターと HPC クラスターの両方の性質を持ちます。

アクティブ/アクティブ構成の実現方法には、次の2種類があります。

アクティブ/アクティブの種類説明
シェアードエブリシングノード間でリソースを共有するクラスター
主にディスクを共有し、シェアードディスクとも呼ぶ
シェアードナッシングノード間でリソースを共有しないクラスター

なお、障害発生時は、残ったノードに負荷が集中する点に注意が必要です。

スポンサーリンク

クラスターを実現する技術

上述のとおり、アクティブ/アクティブクラスターを実現する方法は次の2つです。

シェアードエブリシング (シェアードディスク/共有ディスク)

シェアードエブリシングとは、各ノードが共通のストレージを利用する構成です。

シェアードナッシング

シェアードナッシングとは、各ノードストレージ等のリソースを共有しない構成です。
クライアントとデータベースサーバーの間にロードバランサーを置いたりする
スポンサーリンク

シャード

シャードシャードとは、データ (テーブルやデータベース) を小さく分割したものです。

シェアードナッシングでは、データを各ストレージに分散配置するためにシャードを使います。

シャードの種類

シャードの種類には、次の 2 つが存在します。

  • プライマリーシャード
  • レプリカシャード

プライマリーシャード

プライマリーシャードとは、読み書き可能なシャードです。

レプリカシャード

レプリカシャードとは、読み取り可能なプライマリーシャードのコピーです。

レプリカシャードは、プライマリーシャードと別のノードに配置します。

レプリカシャードは、プライマリーシャードからレプリケーションします

これにより、ストレージ障害に耐性がつき、可用性が向上します。
(つまり、プライマリーシャード = HPC クラスター、レプリカシャード = HA クラスターも実現)

上記では、左のストレージが故障しても、シャード1、2のデータが残っています。

シャーディングの種類

シャーディングシャーディングとは、シャードにデータを割り当てる方法です。

シャーディングには、主に次の3種類が存在します。

  • Key Based Sharding
  • Range Based Sharding
  • Directory Based Sharding

Key Based Sharding (Hash Base Sharding)

Key Based Sharding とは、カラム(列)のハッシュ値で行をシャードに割り当てる方法です

以下の例では、COLUMN1 のハッシュ値に応じて、行を 2 つのシャードに割り当てます。

https://www.digitalocean.com/community/tutorials/understanding-database-sharding

なお、シャードの割り当てに使うカラムは、シャードキーといいます。

Range Based Sharding

Range Based Sharding とは、値の範囲ごとに、行をシャードに割り当てる方法です。

以下の例では、PRICE カラムの値の範囲に応じて、行を 3 つのシャードに割り当てます。

https://www.digitalocean.com/community/tutorials/understanding-database-sharding

Directory Based Sharding

Directory Based Sharding とは、カラムで割り当てるシャードを指定する方法です。

以下の例では、DELIVERY ZONE カラムで、割り当てるシャードを指定しています。

関連記事

学習ロードマップ
関連記事:データベースの基礎知識編
関連記事:データベース設計

参考記事

クラスタシステムとは?概要や目的、歴史、種類を解説 | ビジネス継続とITについて考える
「クラスタシステム」は、システムの障害対策に有効な手段のひとつです。この記事では、クラスタシステムの概要と歴史、目的に応じてどのような種類があるのかなどについて解説します。

http://www.mysql.gr.jp/frame/modules/bwiki/index.php?plugin=attach&refer=matsunobu&openfile=200707_MySQL_Cluster_OSCKyoto.pdf

https://www.sraoss.co.jp/wp-content/uploads/files/event_seminar/material/2019/dbtech2019-sraoss-postgresql-cluster.pdf