JP5815000B2 - ノードおよびプログラム - Google Patents

ノードおよびプログラム Download PDF

Info

Publication number
JP5815000B2
JP5815000B2 JP2013218306A JP2013218306A JP5815000B2 JP 5815000 B2 JP5815000 B2 JP 5815000B2 JP 2013218306 A JP2013218306 A JP 2013218306A JP 2013218306 A JP2013218306 A JP 2013218306A JP 5815000 B2 JP5815000 B2 JP 5815000B2
Authority
JP
Japan
Prior art keywords
node
data
nodes
space
cluster
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
JP2013218306A
Other languages
English (en)
Other versions
JP2015082129A (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 JP2013218306A priority Critical patent/JP5815000B2/ja
Publication of JP2015082129A publication Critical patent/JP2015082129A/ja
Application granted granted Critical
Publication of JP5815000B2 publication Critical patent/JP5815000B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Description

本発明は、複数サーバを並べたクラスタ構成において、激甚災害などの同時に多くのサーバが故障や離脱をするような場合でも、管理しているデータが失われることなくサービスを継続するためのノードおよびプログラムに関する。
近年、クラウドコンピューティングの隆盛に伴い、多量のデータの処理や保持を効率的に行うことが求められている。そこで、複数のサーバを協調動作させることにより効率的な処理を実現する分散処理技術が発展している。
分散処理を行う際には、クラスタを構成する各サーバ(以下、「ノード」または「クラスタメンバ」と称する。)が担当するデータを決定する必要がある。このとき、クラスタ全体での処理能力を高めるためには、各ノードが担当するデータ数(データ量)は平均化されていることが望ましい。
代表的なデータの管理手法として、各データのkeyをハッシュ関数にかけた値(以下、「hash(key)」と称する。)をノード数Nで割った余り、すなわち「hash(key) mod N」を番号として持つノードがデータを管理する手法がある。この場合、各ノードに事前に「0」から「N−1」までの番号を割り当てていることが前提となる。このような管理手法を用いた場合、ノードを追加・離脱すると、Nの値が変化して、多くのデータについて、そのデータの保存を担当するノードが変更になるため、担当するデータを再配置することが必要になる。
そこで、ノードの追加・離脱に伴い担当するクラスタメンバが変更になるデータ数を約1/Nに抑える方法として、コンシステントハッシュ(Consistent Hashing)法(非特許文献1参照)を用いた管理手法がある。このコンシステントハッシュ法は、Amazon Dynamo(非特許文献2参照)等において用いられている。
このコンシステントハッシュ法を用いたデータ管理手法では、ノードとデータの双方にID(IDentifier)を割り当てる。そして、データのIDから閉じたID空間を時計回りに辿った場合に最初に遭遇するノードをそのデータの担当とする。ノードに対するIDの与え方の例としては、IPアドレスをハッシュ関数にかけた値(hash(IPアドレス))が挙げられる。
クラスタ構成の分散システムでは、各ノードの処理性能が等しい場合には、各ノードが担当するデータ量を等しくする、すなわち、コンシステントハッシュ法のID空間における、ノード間の距離(以下、「ノードの担当範囲」または「ハッシュID範囲」と称する。)を等しくすることが望ましい。この点を解決するため、各ノードに仮想的に複数のIDを持たせる手法が用いられている(非特許文献1参照)。各ノードが複数の仮想IDを持つことで、仮想ID毎の担当範囲は異なっていても、大数の法則に従いノードの担当範囲は平均化される。
図14は、複数のノードをクラスタ構成にした場合に、各ノードをコンシステントハッシュのID空間(環状のID空間)上に配置し、データを管理する手法(以下、「コンシステントハッシュ法によるデータ管理手法」と称する。)を説明するための図である(特許文献1参照)。なお、ここで、データの管理とは、各ノードが行うデータの取得や更新、データの複製を行うこと等を意味する。
図14に示すように、コンシステントハッシュ法では、各ノードがコンシステントハッシュのID空間(以下、単に「ID空間」と称する場合がある。)にマッピングされる。そして、各ノードは、図14に示すように、自身が担当するハッシュIDの範囲(「ハッシュID範囲」)を持っている。あるデータを取得する際は、データを一意に特定するkey情報をハッシュ関数にかけ、導出されたコンシステントハッシュのID空間上の位置(図14においては、黒丸(●)で表示)から所定の方向(図14では時計回り)に進んで最初に遭遇するノードからデータを取得する(図14においては、矢印(→)で表示)。例えば、図14において、データAについては、ID空間上を時計回りに進み最初に遭遇したノード「1」が担当となる。なお、更新時も同様にノードを特定する。
また、複製データは、ID空間上で時計回り(若しくは反時計回り)に隣のノードに作成する(冗長数が「2」の場合)。図14では、ノード「1」においてデータAの更新を行った場合、ノード「2」にデータAの複製を作成する。このようにすることにより、ノード「1」が故障等の理由でクラスタから離脱しても、データへの問い合わせはデータAの複製を持つノード「2」に振り分けられるため、ノード「2」において処理を継続することが可能となる。
次に、コンシステントハッシュ法によるデータ管理手法において、クラスタに新たなノードが参加(追加)する場合の動作について説明する。
図15は、コンシステントハッシュのID空間上に、新たにノードが参加した場合の動作例を説明するための図である。
図15においては、図14に示すノードの配置において、ノード「1」とノード「4」との間に、ノード「5」が新たに配置された例を示している。
コンシステントハッシュのID空間にノード「5」が参加した後、ノード「5」がデータを保持するハッシュID範囲に位置するデータの問い合わせがあった場合、参加直後のノード「5」はデータを持っていないため、ノード「5」の参加以前に該当データを担当していたノード「1」からデータを引き継いで処理を行う。その後、ノード「5」はノード「4」の複製データ(図15においては、「データDの複製」と表記。)を保持し、ノード「1」はノード「4」のハッシュID範囲のデータの複製(「データDの複製」)を保持する必要がなくなるため、破棄を行う。また、ノード「2」は、ノード「1」のハッシュID範囲ではなくなった「データAの複製」を保持する必要がなくたるため、破棄を行う。以降は、図14の複製作成処理と同様に動作する。
なお、データの再配置を一度に実行すると、新たに参加したノード「5」の負荷が高くなり通常サービスに影響を及ぼす可能性があるため、データに対する処理が発生したタイミングや、負荷を調整しながらバックグラウンドで処理を行うことが望ましい。
David karger, et al.,"Consistent Hashing and Random Trees:Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web",[online],1997,ACM,[平成25年10月2日検索],インターネット<URL:http://www.akamai.com/dl/technical_publications/ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf> Giuseppe DeCandia,et al.,"Dynamo: Amazon’s Highly Available Key-value Store", SOSP’07, October 14-17, 2007, Stevenson, Washington, USA,[online],[平成25年10月2日検索],インターネット<URL:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf>
特開2012−248091号公報
コンシステントハッシュ法によるデータ管理手法は、クラスタを構成するノードの追加や離脱に伴うデータの移行が全データに対する一部のデータに限られるため、クラスタ構成の動的な変更(ノードの追加・離脱)が頻繁に起こるシステムに対して有効である。また、クラスタを構成するノードの障害に備えて、原本データを保持するノード以外の1つ以上のノードに対して複製データを保持させることで、耐故障性を高めている。しかしながら、ノードの物理的な配置(エリア等の位置情報)を考慮しないと、激甚災害等による大規模故障が発生した場合、該当データを保持したすべてのノードに障害が同時に発生してしまう可能性がある。以下、具体的に説明する。
図16は、従来のコンシステントハッシュに基づくデータ管理を行う分散システムを、物理的に配置した例を示している。図14および図15において示したように、コンシステントハッシュのID空間上に複数のノードを配置し、クラスタを構成している。図16(a)に示すように、実際の物理ノードを1種類(1箇所)のデータセンタエリアにおいて実現する場合、例えば、関東エリアにデータセンタが設置される場合は、関東に激甚災害が発生したときに、クラスタで管理しているすべてのデータを損失する可能性がある(図16(b)参照)。
また、図17に示すように、物理ノードが全国に跨ってK種類(K箇所)のデータセンタエリアにおいて実現する場合、関東において激甚災害が発生したときに、コンシステントハッシュのID空間上の関東エリアのノードがID空間から離脱する。このとき、コンシステントハッシュは、物理位置(エリア等の位置情報)を考慮した分散にはなっていないため、コンシステントハッシュのID空間上でどの位置にあるノードが離脱するかはランダムであり、原本データもその複製データも同時に失われる可能性がある。
図17(a)に示す例では、K種類(ここでは、5種類)のデータセンタエリアが存在し、冗長数「2」として、コンシステントハッシュのID空間上にそのデータセンタエリアに属する各ノードが配置されている。なお、冗長数は、原本データを保持するノードと複製データを保持するノードとを合わした数である。
コンシステントハッシュのID空間上では、物理位置(エリア等の位置情報)に関係なくランダムに各データセンタのノードが配置されるため、原本データと複製データが同一エリア(図17(a)では「□(白四角)」において示される関東エリア)に属するノードの場合、原本データと複製データとが同時に失われる可能性がある(図17(b)参照)。
このような背景を鑑みて本発明がなされたのであり、本発明は、激甚災害等の広いエリアにおいて複数台のノードが同時に離脱した場合においても、データを損失させず、継続処理を可能とするノードおよびプログラムを提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明は、環状のID(IDentifier)空間に、処理対象の複数のデータのID、および、クラスタを構成し前記データに関するリクエストを処理する複数のノードのIDが、割り当てられ、前記ID空間において前記データのIDから所定方向回りに辿って最初に遭遇した前記ノードまでの間に位置する前記データを当該ノードが原本データとして保持するとともに、前記クラスタ内の自身以外の他のノードに前記原本データの複製である複製データを保持させる分散システムの前記ノードであって、前記ID空間における、前記ノードそれぞれのIDを、前記ノードそれぞれが物理的に存在する地域を示す位置情報に対応付けたノード管理情報、前記クラスタ内における前記データの前記原本データおよび前記複製データの保持数である冗長数(M(≧2))、並びに、前記原本データおよび前記複製データのうち障害により同時に失われても良いと設定するデータ数(X)を記憶する記憶部と、前記ノード管理情報の前記位置情報を参照することにより、前記ID空間の自身のノードのIDから所定方向回りに辿って遭遇する前記ノードのうち、少なくともM−X個は、前記原本データおよび前記複製データを保持する前記ノードの地域を示す前記位置情報がそれぞれ異なるように、前記複製データの配置先となる前記ノードを決定するデータ複製処理部と、を備えることを特徴とするノードとした。
このように、ノードは、ID空間におけるIDと地域を示す位置情報とを対応付けたノード管理情報を記憶しており、ID空間の自身のノードのIDから所定方向回りに辿って遭遇するノードのうち、少なくともM−X個は、位置情報がそれぞれ異なるようにして、複製データの配置先を決定することができる。よって、大規模障害が発生した場合であっても、少なくともM−X個は、地域が異なるノードから複製データを保持するノードが選択されているので、データを損失させず、継続して処理を行うことができる。
請求項2に記載の発明は、前記ノードが、前記クラスタを構成する前記ノードの障害発生情報を取得した場合に、障害の発生により離脱したノードのIDと当該ノードの前記位置情報とを、前記ノード管理情報から削除する更新を行うノード識別子管理部をさらに備え、前記データ複製処理部が、前記ノード管理情報が更新されると、前記複製データの配置先となる前記ノードの決定処理を、再度実行することを特徴とする請求項1に記載のノードとした。
このようにすることで、クラスタを構成するノードが離脱したことにより、少なくともM−X個は、位置情報がそれぞれ異なるようにして、複製データを配置するという条件を満たさなくなった場合においても、再度、データ複製処理部が複製データの配置先となるノードの決定処理を実行することにより、当該条件を満たす複製データの配置に設定することができる。
請求項3に記載の発明は、前記ノードが、前記クラスタに参加する新たなノードの前記ID空間における挿入位置を決定する際に、所定のID割当手法において選択された挿入位置の両側それぞれM−1個のノードの属する前記位置情報を、前記ノード管理情報を参照して確認し、M−X個以上のノードの位置情報が、新たに挿入するノードの位置情報と異なる場合に、前記選択された挿入位置を、前記参加する新たなノードのIDとして決定するノード配置決定部を、さらに備えることを特徴とする請求項1または請求項2に記載のノードとした。
このようにすることにより、ID空間における挿入位置の両側それぞれM−1個のノードの属する地域を示す位置情報のうち、M−X個以上の位置情報が、新たに挿入するノードの位置情報と異なることが保証される。よって、ノード参加時毎に、ノード配置決定部によるノード挿入位置決定処理を繰り返すことにより、同一地域のノードがID空間上において、隣り合う状況となる場合を低減することができる。これにより、ノード離脱時のデータ取得や複製データの偏りが発生することを抑えることができる(詳細は後記する)。
請求項4に記載の発明は、コンピュータを請求項1乃至請求項3のいずれか一項に記載のノードとして機能させるためのプログラムとした。
これによれば、このようなプログラムを実装したコンピュータを本発明のノードとして機能させることができる。
本発明によれば、激甚災害等の広いエリアにおいて複数台のノードが同時に離脱した場合においても、データを損失させず、継続処理を可能とするノードおよびプログラムを提供することができる。
本発明の第1の実施形態に係るノードを含む分散システムの全体構成を示す図である。 本発明の第1の実施形態に係るノードの構成例を示す機能ブロック図である。 本発明の第1の実施形態に係るノード管理テーブルのデータ構成例を示す図である。 本発明の第1の実施形態に係る死活監視テーブルのデータ構成例を示す図である。 本発明の第1の実施形態に係るノード(データ複製処理部)が行うデータの複製先決定処理の流れを示すフローチャートである。 本実施形態におけるデータ複製先決定処理の具体例を説明するための図である。 本発明の第2の実施形態に係るノードの構成例を示す機能ブロック図である。 本発明の第2の実施形態に係るノードの課題を説明するための図である。(a)は、ノード離脱時のデータ取得の処理の発生を説明するための図である。(b)は、複製データの偏りを説明するための図である。 本発明の第2の実施形態に係るノードのノード離脱時における課題を説明するための図である。 本発明の第2の実施形態に係るノード(ノード配置決定部)が行う、ノード参加時のID空間におけるノード挿入位置決定処理の流れを示すフローチャートである。 ノード参加時のID空間におけるノード挿入位置決定処理を説明するための図である。 本発明の第2の実施形態に係るノードが行う、ノード離脱時のノード管理テーブルの更新処理の流れを示すフローチャートである。 ノード離脱時のデータ複製先の決定処理を説明するための図である。 コンシステントハッシュ法によるデータ管理手法を説明するための図である。 コンシステントハッシュのID空間上に、新たにノードが参加した場合の動作例を説明するための図である。 コンシステントハッシュに基づきデータ管理を行う分散システムを、1種類のデータセンタエリアに配置した例を示す図である。 従来のコンシステントハッシュのID空間上で、原本データと複製データとが同時に失われる可能性を説明するための図である。
≪第1の実施形態≫
次に、本発明を実施するための形態(以下、「本実施形態」と称する。)について説明する。
<分散システムの全体構成>
まず、本発明の第1の実施形態に係るノード1を含む分散システム1000の全体構成について説明する。
図1は、本発明の第1の実施形態に係るノード1を含む分散システム1000の全体構成を示す図である。
この分散システム1000は、各クライアント2からのメッセージを受け付けるロードバランサ3と、振り分け装置4と、クラスタを構成する複数のノード1とを含んで構成される。ロードバランサ3は、クライアント2からのメッセージを単純なラウンドロビン法等により各振り分け装置4に振り分ける。振り分け装置4は、受信したメッセージを、例えば、コンシステントハッシュ法等に基づき、各ノード1に振り分ける。各ノード1では、メッセージ処理を行い、クライアント2にサービスを提供する。
図1においては、振り分け装置4とノード1とを別装置として記載したが、同一サーバ上で別々の機能として動作させることも可能である。また、振り分け装置4も、図1に示すように、クラスタ構成をとることができる。さらに、ロードバランサ3が存在せず、クライアント2から任意の振り分け装置4にメッセージを送信することも可能である。
<処理概要>
本発明の第1の実施形態に係るノード1は、自身が原本として格納するデータについて、複製データを配置する際に、配置先の候補となるノードの物理位置(エリア等の位置情報)を確認し、自身が属するエリア(後記において、「データセンタエリア」や「拠点」と称する。)と異なるエリアのノードに少なくとも所定数は複製データが配置されるように処理する。つまり、ノード1は、複製データの配置時に、ノードの物理位置(エリア等の位置情報)を利用し、他のエリアのノード1に対して複製データを配置する。
このように他のエリアのノード1に複製データを配置することで、本発明の第1の実施形態に係るノード1を含む分散システム1000によれば、激甚災害等により広いエリアで複数台のノード1が同時に障害発生等により離脱した場合であっても、データを損失させず、継続して処理を行うことが可能となる。
<ノード>
次に、本発明の第1の実施形態に係る分散システム1000を構成するノード1について、具体的に説明する。なお、本実施形態に係るノード1は、分散システム1000の複数のノード1のうち、後記するノード管理テーブル100(ノード管理情報)を管理する特権ノードとなる場合と、特権ノードからノード管理テーブル100の情報を受け取り自身のノード管理テーブル100を更新する特権ノードではない場合とが存在する。なお、特権ノードが行う処理等については、後記する。
図2は、本発明の第1の実施形態に係るノード1の構成例を示す機能ブロック図である。
ノード1は、図1に示したように、各振り分け装置4と通信可能に接続されると共に、クラスタを構成する自身以外の他のノード1とも通信可能に接続される。そして、クライアント2からのメッセージを受信し、サービスを提供する。また、このノード1は、自身が原本データとして保持する情報を、後記する複製データの配置のための所定の条件を満たす他のノード1に対して送信することにより、他のノード1に複製データを保持させる。
このノード1は、図2に示すように、制御部10と、入出力部11と、記憶部12とを含んで構成される。
入出力部11は、振り分け装置4や、自身以外の他のノード1との間の情報の入出力を行う。また、この入出力部11は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
制御部10は、ノード1全体の制御を司り、ノード識別子管理部101、メッセージ処理部102、データ複製処理部103、死活監視部104を含んで構成される。なお、この制御部10は、例えば、記憶部12に格納されたプログラムをCPU(Central Processing Unit)がRAM(Random Access Memory)に展開し実行することで実現される。
ノード識別子管理部101は、クラスタを構成する各ノード1に関する識別情報と物理位置(エリア等の位置情報)に関する情報とを、ノード管理テーブル100(ノード管理情報:図3参照)として管理する。ノード識別子管理部101は、自身が特権ノードである場合に、クラスタへのノード1の追加や離脱の情報を受信し、自身が保持するノード管理テーブル100の情報を更新する。そして、ノード識別子管理部101は、その更新したノード管理テーブル100の更新情報を、クラスタ内の自身以外の他のノード1や振り分け装置4に送信する。
また、ノード識別子管理部101は、自身が特権ノードではない場合には、特権ノードからノード管理テーブル100の情報(更新情報)を受信し、自身が保持するノード管理テーブル100を更新する。
このようにすることにより、クラスタ内の各ノード1は、常に、同一内容のノード管理テーブル100を備える。
なお、ノード識別子管理部101は、ノード管理テーブル100が更新された場合、つまり、ノード1の追加や離脱があった場合に、データ複製処理部103に対して、複製データの再配置を実行させるため、データ複製指示を出力する。また、ノード管理テーブル100の更新により原本データの再配置が必要になった場合には、図示しない原本データ再配置部に対して、原本データ再配置指示を出力し、同部は原本データの再配置を実行する。
図3は、本発明の第1の実施形態に係るノード管理テーブル100(ノード管理情報)のデータ構成例を示す図である。図3に示すように、ノード管理テーブル100は、クラスタを構成する各ノード1のノード識別子110、サーバ名(アドレス)120および地域ID130を含んで構成される。
このノード識別子110は、コンシステントハッシュ法のID空間上でのノードIDに対応する。また、コンシステントハッシュ法において仮想IDを用いる場合には、ノード識別子110は、仮想ID毎に割り当てられ、ノード管理テーブル100に登録される。そして、このノード管理テーブル100では、例えば、コンシステントハッシュのID空間におけるID(または仮想ID)を昇順に並べて管理する。つまり、ノード管理テーブル100において、ノード識別子110(ノードID)を昇順に並べたときの自身のノード1の行の次の行のノード1が、ID空間上での右隣(時計回りに次)のノード1となる。
例えば、図3においては、コンシステントハッシュのID空間に基づくデータ識別子が「0」から「56」であるデータについては、同図の第1行目に指すノード(ノード識別子「56」、サーバ名「サーバA」であるノード)がそのデータに関する処理(原本データの記憶や更新、データの抽出等を含む)を担当する。同様に、データ識別子が「56」に1を加えた「57」から「172」であるデータについては、第2行目に指すノード(ノード識別子「172」、サーバ名「サーバB」であるノード)がそのデータに関する処理を担当する。以下、同様である。
サーバ名(アドレス)120は、クラスタを構成する各ノード1の識別子を表す。このサーバ名120は、ノード1それぞれのアドレス(例えば、IPアドレス)に対応付けられて記憶される。
地域ID130は、物理位置(エリア等の位置情報)に関する情報であるデータセンタエリア(K種類)の識別子を表す。例えば、地域ID130が「00」は「データセンタエリアα(九州エリア)」を表し、地域ID130「01」は、「データセンタエリアβ(関西エリア)」を表し、地域ID130が「02」は、「データセンタエリアγ(関東エリア)」を表す。
なお、このノード管理テーブル100のノード識別子110は、特権ノードのノード識別子管理部101が各ノード1に対して付与することもできるし、外部装置(例えば、ネットワーク管理装置等)が各ノード1に対して付与したノード識別子110を受信して格納することも可能である。また、後記するように、特権ノードを設けず、分散システム1000についての管理装置を設け、その管理装置が、ノード管理テーブル100に関するノード1の離脱や追加(参加)を管理し、更新したノード管理テーブル100を各ノード1に配信するようにしてもよい。
さらに、このノード管理テーブル100には、処理で必要となる他の付加情報(例えば、各ノード1のクラスタへの参加日時等)を加えることも可能である。
このノード識別子管理部101は、自身が特権ノードである場合に、自身の死活監視部104や、特権ノードでない他のノード1、外部装置(ネットワーク管理装置等)から、ノード1の離脱の情報を受信した場合に、ノード管理テーブル100において、その離脱させるノード1の情報(ノード識別子110、サーバ名(アドレス)120および地域ID130)を含むレコードを削除する。
また、ノード識別子管理部101は、自身が特権ノードである場合に、自身の死活監視部104や、特権ノードでない他のノード1、外部装置(ネットワーク管理装置等)から、ノード1の追加(参加)の情報を受信した場合に、所定の手法(例えば、ランダムやID空間上の最大領域を2分割する方法等)により、待機状態にあるノードの中から追加するノードの識別子(ノード識別子110)を決定し、その追加させるノード1の情報(ノード識別子110、サーバ名(アドレス)120および地域ID130)を含むレコードをノード管理テーブル100に挿入する。なお、挿入位置は、追加するノード1を含めた昇順に並ぶ位置にそのレコードが追加される。
図2に戻り、メッセージ処理部102は、振り分け装置4から振り分けられたメッセージを受信し、そのメッセージの処理を実行し、処理結果をクライアント2に返信することにより、サービスを提供する。また、メッセージ処理部102は、メッセージの処理に必要なデータをそのノード1自身が保持していなかった場合には、他のノード1(ノード管理テーブル100で自身の次の行のノード1、さらに、その次の行のノード1等)に要求すること等により、そのデータを取得することが可能である。
また、メッセージ処理部102は、受信したメッセージの処理により、原本データが更新された場合には、更新後の原本データを複製して、複製データとして他のノードに格納させるため、データ複製処理部103に対して、データ複製指示を出力する。
データ複製処理部103は、自身が保持するデータ(原本データ)について、自身以外の他のノード1を所定の条件に基づき選択して、そのデータを送信することにより、他のノード1に複製データを保持させる。これにより、データの冗長化を実現する。複製データを複数生成する場合には、さらに他のノード1にデータを送信することにより、複製データを保持させる。
ここで、データの冗長数(原本データと複製データの合計数)をM(≧2)、あるデータ(原本データおよび複製データとの合計M個)について激甚災害等の大規模障害で同時に失われて良いと設定するデータ数をX(1≦X<M)とおく。データ複製処理部103は、データ複製時に、ID空間を自身のノードIDから時計回り(右回り)にみた際に、M−X個は、原本データおよび複製データを保持する拠点(データセンタエリア)それぞれが異なるようにノード1を選択して複製データを配置する。なお、このM−X個は、大規模障害後でも失われない、拠点が異なるノードの数に相当する。ここで、本実施形態においては、K種類(箇所)の拠点のうち、2種類(箇所)以上で激甚災害が同時に発生しないことを前提とする。このデータ複製処理部103によるデータの複製先決定処理については、図5および図6を参照して詳細に説明する。
死活監視部104は、死活監視テーブル200(後記する図4)を参照して、指定されたノード1(例えば、自身の次の行のノード)と所定の時間間隔で死活監視信号のやり取りを行い、クラスタを構成するノード1の障害を検出する。ノード1の障害を検出した場合、死活監視部104は、自身が特権ノードの場合はノード識別子管理部101に、自身が特権ノードでない場合は特権ノードに通知(障害発生通知)を行う。なお、後記するように、特権ノードを設けず、ノード管理テーブル100を管理する管理装置を設けた場合には、各ノード1の死活監視部104は、その管理装置に対して、障害発生通知を送信する。
図4は、本発明の第1の実施形態に係る死活監視テーブル200のデータ構成例を示す図である。
死活監視テーブル200は、1台の物理装置を単位として作成され、監視対象となるノード1(サーバ)がリスト化されたものである。死活監視テーブル200には、例えば、サーバ名とそれに紐付くアドレス(IPアドレス)とが記憶される。
死活監視テーブル200は、論理装置(仮想ノード)単位でノードが構成されるパターンを考慮して、その論理装置を構築する物理装置が少なくとも1回は監視対象となるように設定される。また、クラスタを構成するノード1に追加や離脱があった場合、ノード管理テーブル100と同期的に更新されるものとする。よって、ノード管理テーブル100のノード識別子110が、論理装置単位で構成された仮想IDによるものではなく、物理装置単位のIDである場合には、死活監視テーブル200とノード管理テーブル100とについて、同一のものを用いてもよい。また、この場合、死活監視テーブル200を生成せず、ノード管理テーブル100を用いて、死活監視部104が各ノード1の死活監視を行うようにしてもよい。
ここで、クラスタ内における複数のノード1の中から特権ノードを決定する処理について説明する。
各ノードは、ノード管理テーブル100に付加情報として、前記したように、各ノード1のクラスタへの参加日時等が格納されている場合、その参加日時が古い順に、特権ノードが選択されるようにしてもよい。また、各ノード1は、死活監視テーブル200を参照し、死活監視テーブル200の一番上の行から順に、特権ノードとなるように設定してもよい。
ノード1が新たに特権ノードになった場合、自身が特権ノードであることを示す情報を、各ノード1等に送信する。そして、特権ノードは、クラスタ内のノード1に離脱や追加(参加)があった場合に、自身のノード管理テーブル100を更新し、その更新情報を各ノード1や振り分け装置4等に配信する。
図2に戻り、記憶部12は、ハードディスクやフラッシュメモリ、RAM等の記憶手段からなり、処理の対象となる原本データや複製データ(いずれも不図示)、前記したノード管理テーブル100(図3参照)や死活監視テーブル200(図4参照)が記憶される。また、記憶部12には、データ複製処理部103が用いる各パラメータの値(M:冗長数、X:M個のうち大規模障害で同時に失われて良いと設定するデータ数)が記憶される。
<処理の流れ>
次に、本発明の第1の実施形態に係るノード1のデータの複製先決定処理の流れについて、図5および図6を参照して説明する。
図5は、本発明の第1の実施形態に係るノード1(データ複製処理部103)が行うデータの複製先決定処理の流れを示すフローチャートである。図6は、本実施形態におけるデータ複製先決定処理の具体例を説明するための図である。
ここでは、データの冗長数M(M≧2)と、大規模障害等で同時に失われて良いと設定するデータ数X(1≦X<M)が、予めノード1の記憶部12に記憶されているものとする。
データ複製処理部103は、データ複製時に、ID空間を自身のノードのノードIDから時計回り(右回り)に見た際に、少なくともM−X個は拠点(データセンタエリア)が異なるノードに複製データを配置する処理を行う。M−X個を超える複製データについては、通常のコンシステントハッシュの配置手法に従い、すでに複製データが配置されているノードを除いたノードのうち、時計回りに一番近いノードに複製データを配置する。
なお、ここでは、図5のフローチャートとともに、図6(a)に示す(M=4、X=2)の場合を具体例として合わせて説明する。
まず、データ複製処理部103は、ノード識別子管理部101やメッセージ処理部102から、データ複製指示を受信する(ステップS10)。
次に、データ複製処理部103は、記憶部12のノード管理テーブル100を参照し、自身の位置情報(地域ID130:拠点(データセンタエリア))を確認する(ステップS11)。
図6(a)においては、データAが、「●(黒丸)」において示される拠点(データセンタエリア)に配置されたノードのハッシュID範囲に含まれるもの、つまり、「●(黒丸)」の拠点(データセンタエリア)に属するノードが原本データを保持するものとして説明する。する。なお、図6(b)〜(e)も同様である。
続いて、データ複製処理部103は、複製データの配置数を「0」に初期化する(ステップS12)。
そして、データ複製処理部103は、前回確認したノードを起点(初回は、原本ノードを保持するノードを起点)に、ID空間上で右隣のノードの位置情報(地域ID130:拠点(データセンタエリア))を確認する(ステップS13)。つまり、データ複製処理部103は、ノード管理テーブル100を参照し、前回確認したノード(サーバ)の行(初回は、原本ノードを保持する自身のノードの行)の次のノード(サーバ)の行の地域ID130を確認する。
図6(a)においては、ID空間上の右隣のノードの地域ID130は、「□(白四角)」において示される拠点(データセンタエリア)となる。
次に、データ複製処理部103は、ステップS13において確認した位置情報(地域ID130:拠点(データセンタエリア))が、原本データ若しくは複製データを既に配置したノードの位置情報(地域ID130:拠点(データセンタエリア))と一致するか否かを判定する(ステップS14)。そして、一致する場合には(ステップS14→Yes)、ステップS13に戻り、ID空間において次の右隣のノードの位置情報を確認する。一方、一致しない場合には(ステップS14→No)、次のステップS15に進む。
図6(a)に示す例において、ステップS13で「□(白四角)」の拠点(データセンタエリア)が確認され、ステップS11で確認された原本データの配置されるノードである「●(黒丸)」の拠点(データセンタエリア)と異なる。よって、ここでは、ステップS15に進む。
続いて、データ複製処理部103は、ステップS15において、ステップS13で確認した右隣のノードに複製データを配置する。
図6(a)に示す例においては、原本データを格納するノード(「1番目」とする。)から数えて2番目のノードであり、「□(白四角)」のデータセンタエリアに属するノードに複製データが配置される。なお、図6(a)においては、配置順を説明するために[1]と表記する。
そして、データ複製処理部103は、複製データの配置数を「+1」とする(ステップS16)。
図6(a)に示す例においては、複製データの配置数が「1」となる。
次に、データ複製処理部103は、複製データの配置数が、M−Xよりも小さいか否かを確認する(ステップS17)。そして、条件を満たす場合に(ステップS17→Yes)、ステップS13に戻る。一方、条件を満たさない場合には(ステップS17→No)、次のステップS18に進む。
図6(a)に示す例においては、複製データの配置数が「1」であり、M−X=2であるので条件を満たし(ステップS17→Yes)、ステップS13に戻る。そして、データ複製処理部103は、ID空間上で右隣のノードの位置情報(地域ID130:拠点(データセンタエリア))を「△(白三角)」のデータセンタエリアと確認する(ステップS13)。さらに、この「△(白三角)」のデータセンタエリアは、既に配置したノードの位置情報(地域ID130:拠点(データセンタエリア))と一致しないことから(ステップS14→No)、データ複製処理部103は、この右隣の「△(白三角)」のデータセンタエリアのノードに複製データを配置し(ステップS15)(図6(a)において、2番目に複製データが配置されたことを示す[2]と表記)、複製データの配置数を「+1」して「2」とする(ステップS16)。そして、ステップS17において、複製データの配置数「2」が、M−X(=2)よりも小さいという条件を満たさないため(ステップS17→No)、次のステップS18に進む。
次に、ステップS18において、データ複製処理部103は、複製データの配置数が、冗長数M−1よりも小さいか否かを判定する。そして、この条件を満たさない場合には(ステップS18→No)、データ複製先の決定処理を終了する。一方、この条件を満たす場合には(ステップS18→Yes)、次のステップS19に進む。
図6(a)に示す例においては、複製データの配置数が「2」であり、冗長数M−1が「3」であるので、条件を満たし(ステップS18→Yes)、次のステップS19に進む。
ステップS19において、データ複製処理部103は、複製データを配置するノード配置の起点を原本ノードに戻す。
図6(a)に示す例においては、原本データを保持する「●(黒丸)」の拠点(データセンタエリア)に属するノードに起点が戻される。
続いて、データ複製処理部103は、前回確認したノードを起点(ここでの初回は、原本ノードを保持するノードを起点)に、ID空間上で右隣のノードの位置情報(地域ID130:拠点(データセンタエリア))を確認する(ステップS20)。
図6(a)に示す例においては、ID空間上で原本データを保持するノードの右隣のノードの地域ID130は、「□(白四角)」において示される拠点(データセンタエリア)となる。
続いて、ステップS20において確認したノードが、既に複製データが配置されているか否かを判定する(ステップS21)。そして、既に複製データは配置されている場合には(ステップS21→Yes)、ステップS20に戻り処理を続ける。一方、複製データが配置されていない場合には(ステップS21→No)、次のステップS22に進む。
図6(a)に示す例においては、原本データの右隣のノード「□(白四角)」に示されるノードは、すでに複製データが配置されているため、ステップS20に戻る。そして、再び、その右隣の「△(白三角)」に示されるノードにもすでに複製データが配置されているため、再度ステップS20に戻り、その次の右隣の「●(黒丸)」に示されるノードを確認し、ステップS21において、データ複製処理部103は、この「●(黒丸)」に示されるノードには、複製データが配置されていないと判定し(ステップS21→No)、次のステップS22に進む。
続いて、データ複製処理部103は、ステップS22において、ステップS20において直前に確認したノードに複製データを配置する。
図6(a)に示す例においては、原本データを格納するノード(「1番目」)から数えて4番目のノードであり、「●(黒丸)」のデータセンタエリアに属するノードに複製データが配置される(図6(a)において(3)と表記)。
そして、データ複製処理部103は、複製データの配置数を「+1」とする(ステップS23)。
図6(a)に示す例においては、複製データの配置数が「3」となる。
次に、データ複製処理部103は、複製データの配置数が、M−1よりも小さいか否かを確認する(ステップS24)。そして、条件を満たす場合に(ステップS24→Yes)、ステップS20に戻る。一方、条件を満たさない場合には(ステップS24→No)、データ複製先の決定処理を終了する。
図6(a)に示す例においては、複製データの配置数が「3」であり、M−1=3であるので条件を満たさず(ステップS24→No)、データ複製先の決定処理を終了する。
なお、このデータ複製先の決定処理(図5)のうち、ステップS10〜S17の処理が、少なくともM−X個は、拠点(データセンタエリア)が異なるノードに複製データを配置することを保証するものである。このM−X個の拠点が異なるノードへの複製データの配置が保証される処理において決定された複製先のノードを、図6においては、前記したように角カッコで囲んで、[1]のようにその決定順を示している。また、データ複製先決定処理(図5)のうち、ステップS18〜S24の処理は、すでに複製データが配置されているノードを除いたノードのうち、時計回りに一番近いにノードに複製データを配置する処理である。この処理中に決定された複製データの配置先は、図6において、前記したように丸カッコで囲んで、(3)のようにその決定順を示している。
図6(b)および図6(c)は、M=4、X=2のときの、データ複製先の決定処理の他の例を示している。また、図6(d)および図6(e)は、M=3、X=1のときの、データ複製先の決定処理の例を示している。
図6(a)〜(e)は、いずれも、ID空間を原本データのノードのノードIDから時計回り(右回り)に見た際に、M−X個は、原本データおよび複製データを保持する拠点(データセンタエリア)それぞれが異なるように、複製データを配置するノード1が決定されている。また、M−X個を超える複製データについては、すでに複製データが配置されているノードを除いたノードのうち、時計回りに一番近いにノードに配置される。
このようにすることで、本実施形態に係るノード1によれば、激甚災害等による大規模障害が発生した場合であっても、少なくともM−X個は拠点(データセンタエリア)の異なるノードから選択されることになるので、データを損失させず、継続して処理を行うことが可能となる。
<第2実施形態>
次に、本発明の第2の実施形態に係るノード1Aについて説明する。
本発明の第1の実施形態に係るノード1においては、複製データの配置時(データの複製先を決定する際)に、ノードの位置情報(地域ID130:拠点(データセンタエリア))を利用し、少なくともM−X個は拠点(データセンタエリア)が異なるノードに複製データを配置する処理を行った。本発明の第2の実施形態に係るノード1Aは、第1の実施形態に係るノード1の機能(データ複製処理部103によるデータの複製先決定処理)に加えて、新たなノードをクラスタに参加させる時点において、複製データの配置先となるノードが異なる拠点から選択されるようにID空間へのノード挿入位置を決定する。つまり、新たに参加するノードのID空間上の挿入位置を確認し、激甚災害等により同一拠点のサーバすべてに障害が発生した場合でも、データを損失しないような挿入位置に新たなノードを配置するものである。このようにすることで、複製データの偏りやノード離脱時のデータ取得の処理の発生を抑制することができる(詳細は後記)。以下、具体的に説明する。
図7は、本発明の第2の実施形態に係るノード1Aの構成例を示す機能ブロック図である。図2において示した第1の実施形態に係るノード1との違いは、第2の実施形態に係るノード1Aは、第1の実施形態に係るノード1の構成に加えて、ノード配置決定部105を備えていることである。その他の構成については、図7において、図2に示した第1に実施形態に係るノード1と同一の名称と符号を付し、説明を省略する。また、分散システム1000の全体構成も第1の実施形態における図1と同一であるので説明を省略する。
従来のコンシステントハッシュによるデータ管理手法では、クラスタに新たにノードを追加(参加)しようとする場合、サーバの物理位置を考慮せずにその新たに追加するノードを分散(配置)させている。一方、本発明の第2の実施形態に係るノード配置決定部105は、ID空間(ノード管理テーブル100)に新たなノードを追加しようとする場合、新たなノードを追加するノードIDの周囲(左右それぞれ)M−1個のノードのうちM−X個以上のノードが、追加するノードが属する拠点(データセンタエリア)と異なる拠点(データセンタエリア)となるように配置する。つまり、ノード配置決定部105は、M−X個のノードの拠点および追加するノードの拠点のそれぞれが異なる拠点となるようなID空間の挿入位置を、新たに追加するノードの挿入位置として決定する。
(第2の実施形態に係るノード1Aの課題)
本発明の第1の実施形態に係るノード1においては、激甚災害等による大規模障害が発生した場合であっても、少なくともM−X個は拠点(データセンタエリア)の異なるノードから選択されることになるので、データを損失させず、継続して処理を行うことが可能となるという顕著な効果を奏する。その一方で、この手法を用いた場合、従来のコンシステントハッシュ法によるデータ管理手法と異なり、複製データが、ID空間上で時計回り(若しくは反時計回り)に隣接するノード1に必ず作成されるものとは限らない。第1の実施形態に係る複製データの配置処理を実行すると、特に隣接ノードが同一拠点のサーバである場合に、その隣接ノードが複製データを保持していない場合がでてくる。このような場合において、原本データを保持したノードに障害が発生すると、原本データを保持したノードの隣接ノードが新たにその原本データのハッシュID範囲を担当することになるが、原本データを保持していないため、複製データを保持するノード1からそのデータを取得する処理が必要となる。つまり、原本データを保持したノードに障害が発生した場合に、隣接ノードが複製データを保持していないため、他のノードから複製データを取得することなく、処理を継続できるという利点が得られなくなってしまう。以下、具体的に説明する。
図8(a)では、データX(Key「X」)の原本データを保持するノード1がノード「A」であり、本発明の第1の実施形態に係るノード1の複製データ配置手法により複製データが他の拠点のノード「D」に格納されている例を示している。なお、ノード「A」「B」「C」は同一拠点(「●(黒丸)」)のノードである。ここで、ノード「A」に障害が発生した場合を考えると、振り分け装置4は、ノード「A」の障害(離脱)の通知(ノード管理テーブル100の更新情報)を受けること等により、ID空間上で時計回りの次のノードであるノード「B」にデータXに関するリクエストを送信する。しかしながら、ノード「B」はデータXを保持していないため、複製データを保持するノード「D」からデータを取得してから処理する必要がある。つまり、ノード障害時に複製データを持つノードに自動的に信号が振り分けられる従来の利点が得られなくなる。
また、次に示す複製データを保持するノード1が偏るという課題もある。
同一拠点の異なるサーバのID(ノード識別子110)が、ID空間上で連続していると、複製データを保持するサーバが偏る可能性がある。図8(b)に示すように、ノード「A」「B」「C」が同一拠点(「●(黒丸)」)上にあり連続していると、例えばM=2、X=1の場合に、ノード「A」「B」「C」のすべてのノードが保持する原本データの複製データが拠点の異なるノード「D」において保持されることになる。
一方、ノードをクラスタに参加(追加)させる場合、ID空間におけるサーバの挿入位置の両端(左右)のサーバが属さない拠点(データセンタエリア)に属するサーバをクラスタの参加するサーバとして選択する(図9のT1)技術が開示されている(特開2013−182546号公報)。この技術によれば、ID空間において同じ拠点のサーバは隣り合うことがないので、3つ以上の拠点のうちの1つの拠点に存在するすべてのサーバがダウンしても、データを損失する事態を回避することができる。図9は、クラスタのノードを追加する場合に、M=2とし、挿入位置の両端のサーバが属さない拠点のサーバを選択する。しかしながら、この技術は、ノードの参加を行っている時点では問題ないが、図9のT2に示すように、ノードの離脱が発生すると、同一拠点の異なるサーバが隣り合う事態が発生してしまうため、激甚災害等の大規模障害が発生した場合に、データを損失する事態が起こる可能性がある。
本発明の第2の実施形態に係るノード1Aは、本発明の実施形態1に係るデータの複製先決定処理と、ノード1Aのノード配置決定部105による、クラスタへの新たなノードの参加時におけるノード挿入位置決定処理とを組み合わせる。これにより、本発明の第2の実施形態に係るノード1Aは、上記において説明したコンシステントハッシュの利点を損なわず、複製データの偏りを低減し、ノードの離脱が起こった場合においても、大規模障害に耐えるための条件(少なくともM−X個は、拠点(データセンタエリア)が異なるノードに複製データを配置すること)を満たすデータ配置を実現することができる。
<処理の流れ>
次に、本発明の第2の実施形態に係るノード1A(ノード配置決定部105)が実行する、クラスタへのノード参加時のID空間におけるノード挿入位置決定処理について、図10および図11を参照して説明する。
≪ノードの参加(追加時)のノード挿入位置決定処理≫
図10は、本発明の第2の実施形態に係るノード1A(ノード配置決定部105)が行う、ノード参加時のID空間におけるノード挿入位置決定処理の流れを示すフローチャートである。また、図11は、ノード参加時のID空間におけるノード挿入位置決定処理を説明するための図である。なお、以下においては、図10を参照して処理の流れを説明し、適宜図11を参照して説明を加えるものとする。
図10に示すように、まず、ノード配置決定部105は、ノード管理テーブル100を参照し、拠点(データセンタエリア)毎に、クラスタを構成するすべてのノードの数(一つの物理ノードに複数の仮想ノードを割り当てている場合には、仮想ノードの数)を合計した値を算出する(ステップS30)。
続いて、ノード配置決定部105は、ステップS30で算出した拠点の合計値が、最も小さい拠点のサーバ(ノード1)を選択する(ステップS31)。
図11では、例として「○(白丸)」の拠点(データセンタエリア)に属する待機中のノード1が選択されたことを示している(図11のT10)。
次に、ノード配置決定部105は、所定のID割当手法(例えば、ランダムやID空間上の最大領域を2分割する手法)に従い、ID空間上におけるID(挿入位置)の候補を選択する(ステップS32)。
図11では、例として「△(白三角)」で示される拠点のノード1と、「□(白四角)」で示される拠点のノード1との間のIDが、挿入位置として選択されたことを示している(図11のT11)。
そして、ノード配置決定部105は、選択された挿入位置から周囲(左右(両側)それぞれ)M−1個のノードの属する拠点を、ノード管理テーブル100を参照して確認し、M−X個以上のノードの属する拠点が新たに挿入するノードの拠点と異なるか否かを判定する(ステップS33、図11のT12)。なお、「M−X個以上のノードの属する拠点が新たに挿入するノードの拠点と異なる」ことを、以下、「大規模障害に耐えるための挿入条件」と呼ぶことがある。
ここで、この大規模障害に耐えるための挿入条件を満たさない場合は(ステップS33→No)、ステップS32に戻り、所定のID割当手法を用いて、それまでに選択されたID(挿入位置)の候補を除いた上で、再度、挿入位置の選択処理を実行して処理を繰り返す。一方、この大規模障害に耐えるための挿入条件を満たす場合には(ステップS33→Yes)、ステップS32で選択したIDを、新たに参加するノードのID空間上の挿入位置として決定する(ステップS34)。そして、処理を終了する。
このようにすることで、クラスタに新たなノード1Aが参加する際、ノード1A(ノード配置決定部105)は、挿入位置の周囲M−1個のノードが属する拠点のうち、M−X個以上のノードの属する拠点が新たに挿入するノードの拠点と異なるように配置することができる。よって、ノード1Aは、ノード配置決定部105のノード挿入位置決定処理に基づく配置をクラスタ内で繰り返すことにより、同一拠点のノードがID空間上で隣接するケースを低減させて、複製データの偏りやノード離脱時のデータ取得の処理の発生を抑制することができる。
≪ノード離脱時の処理≫
次に、本発明の第2の実施形態に係るノード1Aによる、ノード離脱時の処理の流れについて説明する。
図12は、本発明の第2の実施形態に係るノード1Aが行う、ノード離脱時のノード管理テーブル100の更新処理の流れを示すフローチャートである。図13は、ノード離脱時のデータ複製先の決定処理を説明するための図である。
図12に示すように、まず、ノード1Aの死活監視部104が、死活監視テーブル(図4)を参照して、死活監視信号を他のノード1Aとやりとりすることにより、クラスタを構成するノード1Aの障害を検出する(ステップS40)。障害を検出した場合、死活監視部104は、自身が特権ノードの場合はノード識別子管理部101に、自身が特権ノード以外のノード1の場合は特権ノードに通知を行う。
特権ノードのノード識別子管理部101は、ノード離脱が発生したことを示す通知を受信すると、ノード管理テーブル100を参照し、その離脱したノードに関する行を削除する更新を行う(ステップS41)。そして、特権ノードのノード識別子管理部101は、更新したノード管理テーブル100の更新情報を、クラスタ内のすべてのノード1Aや振り分け装置4に対して送信する(ステップS42)。
そして、データAの原本データを保持するノード1Aは、ノード管理テーブル100の更新情報を受信し、自身が担当するデータAの複製データを保持するノード1Aが離脱したことを検出した場合には、再度、図5に示す、データ複製先の決定処理を実行する(ステップS43)。
このように、再度ノード1Aがデータ複製先の決定処理を実行することで、ノードの離脱が起こった場合においても、大規模障害に耐えるための条件(少なくともM−X個は、拠点(データセンタエリア)が異なるノードに複製データを配置すること)を満たすデータ配置を実現することができる。
なお、本発明の第2の実施形態に係るノード1Aは、前記したように、本発明の実施形態1に係るデータの複製先決定処理と、ノード1Aのノード配置決定部105による、クラスタへの新たなノードの参加時におけるノード挿入位置決定処理とを組み合わせるものである。具体的には、ノード1Aのノード配置決定部105の処理をノードの参加の度に行うことにより、図13(a)のノード1の配置で示すように、K箇所(ここでは3箇所)の拠点が、例えば、「△(白三角)」、「●(黒丸)」、「「□(白四角)」の順に繰り返すように並ぶように(より最適に近い場合において)配置される。なお、図13は、M=3、X=2の例を示している。
ここで、コンシステントハッシュのID空間において、図13(a)に示すような最適な配置がノード1Aのノード配置決定部105により実現できている場合に、原本データ(「データA」)の右隣のノードが故障等による障害発生で離脱したとする(図13(a)参照)。このとき、原本データを保持するノードは、冗長数M=3を保つため、データ複製先の決定処理を再度実行し、複製データの配置先を決定し直す(図13(b)参照)。これにより、大規模障害に耐えるための条件を満たすデータ配置を実現することができる。また、ノード参加時にノード挿入位置決定処理が行われているため、同一拠点の異なるサーバのID(ノード識別子110)が、ID空間上で連続するケースが低減されるため、複製データの偏りやノード離脱時のデータ取得の処理の発生が抑制されるものとなる。
以上より、本発明の第2の実施形態に係るノード1Aによれば、ノード参加時には、ノード配置決定処理により、サーバの選択とID挿入位置が決定されるため、挿入位置の周囲M−1個のノードが属する拠点のうち、M−X個以上のノードの属する拠点が新たに挿入するノードの拠点と異なることが保証される。一方で、複製データの配置は、データ複製処理部103により、仮にノードが離脱して、上記の条件(大規模障害に耐えるための条件)を満たさなくなった場合であっても、再度、複製データの配置先を決定することにより、条件を満たすデータ配置を実現することができる。また、ノード参加時のノード配置決定処理により、ノード離脱時のデータ取得や複製データの偏りが出現しにくいものとすることができる。
以上、本発明の実施形態について説明したが、本発明は、ここで説明した実施形態に限定されるものではない。
例えば、本発明の第1および第2の実施形態においては、特権ノードが各ノード1からノードの離脱や追加に関する情報(障害等の情報)を取得し、特権ノードが保持するノード管理テーブル100を更新して、その更新情報を各ノード1等に配信するものとした。しかしながら、この実施形態に限定されず、例えば、各ノード1や振り分け装置4と接続された管理装置を設け、その管理装置が、各ノード1から障害等の情報を取得し、ノード管理テーブル100を更新して各ノード1に配信するようにしてもよい。
また、第2の実施形態においてノード1Aが備えたノード配置決定部105(図7参照)の機能をノード配置決定手段として、前記した管理装置に備えるようにしてもよい。この場合、管理装置には、各ノード1と同一のノード管理テーブル100が格納されており、クラスタに新たなノードを参加させる際に、管理装置が備えるノード配置決定手段が、ID空間におけるノード挿入位置決定処理(図10参照)を実行する。
1,1A ノード
2 クライアント
3 ロードバランサ
4 振り分け装置
10 制御部
11 入出力部
12 記憶部
100 ノード管理テーブル(ノード管理情報)
101 ノード識別子管理部
102 メッセージ処理部
103 データ複製処理部
104 死活監視部
105 ノード配置決定部
1000 分散システム

Claims (4)

  1. 環状のID(IDentifier)空間に、処理対象の複数のデータのID、および、クラスタを構成し前記データに関するリクエストを処理する複数のノードのIDが、割り当てられ、前記ID空間において前記データのIDから所定方向回りに辿って最初に遭遇した前記ノードまでの間に位置する前記データを当該ノードが原本データとして保持するとともに、前記クラスタ内の自身以外の他のノードに前記原本データの複製である複製データを保持させる分散システムの前記ノードであって、
    前記ID空間における、前記ノードそれぞれのIDを、前記ノードそれぞれが物理的に存在する地域を示す位置情報に対応付けたノード管理情報、前記クラスタ内における前記データの前記原本データおよび前記複製データの保持数である冗長数(M(≧2))、並びに、前記原本データおよび前記複製データのうち障害により同時に失われても良いと設定するデータ数(X)を記憶する記憶部と、
    前記ノード管理情報の前記位置情報を参照することにより、前記ID空間の自身のノードのIDから所定方向回りに辿って遭遇する前記ノードのうち、少なくともM−X個は、前記原本データおよび前記複製データを保持する前記ノードの地域を示す前記位置情報がそれぞれ異なるように、前記複製データの配置先となる前記ノードを決定するデータ複製処理部と、
    を備えることを特徴とするノード。
  2. 前記ノードは、
    前記クラスタを構成する前記ノードの障害発生情報を取得した場合に、障害の発生により離脱したノードのIDと当該ノードの前記位置情報とを、前記ノード管理情報から削除する更新を行うノード識別子管理部をさらに備え、
    前記データ複製処理部は、前記ノード管理情報が更新されると、前記複製データの配置先となる前記ノードの決定処理を、再度実行すること
    を特徴とする請求項1に記載のノード。
  3. 前記ノードは、
    前記クラスタに参加する新たなノードの前記ID空間における挿入位置を決定する際に、所定のID割当手法において選択された挿入位置の両側それぞれM−1個のノードの属する前記位置情報を、前記ノード管理情報を参照して確認し、M−X個以上のノードの位置情報が、新たに挿入するノードの位置情報と異なる場合に、前記選択された挿入位置を、前記参加する新たなノードのIDとして決定するノード配置決定部を、さらに備えること
    を特徴とする請求項1または請求項2に記載のノード。
  4. コンピュータを請求項1乃至請求項3のいずれか一項に記載のノードとして機能させるためのプログラム。
JP2013218306A 2013-10-21 2013-10-21 ノードおよびプログラム Active JP5815000B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013218306A JP5815000B2 (ja) 2013-10-21 2013-10-21 ノードおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013218306A JP5815000B2 (ja) 2013-10-21 2013-10-21 ノードおよびプログラム

Publications (2)

Publication Number Publication Date
JP2015082129A JP2015082129A (ja) 2015-04-27
JP5815000B2 true JP5815000B2 (ja) 2015-11-17

Family

ID=53012714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013218306A Active JP5815000B2 (ja) 2013-10-21 2013-10-21 ノードおよびプログラム

Country Status (1)

Country Link
JP (1) JP5815000B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6322161B2 (ja) * 2015-06-22 2018-05-09 日本電信電話株式会社 ノード、データ救済方法およびプログラム

Also Published As

Publication number Publication date
JP2015082129A (ja) 2015-04-27

Similar Documents

Publication Publication Date Title
JP6382454B2 (ja) 分散ストレージ及びレプリケーションシステム、並びに方法
JP5612195B2 (ja) 分散データストレージ
KR20200112633A (ko) 합의 시스템 다운타임 복구
US20140108532A1 (en) System and method for supporting guaranteed multi-point delivery in a distributed data grid
WO2008103569A1 (en) Methods for operating a fixed prefix peer to peer network
US20140188957A1 (en) Hierarchical storage system and file management method
KR20200112634A (ko) 합의 시스템 다운타임 복구
JP2016530608A (ja) ミラーリングされるデータサイト間のデータの複製
JP5629281B2 (ja) 管理装置およびプログラム
JP5723309B2 (ja) サーバおよびプログラム
JP2014041550A (ja) データ移行処理システムおよびデータ移行処理方法
JP5815000B2 (ja) ノードおよびプログラム
JP6055197B2 (ja) データベースシステム
JP2024514467A (ja) 地理的に分散されたハイブリッドクラウドクラスタ
JP5658621B2 (ja) 信号振分複製先決定システム、信号振分複製先決定方法およびプログラム
JP6322161B2 (ja) ノード、データ救済方法およびプログラム
JP5745445B2 (ja) 管理装置およびプログラム
JP5956364B2 (ja) クラスタシステム
JP6093320B2 (ja) 分散処理システム
JP5711772B2 (ja) クラスタシステム
JP5845298B2 (ja) ノードおよびプログラム
KR20160025994A (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템
JP6197872B2 (ja) データ処理システム、データ処理方法およびデータ処理プログラム
JP5711771B2 (ja) ノード離脱処理システム
JP6473425B2 (ja) ノードおよびデータ配置方法

Legal Events

Date Code Title Description
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: 20150915

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150918

R150 Certificate of patent or registration of utility model

Ref document number: 5815000

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150