どうも人生のロードバランサー、ハーマイお兄です。
私は一応しがないSEですが、HW構成などを担当するインフラエンジニアとしても活動しておりました。
その中で、社内でも良く使われる言葉「クラスタ化」と「冗長化」の違いというのがイマイチ分かりづらいという疑問がずっと浮かんでいたので、この違いについて検討してみたいと思います。
初めて聞く方も、一般的に使われる言葉でもありますので、ご一読頂ければ幸いです。
冗長化とクラスタ化とは?
まずは基本的な語句の意味から考えましょう。
冗長化とは・・・
冗長化とは、機器やシステムの構成要素について、同じ機能や役割の要素をあらかじめ複数用意しておき、異状が発生した時に肩代わりできるよう待機させておくこと。一部の機能が損なわれてもシステム全体が停止することを防ぎ、運用を継続することができる。システムの持つそのような性質を「冗長性」(redundancy)という。
参考文献:*1
冗長化は、その機能や役割要素を複数用意して、冗長性を担保するために行うことを表しています。
とっても簡単な例を挙げるとすれば、
とある家があったとして、二つのドアを用意しておきます。
一つが通常使用する「玄関ドア」、もう一つが非常時に脱出するための「非常ドア」です。
このように、安全のために予め二つのドアを用意しておくことを「冗長化」といいます。
一方、クラスタ化とは・・・
クラスタリング(クラスタ化)とは、複数のコンピュータを連結し、利用者や他のコンピュータに対して全体で1台のコンピュータであるかのように振舞わせる技術。OSの機能の一部などとして提供され、特殊なハードウェアなどが無くても複数台のコンピュータを用意するだけで利用できるようになっている場合が多い。
参考文献:*2
クラスタ化は、複数のコンピュータを利用して1台のコンピュータであるように行う技術を表しています。
クラスタ化の中でも、可用性(Availability)を向上させるために行う手法を「HA(Hi Availability)クラスタ」といいます。
例として、あるシステムをWindowsサーバーに乗せて絶えず運用させたい場合、運用系(アクティブ)と待機系(スタンバイ)の二台の同等サーバーを用意しておきます。
そして運用系サーバーに障害が発生した際、瞬時にスタンバイ状態にあった待機系サーバーへ処理を移動させることで、運用状態を維持することが出来ます。
この障害発生時のクラスタ動作を「フェールオーバー」、発生後安定して元の状態に戻すクラスタ動作を「フェールバック」といいます。
この可用性を担保するための方法をアクティブ/スタンバイ構成といい、この全体のことをクラスタ化といいます。
これがクラスタ化における一番分かりやすい冗長化です。(分かりづらい)
そうすると、「あれ?やっぱり『冗長化』と意味一緒じゃね?」と思う節がありますね。
構成する理由は「冗長性を担保するため」なので、冗長化と被ります。
クラスタ化と冗長化は言葉の使い方の違いでは?
そうなってくると、別の観点でみるとします。
すると、冗長化とクラスタ化の違いは言葉の使い方では?という疑念が湧いてきました。
クラスタ化の目的は、運用システムを「冗長化」することにあります。
そしてもう一つ、「処理の負荷分散」を行うことも目的です。
しかし、冗長化の目的は、「クラスタ化」をすることではありません。
但し、「負荷分散」をすることは目的です。笑
ややこしいですね。。。
端的に示すと、、
クラスタ化によって冗長化する○
冗長化によってクラスタ化する✖
=クラスタ化というやり方を用いることで冗長化する
つまり…「クラスタ化」は「冗長化」するための方法を表していると言えます。
「クラスタ化」はシステムを「冗長化」させるための技術なんですね。
反対に、「冗長化」はクラスタ化という手法も含めて取りまとめた抽象的な言葉に過ぎないのです。
具体的に言えば、「冗長化」はITシステムにおける場合だけではなく、「組織の冗長化」、「飛行機エンジンの冗長化」など、多岐に渡って使用することが出来る「抽象的な言葉」として扱われます。
( 「フォールトトレランス技術」とも言います。)
組織の人員配置は「冗長化」することはできますが、クラスタ化することは出来ませんよね?
(例:「部長枠を小林さんと武田さん二人でクラスタ化する」、は適切な言葉では無い。)
よって、言葉としても冗長化=クラスタ化は成り立たないと言えます。
結論、クラスタ化というのは冗長化の中にある一つの手法となります。
クラスタ化と冗長化の分かりづらい理由
クラスタ化=冗長化ではないという事は分かりました。
ただここで問題なのが、ITシステムにおいては冗長化を行う方法は「クラスタ化」するしか方法がないということです笑
だからIT業界においては、クラスタ化も冗長化もどっちも同義のように扱ってしまうんですよね。
ただここで初心に戻ると、クラスタという言葉自体は「まとまり」という意味を表しています。
複数のモノを一つにまとめるということになりますね。
そうすると結局のところ、クラスタ化というのは、
・アクティブ/アクティブ構成でセッティングしてー
・ロードバランサー乗っけてー
・複雑なファイル構成をミラーリングしてー
・IPアドレス振り分けてー
・・・といったような作業内容は一切関係ありません。
ただ単に、「一つに纏めたかどうか」、です。
それが「クラスタ化」という手法であり、それが結果として冗長化に繋がります。
クラスタ化はただの技術手法であり、冗長化はそれを表す抽象的言葉なんです。
何も、難しく考える必要は無かったんですね。
まとめ
如何でしたでしょうか?
クラスタ化と冗長化の違いについてまとめてみましたが、ちょっとマニアック過ぎましたかね?笑
でもこれだけ熱弁すると、クラスタ化と冗長化の違いが自分でもアウトプットできるようになったので嬉しいです。
最後までお読みいただき、ありがとうございました。