FE EXAM

クラスタリング(複数サーバを1台のように動かす)

複数のサーバを連携させて1台のシステムのように動作させる構成。

DIAGRAM
HAクラスタ
負荷分散クラスタ
利用者から見ると1台のシステムに見えるクラスタ(複数のノードを束ねた集まり)ノード1サーバ連携ノード2サーバ連携ノード3サーバ連携ノード4サーバ連携HAクラスタ(高可用性)稼働ノード処理中故障ノード ✗引き継がれる1台が故障しても他のノードが処理を引き継いで止まらない負荷分散クラスタ振り分け役ノード1ノード2ノード3処理を分散して性能を上げる
解説

📌
クラスタリングとは

1台に見えるノード1ノード2ノード3

クラスタリングとは、複数のサーバ(1台ずつを「ノード」と呼びます)を連携させ、全体で1つのシステムのように動かす構成のことです。クラスタ(cluster)は「房(ふさ)・集まり」という意味です。

利用者から見ると、内部に何台サーバがあるかは意識しません。外からは1台のシステムに見えるのがクラスタリングの特徴です。複数台で支え合っているおかげで、1台では実現できない高い性能や安定性が得られます。

身近な例で考えると、レストランの厨房に似ています。お客さんからはお店が「1つの料理を出す存在」に見えますが、裏では複数のコック(ノード)が分担して料理を作っています。1人が休んでも他の人がカバーするので、お店は止まりません。

📌
HAクラスタ/負荷分散クラスタ

HAクラスタ稼働故障故障を引き継ぐ負荷分散クラスタ振り分け処理を分けて性能向上

クラスタリングには、目的の違う2つの代表的なタイプがあります。

HAクラスタ(高可用性クラスタ)は、HA = High Availability(高可用性) の略で、システムを止めないことを目的とします。
・通常はあるノードが処理を担当する
・そのノードが故障すると、別のノードが処理を引き継ぐ(フェイルオーバー)
・利用者は止まったことに気づかず使い続けられる

負荷分散クラスタは、処理を複数ノードに分けて性能を上げることを目的とします。
・「振り分け役」(ロードバランサ)が、来た処理を空いているノードに割り振る
・1台では裁ききれない大量のアクセスを、みんなで分担して処理する
・アクセスが増えたらノードを足すだけで性能を伸ばせる(スケールアウト)

📌
利点

止まりにくい可用性向上速くなる性能向上足せる増設しやすいクラスタリングの主な利点

クラスタリングを導入すると、主に次のような利点が得られます。


可用性が向上する:1台が故障しても他のノードが処理を引き継ぐため、システム全体は止まりにくくなる
性能が向上する:処理を複数ノードで分担できるので、大量のアクセスもさばける
スケールアウトしやすい:性能が足りなくなったらノードを追加するだけで対応できる
保守中も止めずに済む:1台ずつ順番にメンテナンスすれば、サービスを動かしたまま作業できる

身近な例で考えると、スーパーのレジに似ています。レジ(ノード)を増やせばお客さんを速くさばけ(性能向上)、1台が故障しても他のレジで対応でき(可用性向上)、混雑時にはレジを開けて対応します(スケールアウト)。複数台で支え合うからこそ得られる強みです。

📌
なぜクラスタリングが必要か

1台だけのときサーバ1台故障→全停止改善クラスタ化後ノード1ノード21台故障→他が継続限界1: 1台は壊れるとすべてが止まる限界2: 1台は処理できる量に上限がある

結論:サーバが1台だけだと、2つの根本的な弱点がある。それを解決するためにクラスタリングが生まれました。

弱点1:1台が壊れると全部が止まる
どんなサーバも、ハードウェアの故障やソフトウェアの不具合でいつかは止まります。その1台が全処理を担っていると、壊れた瞬間にサービスがゼロになります。ECサイトや銀行システムなら、その間の売上ゼロ・取引不能という大きな損害につながります。

弱点2:1台がさばける量には上限がある
1台のサーバにCPUやメモリを足し続けても(スケールアップ)、物理的・コスト的な限界が来ます。クラスタリングで複数台に分散すれば(スケールアウト)、台数を増やすだけで処理能力を伸ばせます。

身近な例で考えると、1人の職人(1台サーバ)が全注文を1人でこなす工房を想像してください。その職人が体調を崩せば工房が完全に止まり(弱点1)、注文が増えても1人の速さに限界があります(弱点2)。複数の職人を束ねたチームにすれば、どちらの問題も解決できます。これがクラスタリングの根本的な理由です。

📌
フェイルオーバーの仕組み

通常ノード1稼働ノード2待機故障異常検知ノード1故障 ✗ノード2が起動準備引継ぎ継続停止稼働中ノード間は常にお互いの状態を監視し合っている応答がなくなると自動で引継ぎを開始する

フェイルオーバー(=障害時に自動で処理を引き継ぐこと)は、HAクラスタの中心的な仕組みです。フェイル(fail)は「失敗・故障」、オーバー(over)は「引き渡す」という意味で、「故障を引き渡す」→「処理を受け渡す」と覚えると分かりやすいです。

フェイルオーバーは次の流れで自動的に行われます。
監視:各ノードは定期的にお互いの「生きているか」を確認し合っている(ハートビート=心拍確認)
検知:あるノードからの応答が途絶えると「故障した」と判断する
引継ぎ:他の正常なノードが、故障したノードの処理とデータを自動的に受け取る
継続:利用者には気づかれないまま(または短い中断のみで)サービスが続く

身近な例で考えると、リレー競走に似ています。前の走者(ノード1)が転んでバトンを落としたとき、次の走者(ノード2)がすぐバトンを拾って走り続けるイメージです。観客(利用者)からは一瞬の乱れで済み、レース(サービス)自体は止まりません。これが「止まりにくい」というHAクラスタの強みの正体です。

練習問題
Q1クラスタリングの説明として最も適切なものはどれか。
Q2システムを止めないこと(高可用性)を主な目的とするクラスタはどれか。
Q3負荷分散クラスタで、アクセスが増えたときにノードを追加して性能を伸ばす考え方を何というか。

関連コンテンツ