複数のサーバを連携させて1台のシステムのように動作させる構成。
クラスタリングとは、複数のサーバ(1台ずつを「ノード」と呼びます)を連携させ、全体で1つのシステムのように動かす構成のことです。クラスタ(cluster)は「房(ふさ)・集まり」という意味です。
利用者から見ると、内部に何台サーバがあるかは意識しません。外からは1台のシステムに見えるのがクラスタリングの特徴です。複数台で支え合っているおかげで、1台では実現できない高い性能や安定性が得られます。
身近な例で考えると、レストランの厨房に似ています。お客さんからはお店が「1つの料理を出す存在」に見えますが、裏では複数のコック(ノード)が分担して料理を作っています。1人が休んでも他の人がカバーするので、お店は止まりません。
クラスタリングには、目的の違う2つの代表的なタイプがあります。
HAクラスタ(高可用性クラスタ)は、HA = High Availability(高可用性) の略で、システムを止めないことを目的とします。
・通常はあるノードが処理を担当する
・そのノードが故障すると、別のノードが処理を引き継ぐ(フェイルオーバー)
・利用者は止まったことに気づかず使い続けられる
負荷分散クラスタは、処理を複数ノードに分けて性能を上げることを目的とします。
・「振り分け役」(ロードバランサ)が、来た処理を空いているノードに割り振る
・1台では裁ききれない大量のアクセスを、みんなで分担して処理する
・アクセスが増えたらノードを足すだけで性能を伸ばせる(スケールアウト)
クラスタリングを導入すると、主に次のような利点が得られます。
・可用性が向上する:1台が故障しても他のノードが処理を引き継ぐため、システム全体は止まりにくくなる
・性能が向上する:処理を複数ノードで分担できるので、大量のアクセスもさばける
・スケールアウトしやすい:性能が足りなくなったらノードを追加するだけで対応できる
・保守中も止めずに済む:1台ずつ順番にメンテナンスすれば、サービスを動かしたまま作業できる
身近な例で考えると、スーパーのレジに似ています。レジ(ノード)を増やせばお客さんを速くさばけ(性能向上)、1台が故障しても他のレジで対応でき(可用性向上)、混雑時にはレジを開けて対応します(スケールアウト)。複数台で支え合うからこそ得られる強みです。
結論:サーバが1台だけだと、2つの根本的な弱点がある。それを解決するためにクラスタリングが生まれました。
弱点1:1台が壊れると全部が止まる
どんなサーバも、ハードウェアの故障やソフトウェアの不具合でいつかは止まります。その1台が全処理を担っていると、壊れた瞬間にサービスがゼロになります。ECサイトや銀行システムなら、その間の売上ゼロ・取引不能という大きな損害につながります。
弱点2:1台がさばける量には上限がある
1台のサーバにCPUやメモリを足し続けても(スケールアップ)、物理的・コスト的な限界が来ます。クラスタリングで複数台に分散すれば(スケールアウト)、台数を増やすだけで処理能力を伸ばせます。
身近な例で考えると、1人の職人(1台サーバ)が全注文を1人でこなす工房を想像してください。その職人が体調を崩せば工房が完全に止まり(弱点1)、注文が増えても1人の速さに限界があります(弱点2)。複数の職人を束ねたチームにすれば、どちらの問題も解決できます。これがクラスタリングの根本的な理由です。
フェイルオーバー(=障害時に自動で処理を引き継ぐこと)は、HAクラスタの中心的な仕組みです。フェイル(fail)は「失敗・故障」、オーバー(over)は「引き渡す」という意味で、「故障を引き渡す」→「処理を受け渡す」と覚えると分かりやすいです。
フェイルオーバーは次の流れで自動的に行われます。
・監視:各ノードは定期的にお互いの「生きているか」を確認し合っている(ハートビート=心拍確認)
・検知:あるノードからの応答が途絶えると「故障した」と判断する
・引継ぎ:他の正常なノードが、故障したノードの処理とデータを自動的に受け取る
・継続:利用者には気づかれないまま(または短い中断のみで)サービスが続く
身近な例で考えると、リレー競走に似ています。前の走者(ノード1)が転んでバトンを落としたとき、次の走者(ノード2)がすぐバトンを拾って走り続けるイメージです。観客(利用者)からは一瞬の乱れで済み、レース(サービス)自体は止まりません。これが「止まりにくい」というHAクラスタの強みの正体です。