JP5711772B2 - クラスタシステム - Google Patents

クラスタシステム Download PDF

Info

Publication number
JP5711772B2
JP5711772B2 JP2013014058A JP2013014058A JP5711772B2 JP 5711772 B2 JP5711772 B2 JP 5711772B2 JP 2013014058 A JP2013014058 A JP 2013014058A JP 2013014058 A JP2013014058 A JP 2013014058A JP 5711772 B2 JP5711772 B2 JP 5711772B2
Authority
JP
Japan
Prior art keywords
node
data
information
identifier management
node identifier
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013014058A
Other languages
English (en)
Other versions
JP2014146153A (ja
Inventor
絵里子 岩佐
絵里子 岩佐
雅志 金子
雅志 金子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2013014058A priority Critical patent/JP5711772B2/ja
Publication of JP2014146153A publication Critical patent/JP2014146153A/ja
Application granted granted Critical
Publication of JP5711772B2 publication Critical patent/JP5711772B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、複数のノードで構成されたクラスタシステム(クラスタ構成の分散システム)内で、各ノード間で一貫性が必要とされるデータ(例えば、管理情報)の不整合を検出し回復する技術に関する。
近年、複数のコンピュータ(ノード)を協調動作させて全体で1台のコンピュータであるかのように振舞うクラスタシステムが、クラウドコンピューティングに利用されている。
クラスタシステムは、多量なデータの処理や保持を効率的に実行することができる。データ管理手法の一例として、処理対象のデータに含まれるkeyをハッシュ関数に適用してハッシュ値(hash(key)と表記)を算出し、そのハッシュ値をノード(サーバ)数Nで割った余り、すなわち、hash(key) mod Nを算出し、その算出した数値(番号)に関連付けられたノードが当該データを処理または保持する技術が開示されている。ただし、ノードの番号は、0〜(N−1)のいずれかが割り当てられているものとする。このデータ管理手法では、ノードを追加または離脱すると、Nの値が変化するため、データの処理や保持を担当するノードが変更になる。言い換えると、ノードの追加または離脱後に、クラスタシステム内で、担当のノードが変更になった多量のデータを再配置しなければならないという問題が発生する。
再配置によって影響を受けるデータ量を低減するために、コンシステント・ハッシュ法(非特許文献1参照)を用いたデータ管理手法が開示され、実際に運用されている(非特許文献2参照)。コンシステント・ハッシュ法は、ID空間で用いられるIDをノードに割り当てるとともに、前記ID空間内の値(すなわちID)を算出するハッシュ関数によってデータのハッシュ値を算出する。なお、ID空間は、例えば、IDが0〜Mであった場合には、0からMまで昇順に円上に並べ、Mの次が再び0から始まって巡回するように構成されている。そして、例えば、データのハッシュ値から前記ID空間を一方向に辿って最初に到達するノードが、当該データの処理や保持を担当するように決める。ここで、一方向とは、ID空間のIDが円上に配置されている状態において、例えば、IDが昇順方向(時計回りの方向)を意味している。
また、クラスタシステムにおいて、各ノードのデータ処理性能が等しい場合、各ノードが担当するデータ量は等しいことが望ましい。すなわち、コンシステント・ハッシュ法のID空間において、ノードのID間の距離(担当領域)が等しいことが望ましい。そのために、1つのノードに複数の仮想的なID(以降、仮想IDと称す)を割り当てる手法が開示されている(非特許文献1参照)。この手法では、ノードそれぞれが複数の仮想IDを持つことで、仮想ID毎の担当領域が異なっていても、大数の法則に従って、各ノードの担当領域を平均化することができる。
David Karger、外5名、"Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web"、[online]、[2013年1月10日検索]、インターネット<URL:http://www.akamai.com/dl/technical_publications/ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf> Giuseppe DeCandia、外8名、"Dynamo: Amazon’s Highly Available Key-value Store"、[online]、[2013年1月10日検索]、インターネット<URL:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf>
クラスタシステムは、クラスタを構成するノードの追加および離脱に対応するために、ノード間で一貫性が必要とされるデータ(管理情報)に基づいて、データの処理および保持を行っている。例えば、一貫性が必要とされるデータ(管理情報)には、クラスタを構成するノード群の情報や、それにデータのノード配置を加えた情報等がある。具体的には、一貫性が必要とされるデータ(管理情報)には、ノード識別子とIP(Internet Protocol)アドレスとを関連付けたノード識別子管理テーブルや、死活を監視する対象のノードをリストアップした死活監視テーブルがある。
ノード識別子管理テーブルは、前記ID空間のIDまたは仮想IDと一意に対応付けたノード識別子と、ノードが通信を行うために用いられるIPアドレスとを関連付けたものである。また、死活監視テーブルは、どのノードの死活を監視するのかについて、監視対象のノードをリストアップしたものであって、監視対象のノードのIPアドレスを格納したものである。
クラスタシステムにおいて、ノードの追加が行われた場合や、ノードが故障して離脱した場合には、システムの構成が変更になる。その構成変更に伴って、すべてのノードにおいて、ノード識別子管理テーブルや死活監視テーブルは更新される必要がある。しかしながら、すべてのノードでのノード識別子管理テーブルや死活監視テーブルの更新が完了する前 に、新たにノードの追加や離脱(故障)が発生した場合に、一貫性が必要とされるデータ(管理情報)がノード間で不整合を生じるという問題が発生する。
そこで、本発明は、クラスタシステム内で一貫性が必要とされるデータの不整合を検出し回復することを課題とする。
本発明は、複数のノードが環状に関連付けられて構成されるクラスタシステムであって、前記ノードが、複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに、死活監視情報と共に前記データの整合性を確認できる情報を送信する死活監視部と、前記死活監視情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データと不整合を検出するノード識別子管理部と、を備え、前記ノード識別子管理部が、不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、前記データを照合する前記ノードのノード識別子管理部が、送信されてきた前記データの整合性を確認できる情報に係る当該データと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部が、自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新することを特徴とする。
また、本発明は、複数のノードが環状に関連付けられて構成されるクラスタシステムであって、前記ノードが、複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに送信した死活監視情報に対して返信される応答情報と共に前記データの整合性を確認できる情報を受信する死活監視部と、前記応答情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データとの不整合を検出するノード識別子管理部と、を備え、前記ノード識別子管理部が、不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、前記データを照合する前記ノードのノード識別子管理部が、送信されてきた前記データの整合性を確認できる情報に係る当該データと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部が、自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新することを特徴とする。
また、本発明は、複数のノードが環状に関連付けられて構成されるクラスタシステムであって、前記ノードが、複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに、死活監視情報と共に前記データの整合性を確認できる情報を送信する死活監視部と、前記死活監視情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データとの不整合を検出するノード識別子管理部と、を備え、前記ノード識別子管理部が、不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報および受信した前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、前記データを照合する前記ノードのノード識別子管理部が、送信されてきた前記データの整合性を確認できる情報に係る当該データそれぞれと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部が、自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新することを特徴とする。
また、本発明は、複数のノードが環状に関連付けられて構成されるクラスタシステムであって、前記ノードが、複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに送信した死活監視情報に対して返信される応答情報と共に前記データの整合性を確認できる情報を受信する死活監視部と、前記応答情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データとの不整合を検出するノード識別子管理部と、を備え、前記ノード識別子管理部が、不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報および受信した前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、前記データを照合する前記ノードのノード識別子管理部が、送信されてきた前記データの整合性を確認できる情報に係る当該データそれぞれと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部が、自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新することを特徴とする。
このような構成によれば、クラスタシステムは、クラスタシステム内で一貫性が必要とされるデータの不整合を検出することができる。また、クラスタシステムは、もともと使用している死活監視信号と共に一貫性が必要とされるデータの整合性を確認できる情報を送信することができるので、不整合を検出するためだけの送信手段を別に備える必要がない。また、クラスタシステムは、一貫性が必要とされるデータの整合性を確認できる情報だけを送信する必要がないため、通信コストの増加を抑制することができる。
さらに、このような構成によれば、クラスタシステムは、データを照合するノードを設けることによって、不整合が検出されたデータの整合性を確認できる情報を、そのデータを照合するノードに送信し、全ノードに対して共通のデータに揃えることができる。つまり、クラスタシステム内で一貫性が必要とされるデータの不整合を回復することができる。
本発明によれば、クラスタシステム内で一貫性が必要とされるデータの不整合を検出し回復することができる。
クラスタシステムを含むネットワークサービスシステムの構成例を示す図である。 ノードの機能例を示す図である。 ノード識別子管理テーブルの一例を示す図である。 死活監視テーブルの一例を示す図である。 不整合を検出し回復する処理例を示す図であり、(a)は不整合を検出する場合を表し、(b)は不整合を回復する場合を表す。 不整合を検出し回復する第1変形例の処理例を示す図であり、(a)は不整合を検出する場合を表し、(b)は不整合を回復する場合を表す。 不整合を検出し回復する第2変形例の処理例を示す図であり、(a)は不整合を検出する場合を表し、(b)は不整合を回復する場合を表す。 ノード間でノード識別子管理テーブルが不整合となる場合の一例を示す図であり、(a)は離脱するノードを通知する処理を表し、(b)はノード識別子管理テーブルを配信する処理を表し、(c)は新たに離脱するノードを通知する処理を表し、(d)はノード識別子管理テーブルを配信する処理を表す。
本発明を実施するための形態(以降、「本実施形態」と称す。)について、適宜図面を参照しながら詳細に説明する。本実施形態では、複数のノードで構成されるクラスタシステム内で一貫性が必要とされるデータの一例として、ノード識別子管理テーブル(図3参照)に焦点を当てて説明をする。
はじめに、ノード識別子管理テーブルが不整合となる場合について、図8を用いて説明する。なお、説明を分かりやすくするために、クラスタシステムが、コンシステント・ハッシュ法を用いてデータ管理を行っているものとする。
図8(a)〜(d)は、前記ID空間内に、6つのノード「1」〜「6」(黒丸印)のIDが配置されているケースを表している。また、図8(a)〜(d)中の四角は、ノード識別子管理テーブルを表している。なお、クラスタシステム内のノード「1」〜「6」それぞれは、時計回りに隣のノード「2」〜「6」,「1」の死活監視を行うケースで説明する。つまり、図8(a)に示すように、ノード「4」は、ノード「5」の死活監視を行うものとする。
いま、図8(a)に示すように、ノード「4」は、ノード「5」の死活監視を行って、ノード「5」が故障したことを検出する。図8(a)では、ノード「5」の位置に、故障したことを示す×印が付されている。そして、ノード「4」は、ノード「5」が故障して離脱したことを特権メンバのノード「1」に通知する(図8(a)では、「離脱ノードの通知」と表記)。
ここで、特権メンバのノード「1」は、クラスタシステム内で一意に決められるものとする。例えば、特権メンバのノード「1」は、ノードに割り当てられた前記ID空間内のIDの昇順に選出される等のようにして、決められる。特権メンバのノード「1」は、離脱ノードの通知を受信したとき、自身が管理しているノード識別子管理テーブルを更新し、その更新したノード識別子管理テーブルをクラスタシステム内の自身以外のノードに配信する処理を実行する。
図8(b)では、特権メンバのノード「1」は、自身のノード識別子管理テーブルを更新し(図8(b)中では、「5:離脱」と表記)、更新したノード識別子管理テーブルを他のノード「2」〜「4」,「6」に送信しようとする(図8(b)中では、実線および破線で表記)。この際、ノード識別子管理テーブルをそのまま送信すると配信負荷が大きくなるため、特権メンバのノード「1」は、差分情報のみを配信する。差分情報とは、ここでは、ノード「5」が離脱したことである。
そして、特権メンバのノード「1」が、ノード識別子管理テーブルの差分情報を送信している途中で、故障したものとする。その結果、ノード「4」,「6」それぞれは、差分情報を受信し(図8(b)中の実線矢印)、自身のノード識別子管理テーブルにノード「5」の離脱を反映して更新する(図8(b)中では、「5:離脱」と表記)。しかし、ノード「2」,「3」それぞれは、差分情報を受信していない(図8(b)中の破線矢印)。したがって、ノード「4」,「6」とノード「2」,「3」との間で、ノード識別子管理テーブルに不整合が発生する。
次に、図8(c)では、ノード「6」は、ノード「1」の死活監視を行って、ノード「1」に故障が発生したことを検出する。図8(c)では、ノード「1」の位置に、故障したことを示す×印が付されている。そして、ノード「6」は、ノード「1」が故障して離脱したことを特権メンバのノード「2」に通知する(図8(c)では、「離脱ノードの通知」と表記)。
図8(c)では、特権メンバとしてノード「2」が新たに選出されている。ノード「6」は、旧特権メンバのノード「1」が故障していることを既に検出しているため、ノード「1」の次に大きいIDのノード「2」を選出する(図8(c)では、「新選出」と表記)。各ノード「1」〜「6」が特権メンバの新選出を行うきっかけは、離脱ノードの通知を特権メンバのノードに送信しても当該特権メンバのノードから応答情報が戻ってこなかった場合、または、新選出された特権メンバのノードから差分情報を受信した場合、である。また、ノード「2」は、離脱ノードの通知を受信したとき、自身が特権メンバのノードに選出されていることを認識する。
図8(d)では、特権メンバのノード「2」は、自身のノード識別子管理テーブルを更新する(図8(d)では、「1:離脱」と表記)。そして、特権メンバのノード「2」は、更新したノード識別子管理テーブルの差分情報を他のノード「3」,「4」,「6」に送信する。その結果、ノード「2」,「3」のノード識別子管理テーブルは、ノード「1」の離脱が反映されたものとなる(図8(d)では、「1:離脱」と表記)。また、ノード「4」,「6」のノード識別子管理テーブルは、ノード「1」,「5」の離脱が反映されたものとなる(図8(d)では、「1:離脱、5:離脱」と表記)。したがって、ノード「2」,「3」とノード「4」,「6」との間で、ノード識別子管理テーブルに不整合が発生する。
(前提条件)
ここで、本実施形態のクラスタシステムの前提条件について説明する。
(1)クラスタシステムを構成するノードが相互に死活監視を実行する。具体的には、図8(a)(c)に例示したように、クラスタシステム内のノード「1」〜「6」それぞれは、時計回りに隣のノード「2」〜「6」,「1」の死活監視を行う。このことによって、クラスタシステムのノード数が増加しても、1つのノードが死活を監視する対象ノードの数が増加しない。そのため、クラスタシステムは、システム全体の性能の低下を防ぐことができる。それに対して、クラスタシステムを構成するノード間で、N台のノードそれぞれが自身以外のN−1台に対して死活監視を行う場合には、クラスタシステムを構成するノードの台数Nの増大に依存して、死活監視のための負荷が大きくなる。したがって、クラスタシステム全体の性能が落ちることを防ぐためには、一台のノードが死活監視を行うノード数を限定することが望ましい。
(2)各ノードは、死活監視によって故障しているノードを発見した場合には、離脱ノードの通知を特権メンバのノードまたは不図示の外部システムに送信する。特権メンバのノードまたは外部システムは、離脱ノードの通知を受信した場合、自身のノード識別子管理テーブル(一貫性が必要とされるデータ)を更新する。また、特権メンバのノードまたは外部システムは、保守契機で意図的にノードの追加や離脱を行う際にも、ノード識別子管理テーブルを更新する。ここで、外部システムとは、各ノードとは別に設けられた、ノード識別子管理テーブルを更新する装置である。
(3)特権メンバのノードまたは外部システムは、更新したノード識別子管理テーブルを送信する際に、差分情報だけを送信する。これは、ノード識別子管理テーブルをそのまま送信すると配信負荷が大きくなるのを防ぐためである。
(4)クラスタシステムでは、処理に用いるデータの複製を保持することで冗長管理する場合、データの複製先は、ノード識別子管理テーブルに基づいて決定される。したがって、ノード識別子管理テーブルが更新された場合には、データの複製先も更新される。なお、クラスタシステムに要求されている信頼性に合わせて、データの複製先の数を増加するようにしてもよい。
(ネットワークサービスシステム)
次に、ネットワークサービスシステム200の構成例について、図1を用いて説明する。
ネットワークサービスシステム200は、ノード(サーバ)10によって構築されるクラスタシステム100、振り分け装置20、ロードバランサ30およびクライアント端末40によって構成される。
クライアント端末40は、ユーザがネットワークサービスを享受するために、サービスへのメッセージ(入力情報等)をクラスタシステム100に送信したり、クラスタシステム100から当該メッセージに対応する応報情報(サービス情報)を受信して表示したりする機能を有する。
ロードバランサ30は、クライアント端末40から送信されるメッセージを、単純なラウンドロビン法等により振り分け装置20に振り分ける機能を有する。
振り分け装置20は、クライアント端末40から送信されるメッセージを、各ノード10に振り分ける機能を有する。メッセージの振り分けには、例えば、コンシステント・ハッシュ法を用いることができる。
ノード10は、クラスタシステム100を構成する、コンピュータ等の物理装置や仮想マシン等の論理装置である。ノード10は、クライアント端末40から送信されるメッセージを受信して処理を実行し、クライアント端末40に応答情報(サービス情報)を返信することによって、サービスを提供する機能を有する。
クライアント端末40とロードバランサ30との間は、第1ネットワーク50で通信可能に接続される。ロードバランサ30と振り分け装置20との間は、第2ネットワーク51で通信可能に接続される。また、振り分け装置20とノード10との間は、第3ネットワーク52で通信可能に接続される。
なお、図1では振り分け装置20とノード10とを別々に記載したが、同一サーバ上で別々の機能として動作させることも可能である。また、振り分け装置20をクラスタ構成にすることも可能である。さらに、ロードバランサ30が存在せず、クライアント端末40から任意の振り分け装置20にメッセージが直接送信されるような構成にしても構わない。
(ノード)
次に、ノード10の機能例について、図2を用いて説明する(適宜、図1参照)。ノード10は、処理部11、記憶部12および通信部13を備える。
処理部11は、図示しないCPU(Central Processing Unit)およびメインメモリで構成され、記憶部12に記憶されているアプリケーションプログラムをメインメモリに展開して、ノード識別子管理部111、メッセージ処理部112および死活監視部113を機能として実現する。
特権メンバのノード10のノード識別子管理部111は、クラスタシステム100にノード10が追加された場合、追加されたノード10を識別するノード識別子を、記憶部12のノード識別子管理テーブル121(図3参照)に追加する更新を実行する。なお、ノード識別子は、ID空間上のノード10のIDや仮想IDに対応して一意に付与される。また、特権メンバのノード10のノード識別子管理部111は、ノード10から離脱ノードの通知を受信した場合、その離脱したノード10のノード識別子を、記憶部12のノード識別子管理テーブル121(図3参照)から削除する更新を行う。そして、特権メンバのノード10のノード識別子管理部111は、更新したノード識別子管理テーブル121の差分情報を自身以外のノード10に送信する。
また、ノード識別子管理部111は、死活監視信号と共に送信されてきたノード識別子管理テーブル121と、自身のノード識別子管理テーブル121とを比較し、不整合を検出する。そして、ノード識別子管理部111は、不整合を検出した場合、ノード識別子管理テーブル121を特権メンバのノード10に送信する。また、ノード識別子管理部111は、特権メンバのノード10からノード識別子管理テーブル121に係る情報を受信した場合、自身のノード識別子管理テーブル121を更新(上書き)する。なお、ノード識別子管理部111の不整合の検出および回復(更新)に関する処理の詳細については後記する。
ここで、ノード識別子管理テーブル121の一例について、図3を用いて説明する(適宜、図2参照)。
ノード識別子管理テーブル121(複数ノード間で一貫性が必要とされるデータ)は、記憶部12に記憶され、ノード識別子131およびアドレス132を関連付けて記憶している。
ノード識別子131は、ノード10を識別するように付与されるものであって、ID空間のIDまたは仮想IDと一意に対応している。
アドレス132は、ノード10の通信先を表す。
ノード10が追加された場合には、当該ノード10のノード識別子131およびアドレス132の行が追加される。また、ノード10が離脱した場合には、当該ノード10のノード識別子131およびアドレス132の行が削除される。
なお、特権メンバのノード10は、どのノード10からみても一意に選出される必要がある。したがって、特権メンバのノード10は、例えば、ノード識別子管理テーブル121の何行目のノード識別子131のノード10を特権メンバとするといった決め方によって、決定されればよい。
図2に戻って、メッセージ処理部112は、振り分け装置20から振り分けられたメッセージを処理し、処理結果をクライアント端末40に返信する。また、メッセージ処理部112は、他のノード10(例えば、ノード識別子131を昇順に並べた時に、前記ID空間の1つ先のノード10)をデータ複製先として、複製データを記憶する。さらに、複製データを複数保持する場合には、メッセージ処理部112は、前記他のノード10とは別のノード10(例えば、ノード識別子131を昇順に並べた時に、ID空間の2つ先のノード10)にも複製データを記憶する。このようにすることによって、クラスタシステム100は、データの冗長化を実現することができる。また、メッセージ処理部112は、処理するデータが見つからない場合には、ノード識別子管理デーブル121に基づいてデータ複製先から複製データを取得し、データ処理(サービス)を継続することができる。
死活監視部113は、死活監視テーブル122を参照して、死活を監視する対象のノード10を抽出し、当該ノード10に死活監視信号(死活監視情報)を送信する。そして、死活監視部113は、死活監視信号に対応する応答情報を受信しなかった場合、当該ノード10の故障を検出する。故障を検出した場合、死活監視部113は、特権メンバのノード10(または外部システム)に離脱ノードの通知を送信する。死活監視部113は、クラスタシステム100を構成するノード10の追加や離脱があった場合、ノード識別子管理テーブル121の更新に同期して死活監視テーブル122を更新する。
また、死活監視部113は、死活監視信号と共に、ノード識別子管理テーブル121を、死活監視対象のノード10に送信する処理を実行する。この処理の詳細については、後記する。
ここで、死活監視テーブル122の一例について、図4を用いて説明する。
図4の左の図は、ID空間を表し、図中の丸印は、仮想IDを表している。黒丸印「●」は、各物理装置にとって、それが担当する1または複数の仮想IDのうち最も小さい値の仮想IDを表し、数字は、ID空間のIDを表している。ここでは、物理装置は6台からなる。
そして、図4の右の図は、左図の黒丸印の仮想IDに対応する死活監視テーブル122の一例を表している。つまり、死活監視テーブル122は、1台の物理装置を単位として作成される。なお、死活監視テーブル122は、少なくとも死活監視対象のアドレスを記憶している。
図2に戻って、記憶部12は、メモリやハードディスク等で構成され、前記したノード識別子管理テーブル121、死活監視テーブル122および前記したアプリケーションプログラムを記憶している。
通信部13は、第3ネットワーク52を介してメッセージや応答情報を送受信するためのインタフェースである。
(不整合の検出処理および回復処理の流れ)
次に、クラスタシステム100内で一貫性が必要とされるデータに不整合が生じた場合に、不整合を検出し回復する処理の流れについて、図5を用いて説明する(適宜、図2参照)。なお、一貫性が必要とされるデータの一例として、ノード識別子管理テーブル121に不整合が生じた場合について示す。図5(a)は不整合を検出する場合を表し、(b)は不整合を回復する場合を表している。
図5(a)(b)では、黒丸印は、ID空間内のノード10を表し、図5中の数字はID空間のIDを表している。また、図5中の「A」「B」は、ノード識別子管理テーブル121の内容またはバージョンを表しているものとする。
(1)不整合の検出
例えば、図5(a)に示すように、ノード「4」の死活監視部113は、死活監視信号と共に自身のノード識別子管理テーブル「A」を、死活監視対象のノード「5」に送信する(S51)。ノード「5」のノード識別子管理部111は、受信したノード識別子管理テーブル「A」と自身のノード識別子管理テーブル「B」とを比較し、不整合が有るか無いかを判定する(S52:「不整合検出」)。なお、死活監視信号と共に送信するノード識別子管理テーブル121は、テーブル全体であってもよいが、ノード識別子管理テーブル121の整合性を確認できるデータに変換してあっても構わない。例えば、変換したデータは、ノード識別子管理テーブル121をハッシュ関数で変換したハッシュ値であっても構わない。整合性の確認は、所定の周期(一定周期を含む)で行われる。例えば、整合性の確認のために行うノード識別子管理テーブル121の送信は、死活監視と同じ周期で実行しても、死活監視を複数回実行する間に1回実行しても構わない。
ノード「5」のノード識別子管理部111は、不整合を検出した場合、自身のノード識別子管理テーブル「B」を、特権メンバのノード「1」に送信する(S53)。
(2)不整合の回復
特権メンバのノード「1」のノード識別子管理部111は、自身のノード識別子管理テーブル「A」と、受信したノード識別子管理テーブル「B」とを比較し、不整合が有るか無いかを判定する(S54:「照合」)。つまり、特権メンバのノード「1」は、ノード識別子管理テーブル121を照合する機能を有している。そして、特権メンバのノード「1」のノード識別子管理部111は、不整合を検出した場合、図5(b)に示すように、ノード識別子管理テーブル「B」を送信してきたノード「5」に、自身のノード識別子管理テーブル「A」を送信する(S55)。ノード「5」のノード識別子管理部111は、特権メンバのノード「1」から受信したノード識別子管理テーブル「A」に基づいて、自身のノード識別子管理テーブル「B」を「A」に更新(上書き)する(S56:「不整合回復」)。このことにより、不整合が回復する。なお、特権メンバのノード「1」がノード「5」に送信する情報は、図5(b)中ではノード識別子管理テーブル121全体であるように表しているが、相違する情報だけであっても構わない。
(第1変形例)
図5では、死活監視信号と共にノード識別子管理テーブルを受信したノード「5」が不整合の有無を判定するように説明した。それに対して、第1変形例では、死活監視信号に対して返信された応答情報と共にノード識別子管理テーブルを受信したノード「4」が不整合の有無を判定する場合について、図6を用いて説明する。
(1)不整合の検出
図6(a)に示すように、ノード「4」の死活監視部113は、死活監視信号を、死活監視対象のノード「5」に送信する(S61)。ノード「5」の死活監視部113は、受信した死活監視信号に対して返信する応答情報と共に自身のノード識別子管理テーブル「A」を、ノード「4」に送信する(S62)。なお、応答情報と共に送信するノード識別子管理テーブル121は、テーブル全体であってもよいが、ノード識別子管理テーブル121の整合性を確認できるデータに変換してあっても構わない。例えば、変換したデータは、ノード識別子管理テーブル121をハッシュ関数で変換したハッシュ値であっても構わない。ノード「4」のノード識別子管理部111は、受信したノード識別子管理テーブル「A」と自身のノード識別子管理テーブル「B」とを比較し、不整合が有るか無いかを判定する(S63:「不整合検出」)。整合性の確認は、所定の周期(一定周期を含む)で行われる。例えば、整合性の確認のために行うノード識別子管理テーブル121の送信は、死活監視と同じ周期で実行しても、死活監視を複数回実行する間に1回実行しても構わない。
ノード「4」のノード識別子管理部111は、不整合を検出した場合、自身のノード識別子管理テーブル「B」を、特権メンバのノード「1」に送信する(S64)。
(2)不整合の回復
特権メンバのノード「1」のノード識別子管理部111は、自身のノード識別子管理テーブル「A」と、受信したノード識別子管理テーブル「B」とを比較し、不整合が有るか無いかを判定する(S65:「照合」)。そして、特権メンバのノード「1」のノード識別子管理部111は、不整合を検出した場合、図6(b)に示すように、ノード識別子管理テーブル「B」を送信してきたノード「4」に、自身のノード識別子管理テーブル「A」を送信する(S66)。ノード「4」のノード識別子管理部111は、特権メンバのノード「1」から受信したノード識別子管理テーブル「A」に基づいて、自身のノード識別子管理テーブル「B」を「A」に更新(上書き)する(S67:「不整合回復」)。このことにより、不整合が回復する。なお、特権メンバのノード「1」がノード「4」に送信する情報は、図6(b)中ではノード識別子管理テーブル121全体であるように表しているが、相違する情報だけであっても構わない。
(第2変形例)
図5では、不整合を検出したノード「5」が自身のノード識別子管理テーブル121を特権メンバのノード「1」に送信するように説明した。それに対して、第2変形例では、自身のノード識別子管理テーブル121だけでなく、ノード「4」のノード識別子管理テーブル121も送信する場合について、図7を用いて説明する。
(1)不整合の検出
図7(a)に示すように、ノード「4」の死活監視部113は、死活監視信号と共に自身のノード識別子管理テーブル「B」の情報を、死活監視対象のノード「5」に送信する(S71)。ノード「5」のノード識別子管理部111は、受信したノード識別子管理テーブル「B」と自身のノード識別子管理テーブル「A」とを比較し、不整合が有るか無いかを判定する(S72:「不整合検出」)。なお、死活監視信号と共に送信するノード識別子管理テーブル121は、テーブル全体であってもよいが、ノード識別子管理テーブル121の整合性を確認できるデータに変換してあっても構わない。例えば、変換したデータは、ノード識別子管理テーブル121をハッシュ関数で変換したハッシュ値であっても構わない。整合性の確認は、所定の周期(一定周期を含む)で行われる。例えば、整合性の確認のために行うノード識別子管理テーブル121の送信は、死活監視と同じ周期で実行しても、死活監視を複数回実行する間に1回実行しても構わない。
ノード「5」のノード識別子管理部111は、不整合を検出した場合、自身のノード識別子管理テーブル「A」およびノード「4」のノード識別子管理テーブル「B」を、特権メンバのノード「1」に送信する(S73)。
(2)不整合の回復
特権メンバのノード「1」のノード識別子管理部111は、自身のノード識別子管理テーブル「A」と、受信したノード識別子管理テーブル「A」および「B」とを比較し、不整合が有るか無いかを判定する(S74:「照合」)。そして、特権メンバのノード「1」のノード識別子管理部111は、不整合を検出した場合、図7(b)に示すように、ノード識別子管理テーブル「B」を備えるノード「4」に、自身のノード識別子管理テーブル「A」を送信する(S75)。ノード「4」のノード識別子管理部111は、特権メンバのノード「1」から受信したノード識別子管理テーブル「A」に基づいて、自身のノード識別子管理テーブル「B」を「A」に更新(上書き)する(S76:「不整合回復」)。このことにより、不整合が回復する。なお、特権メンバのノード「1」がノード「4」に送信する情報は、図7(b)中ではノード識別子管理テーブル121全体であるように表しているが、相違する情報だけであっても構わない。
以上、本実施形態および変形例のクラスタシステム100は、クラスタシステム100を構成するノード10の追加や離脱の影響を受けることなくデータ処理を継続するために、クラスタシステム100内で一貫性が必要とされるデータの不整合を検出し、回復することができる。具体的には、ノード10は、死活監視信号と共に、一貫性が必要とされるデータを受信して、自身のデータと比較し、双方のデータ間に不整合を検出する。そして、ノード10は、不整合を検出した場合、一貫性が必要とされるデータを特権メンバのノード10に送信する。特権メンバのノード10は、自身のデータと受信したデータとを比較して、不整合を検出した場合、自身のデータを、不整合のデータを記憶しているノード10に送信する。そして、特権メンバのノード10からデータを受信したノード10は、受信したデータで自身のデータを更新(上書き)し、不整合を回復する。
このようにして、クラスタシステム100は、クラスタシステム100内で一貫性が必要とされるデータの不整合を検出し回復することができる。また、本実施形態および変形例のクラスタシステム100は、もともと使用している死活監視信号と共に一貫性が必要とされるデータを送信するので、不整合を検出するためだけの送信手段を別に備える必要がなく、一貫性が必要とされるデータだけを送信する必要がないため、通信コストの増加を抑制することができる。
なお、第2変形例では、死活監視信号を受信したノード「5」が、ノード「4」「5」のノード識別子管理テーブル121を特権メンバのノード「1」に送信するケースを説明した。それに対して、第1変形例の場合と同様に、死活監視信号に対して返信される応答情報と共にノード識別子管理テーブルを受信したノード「4」が不整合の有無を判定し、不整合を検出した場合、ノード「4」「5」のノード識別子管理テーブル121を特権メンバのノード「1」に送信するようにしてもよい。
また、図7(a)では、ノード「4」のノード識別子管理テーブル121が「B」で、ノード「5」のノード識別子管理テーブル121が「A」の場合で説明したが、仮に、ノード「5」のノード識別子管理テーブル121が「C」であった場合について説明する。
この場合には、特権メンバのノード「1」は、ノード「4」および「5」の双方に、自身のノード識別子管理テーブル「A」を送信する。言い換えると、特権メンバのノード「1」は、不整合となったノード識別子管理テーブル121を記憶しているノード「4」および「5」に、自身のノード識別子管理テーブル121(または相違する情報)を送信する。
また、図5〜7では、特権メンバのノード10が、不整合を検出したノード10から、ノード識別子管理テーブル121を受信して、不整合を検出した場合、自身のノード識別子管理テーブル121を送信するように説明した。それに対して、特権メンバのノード10の代わりに、不図示の外部システムが特権メンバのノード10と同様の処理を実行しても構わない。
また、特権メンバのノード10は、死活監視テーブル122の1行目のノード10にするといった決め方によって、決定しても構わない。このようにすることにより、物理装置単位で、特権メンバを決定することができる。
10 ノード
11 処理部
12 記憶部
13 通信部
20 振り分け装置
30 ロードバランサ
40 クライアント端末
111 ノード識別子管理部
112 メッセージ処理部
113 死活監視部
121 ノード識別子管理テーブル(一貫性が必要とされるデータ)
122 死活監視テーブル
131 ノード識別子
132 アドレス

Claims (4)

  1. 複数のノードが環状に関連付けられて構成されるクラスタシステムであって、
    前記ノードは、
    複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、
    自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに、死活監視情報と共に前記データの整合性を確認できる情報を送信する死活監視部と、
    前記死活監視情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データと不整合を検出するノード識別子管理部と、を備え
    前記ノード識別子管理部は、
    不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、
    前記データを照合する前記ノードのノード識別子管理部は、
    送信されてきた前記データの整合性を確認できる情報に係る当該データと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、
    前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部は、
    自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新する
    とを特徴とするクラスタシステム。
  2. 複数のノードが環状に関連付けられて構成されるクラスタシステムであって、
    前記ノードは、
    複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、
    自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに送信した死活監視情報に対して返信される応答情報と共に前記データの整合性を確認できる情報を受信する死活監視部と、
    前記応答情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データと不整合を検出するノード識別子管理部と、を備え
    前記ノード識別子管理部は、
    不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、
    前記データを照合する前記ノードのノード識別子管理部は、
    送信されてきた前記データの整合性を確認できる情報に係る当該データと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、
    前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部は、
    自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新する
    とを特徴とするクラスタシステム。
  3. 複数のノードが環状に関連付けられて構成されるクラスタシステムであって、
    前記ノードは、
    複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、
    自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに、死活監視情報と共に前記データの整合性を確認できる情報を送信する死活監視部と、
    前記死活監視情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データと不整合を検出するノード識別子管理部と、を備え
    前記ノード識別子管理部は、
    不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報および受信した前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、
    前記データを照合する前記ノードのノード識別子管理部は、
    送信されてきた前記データの整合性を確認できる情報に係る当該データそれぞれと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、
    前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部は、
    自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新する
    とを特徴とするクラスタシステム。
  4. 複数のノードが環状に関連付けられて構成されるクラスタシステムであって、
    前記ノードは、
    複数の前記ノード間で一貫性が必要とされるデータが記憶される記憶部と、
    自身の前記ノードから時計回りに隣であり死活監視対象の前記ノードに送信した死活監視情報に対して返信される応答情報と共に前記データの整合性を確認できる情報を受信する死活監視部と、
    前記応答情報と共に受信した前記データの整合性を確認できる情報に基づいて、当該データと自身の前記記憶部の前記データと不整合を検出するノード識別子管理部と、を備え
    前記ノード識別子管理部は、
    不整合を検出した場合、前記記憶部に記憶している自身の前記データの整合性を確認できる情報および受信した前記データの整合性を確認できる情報を、前記データを照合する前記ノードに送信し、
    前記データを照合する前記ノードのノード識別子管理部は、
    送信されてきた前記データの整合性を確認できる情報に係る当該データそれぞれと前記記憶部に記憶している自身の前記データとの間に不整合を検出した場合、不整合とされた前記データを記憶している前記ノードに、自身の前記データを送信し、
    前記データを照合する前記ノードから送信されてきた前記データを受信した前記ノードのノード識別子管理部は、
    自身の前記記憶部の前記データを、前記データを照合する前記ノードから受信した前記データで更新する
    とを特徴とするクラスタシステム。
JP2013014058A 2013-01-29 2013-01-29 クラスタシステム Active JP5711772B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013014058A JP5711772B2 (ja) 2013-01-29 2013-01-29 クラスタシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013014058A JP5711772B2 (ja) 2013-01-29 2013-01-29 クラスタシステム

Publications (2)

Publication Number Publication Date
JP2014146153A JP2014146153A (ja) 2014-08-14
JP5711772B2 true JP5711772B2 (ja) 2015-05-07

Family

ID=51426374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013014058A Active JP5711772B2 (ja) 2013-01-29 2013-01-29 クラスタシステム

Country Status (1)

Country Link
JP (1) JP5711772B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6899662B2 (ja) * 2017-02-09 2021-07-07 三菱電機株式会社 遠方監視制御システム及び遠方監視制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003009092A2 (en) * 2001-07-16 2003-01-30 Bea Systems, Inc. Data replication protocol
SE533007C2 (sv) * 2008-10-24 2010-06-08 Ilt Productions Ab Distribuerad datalagring
JP2011242826A (ja) * 2010-05-14 2011-12-01 Fujitsu Ltd ファイル管理システム及びファイル管理プログラム

Also Published As

Publication number Publication date
JP2014146153A (ja) 2014-08-14

Similar Documents

Publication Publication Date Title
US11416346B2 (en) Methods for securely facilitating data protection workflows and devices thereof
WO2020062211A1 (zh) 一种融合区块链技术拟态存储防篡改日志的方法及系统
CN110209492B (zh) 一种数据处理方法及装置
CN111400112B (zh) 分布式集群的存储系统的写入方法、装置及可读存储介质
CN111405019B (zh) 数据处理方法、装置、计算机设备和存储介质
US9367261B2 (en) Computer system, data management method and data management program
CN106209411A (zh) 分布式网络系统容错方法、装置及容错式分布式网络系统
JP5969315B2 (ja) データ移行処理システムおよびデータ移行処理方法
JP6025679B2 (ja) 分散データベースシステム
JP6059558B2 (ja) 負荷分散判定システム
CN103944784A (zh) 一种面向大规模云数据中心的服务器协同监控方法
JP6364727B2 (ja) 情報処理システム、分散処理方法、及び、プログラム
JP5711772B2 (ja) クラスタシステム
CN104794026A (zh) 一种集群实例多数据源绑定的故障转移方法
JP5918802B2 (ja) ノードおよびプログラム
JP2015018508A (ja) 分散処理システム
Chaou et al. Evaluating a peer-to-peer storage system in presence of malicious peers
JP5658621B2 (ja) 信号振分複製先決定システム、信号振分複製先決定方法およびプログラム
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
JP6653676B2 (ja) コンテナ最適配置システムおよびそのコンテナ復旧方法
JP5815000B2 (ja) ノードおよびプログラム
CN113010337B (zh) 故障检测方法、总控节点、工作节点及分布式系统
JP6093320B2 (ja) 分散処理システム
JP2014032530A (ja) 分散処理システムおよび分散処理方法
JP6473425B2 (ja) ノードおよびデータ配置方法

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140502

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140529

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141211

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141216

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150213

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150306

R150 Certificate of patent or registration of utility model

Ref document number: 5711772

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150