JP6506156B2 - ノードおよびグラビテーション抑止方法 - Google Patents

ノードおよびグラビテーション抑止方法 Download PDF

Info

Publication number
JP6506156B2
JP6506156B2 JP2015221115A JP2015221115A JP6506156B2 JP 6506156 B2 JP6506156 B2 JP 6506156B2 JP 2015221115 A JP2015221115 A JP 2015221115A JP 2015221115 A JP2015221115 A JP 2015221115A JP 6506156 B2 JP6506156 B2 JP 6506156B2
Authority
JP
Japan
Prior art keywords
node
data
space
information
distribution
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
JP2015221115A
Other languages
English (en)
Other versions
JP2017091248A (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 JP2015221115A priority Critical patent/JP6506156B2/ja
Publication of JP2017091248A publication Critical patent/JP2017091248A/ja
Application granted granted Critical
Publication of JP6506156B2 publication Critical patent/JP6506156B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Computer And Data Communications (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を持たせる手法が用いられている(非特許文献3参照)。各ノードが複数の仮想IDを持つことで、仮想ID毎の担当領域の大きさは異なっていても、大数の法則に従いノード毎の担当領域の大きさは平均化される。
David Karger, et al.,"Consistent Hashing and Random Trees:Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web",[online],1997,ACM,[平成27年10月21日検索],インターネット<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],[平成27年10月21日検索],インターネット<URL:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf> 入江 道生、他4名、「コンシステント・ハッシュ法におけるデータの複製を意識した負荷分散手法」、社団法人電子情報通信学会、2010年10月、信学技報、IN2010-77、P.69-74
このコンシステント・ハッシュ法を用いた分散システムにおいては、コンシステント・ハッシュのID空間上での時計回り探索により、各ノードの担当領域が決定される。よって、冗長度を保つためには、あるデータ(原本データ)の複製データを、ID空間上において時計回りで次に位置するノードに順次配置する。そして、あるノードが、何らかの事由で減設された場合には、減設ノードのID空間上で時計回りに位置するノードに担当領域の移譲が行われる。
しかしながら、ID空間上において減設ノードの時計回りで次のノードに単純に担当領域を移譲すると、そのノードの負荷が急増するため、減設ノードの時計回りに次のノードと、減設ノードの反時計回りに次のノードとで、担当領域を分割(2分割)し、減設ノードの時計回りに次のノードの負荷を軽減し、負荷分散する処理が行われる。このとき、減設ノードの担当領域を引き継ぐ反時計回りで次のノードは、必ずグラビテーション(原本移管)が発生し、システム全体として冗長度を回復するまでに時間がかかるという問題があった。ここで、グラビテーション(原本移管)とは、他ノードの複製データを用いて減設ノードが担当していた原本データの復旧を図る処理をいう。
図10は、上記の課題を説明するための図である。
図10(a)に示すように、原本データ「G」「G」がID空間上においてノード「D」の担当領域に配置され、その複製データ「g」「g」がID空間上で時計回りに次のノードであるノード「E」と、さらにその次のノード(次々ノード)であるノード「A」に配置されているものとする。この場合において、ノード「D」が減設された場合を考える。
図10(a)に示す場合において、ノード「D」が減設すると、ノード「D」のID空間上での担当領域は、原則として、時計回りに次のノードであるノード「E」に引き継がれる。しかしながら、そのままではノード「E」の負荷が増大してしまうため、ここでは、ノード「C」の担当領域を増大させるようにID空間上で時計回り方向にノード「C」のIDを移動することにより、過度にノード「E」の負荷が増大しないような負荷分散処理を実行する。
ここで、図10(b)に示すように、減設されたノード「D」が保持していた原本データ「G」については、ノード「E」が複製データ「g」を保持しているため、その複製データを原本データに昇格させるだけでよい。なお、ノード「E」は、複製データ「g」を原本データ「G」に昇格させた後で、レプリケーション(データの一貫性を保つためのデータ複製処理)を実行する。
一方、減設されたノード「D」が保持していた原本データ「G」については、ノード「C」が複製データ「g」を保持していないため、その複製データ「g」を保持する例えばノード「E」からのグラビテーション(原本移管)を行う。これにより、ノード「C」は、原本データを保持することができる。なお、ノード「C」は、グラビテーションの終了後に、レプリケーションを実行する。
つまり、減設ノードの反時計回りに位置するノードが、減設ノードの担当領域を引き継ぐ場合には、原本データを保持していないため、必ずグラビテーション(原本移管)が発生する。これにより、複製データを原本昇格させる場合に比べて、グラビテーションにより原本を復旧させるため時間がかかるという問題があった。
このような背景を鑑みて本発明がなされたのであり、本発明は、分散処理システムを構成するノードの減設時において、グラビテーション(原本移管)の発生を抑止し、システムの冗長度の復旧までの時間を短縮することができる、ノードおよびグラビテーション抑止方法を提供することを課題とする。
前記した課題を解決するため、請求項1に記載の発明は、クラスタを構成する複数のノードそれぞれに、コンシステント・ハッシュ法によりデータを振り分けて処理させる分散処理システムの前記ノードであって、ID空間上で時計回りに配置される各ノードの担当領域を示す振り分けID情報を記憶する記憶部と、ノード減設の情報を受信すると、前記ID空間上で減設されたノードの反時計回りに最初に位置するノードのID空間上の位置を、時計回りに所定のID分移動させて前記振り分けID情報を更新し、前記振り分けID情報の更新情報を前記複数のノードに送信するノード識別子管理部と、前記ID空間上において自身の前記担当領域に位置する原本データを格納するノードから、前記ID空間上で時計回りに最初に位置するノードおよび反時計回りに最初に位置するノードを、前記原本データの複製データを配置するノードに決定し、前記原本データの複製データを前記決定したノードに記憶させるレプリケーションデータ管理部と、を備え、前記ノード減設に伴う前記振り分けID情報の更新情報を受信した場合に、前記レプリケーションデータ管理部は、受信した更新情報の前記振り分けID情報で示される自身のノードの前記ID空間上の担当領域において前記複製データとして記憶しているデータを前記原本データに昇格させることを特徴とするノードとした。
また、請求項3に記載の発明は、クラスタを構成する複数のノードそれぞれに、コンシステント・ハッシュ法によりデータを振り分けて処理させる分散処理システムの前記ノードのグラビテーション抑止方法であって、前記ノードが、ID空間上で時計回りに配置される各ノードの担当領域を示す振り分けID情報を記憶部に記憶しており、ノード減設の情報を受信すると、前記ID空間上で減設されたノードの反時計回りに最初に位置するノードのID空間上の位置を、時計回りに所定のID分移動させて前記振り分けID情報を更新し、前記振り分けID情報の更新情報を前記複数のノードに送信するステップと、前記ID空間上において自身の前記担当領域に位置する原本データを格納するノードから、前記ID空間上で時計回りに最初に位置するノードおよび反時計回りに最初に位置するノードを、前記原本データの複製データを配置するノードに決定し、前記原本データの複製データを前記決定したノードに記憶させるステップと、を実行し、前記ノード減設に伴う前記振り分けID情報の更新情報を受信した場合に、受信した更新情報の前記振り分けID情報で示される自身のノードの前記ID空間上の担当領域において前記複製データとして記憶しているデータを前記原本データに昇格させることを特徴とするグラビテーション抑止方法とした。
このようにすることで、分散処理システムを構成するノードは、自身の担当領域に位置する原本データの複製データの配置先を、ID空間上において自身のノードから時計回りに最初に位置するノードおよび反時計回りに最初に位置するノードに決定し、複製データを記憶させることができる。
よって、ノード減設時において、減設ノードの担当領域を引き継ぐノードには必ず複製データが配置されていることになるため、グラビテーション(原本移管)を抑止し、システムの冗長度回復までの時間を短縮することができる。
また、ノードは、ID空間上での自身の担当領域が更新され、それまで複製データとして保持していたデータが自身の担当領域に含まれるデータに変更された場合に、その複製データを原本データに昇格させることができる。
よって、ノードは、複製データを原本データに昇格し、即時にレプリケーションを実行することが可能となる。
請求項2に記載の発明は、前記記憶部には、保持するデータが、前記ID空間上において自身の前記担当領域に位置する原本データであるか、原本データの複製である複製データであるか、を識別するフラグであるレプリカフラグの情報を含むデータ属性情報が、さらに記憶されており、前記レプリケーションデータ管理部が、前記ノード減設に伴う前記振り分けID情報の更新情報を受信した場合に、前記原本データに昇格させる複製データを、前記レプリカフラグを参照することにより検索し、当該検索により得られた複製データのレプリカフラグを原本データを示すフラグに変更することを特徴とする請求項1に記載のノードとした。
本発明によれば、分散処理システムを構成するノードの減設時において、グラビテーション(原本移管)の発生を抑止し、システムの冗長度の復旧までの時間を短縮する、ノードおよびグラビテーション抑止方法を提供することができる。
本実施形態に係るノードを含む分散処理システムの全体構成を示す図である。 本実施形態に係るノードの処理概要を説明するための図である。 本実施形態に係るノードの構成例を示す機能ブロック図である。 本実施形態に係るノード識別子管理テーブルのデータ構成例を示す図である。 本実施形態に係る振り分けIDテーブル(振り分けID情報)のデータ構成例を示す図である。 本実施形態に係るデータ属性情報のデータ構成例を示す図である。 本実施形態に係るノードが実行するグラビテーションを抑止する処理の流れを示すフローチャートである。 本実施形態に係るノードが実行する複製データの配置先ノード決定処理の流れを示すフローチャートである。 本実施形態に係るノードが実行する複製データの配置先ノード決定処理の具体例を説明するための図である。 ノード減設時の従来技術の課題を説明するための図である。
<全体構成>
まず、本発明を実施するための形態(以下、「本実施形態」と称する。)に係るノード1を含む分散処理システム1000について説明する。
図1は、本実施形態に係るノード1を含む分散処理システム1000の全体構成を示す図である。
この分散処理システム1000は、複数のノード1から構成される。各ノード1は、コンピュータなどの物理装置や仮想マシンなどの論理装置である。ロードバランサ3は、クライアント2から受信したメッセージを、単純なラウンドロビン等により振り分けて各ノード1に送信する。そして、ノード1の振り分け部12は、クライアント2からのメッセージを、例えば、コンシステント・ハッシュ法等に基づき、メッセージを担当するノード1に振り分ける。メッセージを担当するノード1では、信号処理部13において、信号処理を行い、クライアント2にサービスを提供する。
なお、ロードバランサ3が存在せず、クライアント2から任意のノード1(振り分け部12)にメッセージを送信することも可能である。また、振り分け部12と信号処理部13とは、同じノード1上に同時に存在してもよいし、別々のノード1上に存在してもよい。
<ノード>
次に、分散処理システム1000を構成するノード1について、具体的に説明する。
≪概要≫
まず、本実施形態に係るノード1の処理の概要を説明する。
本実施形態に係るノード1は、前記したように、分散処理システム1000を構成するノードの減設時において、グラビテーション(原本移管)が発生しないようにするため、自身が保持する原本データの複製データを、従来技術のように、ID空間上で時計回り方向に位置するノードだけでなく、ID空間上で反時計回り方向に位置するノードにも配置する。このようにすることにより、減設ノードの担当領域が、減設ノードの時計回り側のノードと、減設ノードの反時計回り側のノードとで、分割された場合においても、グラビテーションの発生を抑止することができる。
具体的には、図2(a)に示すように、原本データ「G」「G」がID空間上においてノード「D」の担当領域に配置される場合において、その複製データ「g」「g」を、ID空間上で時計回り側の次の(最初の)ノードであるノード「E」と、ID空間上で反時計回り側の次の(最初の)ノードであるノード「C」とに配置する。
図2(a)に示す場合において、ノード「D」が減設すると、ノード「D」の担当領域は、負荷分散処理が実行されることにより分割され、ノード「E」とノード「C」とが担当することとなる。
ここで、図2(b)に示すように、減設されたノード「D」が保持していた原本データ「G」については、ノード「E」が複製データを保持しているため、その複製データを原本データに昇格させるだけでよい。なお、ノード「E」は、複製データを原本データに昇格させた後で、レプリケーション(データの一貫性を保つためのデータ複製処理)を実行する。ノード「E」は、ID空間上で時計回り方向に位置するノード「A」と、ID空間上で反時計回り方向に位置するノード「C」に、複製データを送信するレプリケーションを実行する。
また、減設されたノード「D」が保持していた原本データ「G」についても、本実施形態においては、ノード「C」が複製データを保持しているため、その複製データを原本データに昇格させるだけでよい。つまり、図10(b)で示したような、グラビテーション(原本移管)は発生しない。なお、ノード「C」は、複製データを原本データに昇格させた後で、レプリケーションを実行する。ノード「C」は、ID空間上で時計回り方向に位置するノード「E」と、ID空間上で反時計回り方向に位置するノード「B」に、複製データを送信するレプリケーションを実行する。
上記のようにすることにより、本実施形態に係るノード1は、分散処理システム1000を構成するノード1の減設時において、グラビテーション(原本移管)の発生を抑止し、システムの冗長度の復旧までの時間を短縮することができる。また、冗長度回復の際に、グラビテーション(原本移管)が発生しないため、データ転送のトラフィックの増加や、CPU(Central Processing Unit)使用率の増加を防ぐことができる。
≪ノードの構成≫
次に、本実施形態に係る分散処理システム1000を構成するノード1について、具体的に説明する。なお、本実施形態に係るノード1は、分散処理システム1000の複数のノード1のうち、後記するノード識別子管理テーブル100(図4参照)および振り分けIDテーブル200(図5参照)を管理する特権ノードとなる場合と、特権ノードからノード識別子管理テーブル100および振り分けIDテーブル200の情報を受け取り自身のノード識別子管理テーブル100および振り分けIDテーブル200を更新する非特権ノードとなる場合とが存在する。なお、特権ノードが行う処理等については、後記する。
ノード1は、図1に示したように、ロードバランサ3と通信可能に接続されるともに、クラスタを構成する自身以外の他のノード1と通信可能に接続される。また、このノード1は、ロードバランサ3を介してクライアント2からメッセージを受け取ると、そのメッセージを、担当するノード1(自身を含む)に振り分け、そのメッセージの信号処理を実行する。また、特権ノードとなるノード1は、分散処理システム1000に属するノード1の減設・増設に関する情報を受信し、既存の負荷分散処理(負荷分散ロジック)に基づき、ID空間上において対象となるノード1のノードIDを変更(具体的には、後記する振り分けIDテーブル200を更新)して、負荷の偏りの低減を実現する。また、特権ノードから変更された振り分けIDテーブル200を受信した各ノード1は、新たに自身が原本データを保持することとなったデータについて、複製データを原本データに昇格させる処理を実行するとともに、複製データを送信するレプリケーションを実行する。
図3は、本実施形態に係るノード1の構成例を示す機能ブロック図である。
図3に示すように、ノード1は、制御部10と、入出力部20と、記憶部30とを含んで構成される。
入出力部20は、ロードバランサ3や、自身以外の他のノード1との間の情報の入出力を行う。また、この入出力部20は、通信回線を介して情報の送受信を行う通信インタフェース(図示省略)と、キーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェース(図示省略)とから構成される。
記憶部30は、ハードディスクやフラッシュメモリ、RAM(Random Access Memory)等の記憶手段からなり、処理の対象となるデータ300や、ノード識別子管理テーブル100(図4参照)、振り分けIDテーブル(振り分けID情報)200(図5参照)等が記憶される。なお、この記憶部30に記憶される各情報についての詳細は後記する。
制御部10は、ノード1全体の制御を司り、ノード識別子管理部11、振り分け部12、信号処理部13、レプリケーションデータ管理部14を含んで構成される。なお、この制御部10は、例えば、記憶部30に格納されたプログラムをCPU(図示省略)がRAM(図示省略)に展開し実行することで実現される。
ノード識別子管理部11は、分散処理システム1000においてクラスタを構成する各ノード1のノード情報(IPアドレス等)および各ノード1が担当するID空間を管理する。
具体的には、ノード識別子管理部11は、自身が属する分散処理システム1000へのノードの離脱(減設)や追加(増設)が発生した場合に、その情報を外部から受信し、分散処理システム1000を構成するノード1の識別情報等が記憶されたノード識別子管理テーブル100(図4)を更新する。
図4は、本実施形態に係るノード識別子管理テーブル100のデータ構成例を示す図である。
図4に示すように、ノード識別子管理テーブル100には、分散処理システム1000を構成する各ノード1のノード識別子101とアドレス102(例えば、IPアドレス)とが対応付けられて格納される。
このノード識別子101は、例えば、当該分散処理システム1000内において予め設定される特定のノード(例えば、ノード識別子101の昇順に設定)のノード識別子管理部11で付与され、当該分散処理システム1000内の各ノード1に配信される。なお、このノード識別子101は、コンシステント・ハッシュのID空間において仮想IDを用いる場合、仮想ID毎に付与される。
また、ノード識別子管理部11は、ノード1の減設・増設についての情報を受信した場合に、既存の負荷分散処理を実行し、当該分散処理システム1000内の各ノード1の負荷ができるだけ分散されるように、各ノード1のID空間上の担当領域を変更する。
具体的には、ノード識別子管理部11は、既存のノード1が減設した場合には、例えば、その減設ノードのID空間上において時計回りで次のノード1と、減設ノードのID空間上において反時計回りで次のノードとで、担当領域を2分割するように、減設ノードの反時計回りで次のノードの担当領域を変更する。
また、ノード識別子管理部11は、新たなノード1を増設した場合には、例えば、既存の各ノード1のID空間上の担当領域の大きさを検索し、担当領域が最も大きいノード1の担当領域を2分割するID空間上の位置に、新たなノード1を配置する。
ノード識別子管理部11は、既存の負荷分散処理を実行することにより得られたノードIDの変更情報に基づき、ノード識別子管理テーブル100を更新(ノード1の減設・増設を反映)し、さらに、ノード1のID空間上での担当領域を変更するため、振り分けIDテーブル200(図5)を更新する。
図5は、本実施形態に係る振り分けIDテーブル(振り分けID情報)200のデータ構成例を示す図である。
図5に示すように、振り分けIDテーブル200には、ノード識別子201に対応付けて、そのノード1が担当するID空間202(担当領域)が格納される。このノード識別子201は、図4のノード識別子101と同様の情報である。図5に示す例では、ID空間の全ID数が「0」〜「999」の1000であり、例えば、ノード識別子201が「A」のノード1が、担当するID空間202として「0〜199」について担当することを示している。また、この振り分けIDテーブル200において、ノード識別子201が「A」のノード1(ノード「A」)のID空間上のノードIDは、「199」であり、以下同様に、ノード「B」のID空間上でのノードIDは「399」であり、ノード「C」のID空間上でのノードIDは「599」であり、ノード「D」のID空間上でのノードIDは「799」であり、ノード「E」のID空間上でのノードIDは「999」である。そして、ノード識別子管理部11は、振り分けIDテーブル200において、各ノード1のノードIDを昇順にソートし、連続したID空間202として管理する。
なお、本実施形態においては、閉じたID空間上において各IDを時計回りに配置し、データのIDから時計回りに辿った場合に最初に当たったノードをそのデータの担当として説明する。しかしながら、ID空間上において各IDを反時計回りに配置し、データのIDから反時計回りに辿った場合に最初に当たったノードをそのデータの担当とするように構成してもよい。つまり、所定の方向回りにID空間上におけるIDを設定することができる。
分散処理システム1000内の特権ノードのノード識別子管理部11は、各ノード1に対して、最新のノード識別子管理テーブル100および振り分けIDテーブル200を送信する。これにより、各ノード1のノード識別子管理部11は、ノード識別子管理テーブル100および振り分けIDテーブル200を常に最新の状態に更新して保持する。このようにすることにより、分散処理システム1000内の各ノード1には、同一のノード識別子管理テーブル100および振り分けIDテーブル200が保持される。
また、特権ノードは、例えば、このノード識別子管理テーブル100(図4)の一番上の行のノード1から順に、特権ノードとなるように設定される。ノード1が新たに特権ノードになった場合、自身が特権ノードであることを示す情報を、各ノード1等に送信する。そして、特権ノードは、クラスタ内のノード1について、ID空間上での配置変更(ノードIDの変更等)があった場合に、自身の振り分けIDテーブル200を更新し、その更新情報を、各ノード1に配信する。
図3に戻り、振り分け部12は、ロードバランサ3等を介してクライアント2から受信したメッセージ内の情報(「振り分けキー」)をもとに「hash(key)」を算出し、振り分けIDテーブル200を参照して、そのメッセージの処理を担当するノード1を特定する。そして、振り分け部12は、特定したノード1のアドレスの情報を、ノード識別子管理テーブル100を参照して取得し、特定したノード1へメッセージの振り分け(送信)を行う。
信号処理部13は、自身のノード1が担当するデータに関するメッセージの信号処理を実行する。
この信号処理部13は、信号処理後に送付するメッセージに、例えば、SIP(Session Initiation Protocol)においては「Call-id」をもとに算出したハッシュ値を振り分けキーとして埋め込む(SIPにおいては、例えばTo/FromヘッダのTagに記載する。)ようにしてもよい。これにより、振り分け部12がそのメッセージの後続呼を受信した場合に、振り分けキーとして埋め込まれたハッシュ値を用いて、ノード識別子管理テーブル100(図4)を参照し、その後続呼を担当するノード1を特定することができる。
レプリケーションデータ管理部14は、特権ノードから振り分けIDテーブル200の更新情報を受信した場合に、更新された振り分けIDテーブル200において示される自身の担当領域を抽出し、当該担当領域のデータを複製データとして保持している場合に、原本データに昇格する処理を実行する。そして、複製データから新たに昇格した原本データについて、複製データを送信する他のノード1を決定し、その決定したノード1に対してレプリケーションを実行する。このとき、レプリケーションデータ管理部14は、冗長度が「3」以上(つまり、原本データが「1」、複製データが「2」以上)の場合において、ID空間上で時計回り側に次の(最初の)ノードと、反時計回り側に次の(最初の)ノードとを、必ず複製データを送信するノード1(配信先ノード)として含めた上で決定する。なお、レプリケーションデータ管理部14は、新たにデータが追加され、自身が原本データとして保持する場合においても、複製データを送信する他のノード1を同様に決定し、その決定したノード1に対してレプリケーションを実行する。
具体的は、レプリケーションデータ管理部14は、以下に示す処理を実行する。
レプリケーションデータ管理部14は、特権ノードから振り分けIDテーブル200(図5)の更新情報を受信した場合に、記憶部30内のデータ300に格納されるデータ属性情報310(図6)を参照して、自身の担当領域となっているID空間に位置するデータの中から、複製データとして保持しているデータを抽出し、原本データに昇格させる。
図6は、本実施形態に係るデータ属性情報310のデータ構成例を示す図である。
図6に示すように、データ属性情報310には、データ番号311に対応付けて、そのデータのデータ識別子(ハッシュ値)312、レプリカフラグ313、データへのアクセス(ポインタ)314が格納される。
データ番号311は、当該データを保持するノード1において固有なデータの識別番号であり、「0」、「1」、・・・等が格納される。なお、図6においては、「0」〜「n−1」のn個のデータが格納される例を示している。
データ識別子(ハッシュ値)312は、各データをID空間上において一意に特定するための識別子であり、ここでは、ID空間上に配置されるそのデータのハッシュ値が格納される。
レプリカフラグ313は、ノード1が保持するデータが、原本データであるか、または、複製データであるか、を識別するためのフラグである。レプリカフラグ313が「0」の場合は、そのデータを原本データとして保持していることを示す。また、レプリカフラグ313が「1」の場合は、そのデータを複製データとして保持していることを示す。
データへのアクセス(ポインタ)314は、当該データの実体を記憶している記憶部30(ハードディスク等)の位置情報を示す。
このデータ属性情報310には、新たなデータを保存する度に、1行(1レコード)の情報がレプリケーションデータ管理部14により格納される。
レプリケーションデータ管理部14は、特権ノードから振り分けIDテーブル200(図5)の更新情報を受信した場合に、そのノード1自身のID空間上の担当領域の情報を取得し、データ属性情報310のデータ識別子(ハッシュ値)312を参照して、その担当領域に含まれるデータを抽出する。そして、レプリケーションデータ管理部14は、抽出したデータの中から、レプリカフラグ313が「1」(複製データ)であるデータを検索し、その検索した結果得られたデータ(複製データ)を、原本データに昇格させる。具体的には、レプリケーションデータ管理部14は、そのデータのレプリカフラグ313を「1」から「0」に変更する(図6の符号α参照)。
また、レプリケーションデータ管理部14は、新たな原本データを格納した場合(上記の原本昇格した原本データも含む)、その原本データの複製データを格納するノード1(複製データの配置先ノード)を決定する。このとき、レプリケーションデータ管理部14は、冗長度が「3」以上の場合において、ID空間上で時計回り側に次のノードと、反時計回り側に次のノードとを、複製データを送信するノード1として含めた上で決定する。このレプリケーションデータ管理部14による、複製データの配置先ノード決定処理についての詳細は後記する。
なお、レプリケーションデータ管理部14は、冗長度が「2」の場合には、原則として自身の時計回りで次のノード1に複製データを格納するように決定する。また、冗長度が「4」以上の場合においては、ID空間上で時計回り側に次のノードと、反時計回り側に次のノードとを、複製データを送信するノード1として決定した後、時計回りにその次のノード1から複製ノードを順次格納するか、反時計回りにその次のノード1から複製ノードを順次格納するか、他のノード1の中からランダムに選んだノード1に複製ノードを格納するか等のロジックを予め設定しておく。レプリケーションデータ管理部14は、複製データを格納することを決定したノード1に対してレプリケーションを実行する。
<処理の流れ>
次に、本実施形態に係るノード1が実行する、グラビテーション抑止方法に基づく処理の流れについて説明する。
図7は、本実施形態に係るノード1が実行するグラビテーションを抑止する処理の流れを示すフローチャートである。
まず、特権ノードが、分散処理システム1000を構成するノード1のうちのいずれかのノード1が減設されたことを示す情報を取得する(ステップS1)。ここでノード1(特権ノード)のノード識別子管理部11は、分散処理システム1000の管理装置から特定ノードの減設指示を受信したり、各ノード1の死活監視を行い特定のノード1が減設したことを検知したりすることにより、ノード1の減設(減設ノード)を認識することができる。
続いて、特権ノードのノード識別子管理部11は、減設ノードをノード識別子管理テーブル100(図4)から削除する更新を実行する。
また、ノード識別子管理部11は、既存の負荷分散処理を実行し、各ノード1の負荷ができるだけ分散されるように、各ノード1のID空間上の担当領域を変更する。例えば、ノード識別子管理部11は、その減設ノードのID空間上において時計回りで次のノード1と、減設ノードのID空間上において反時計回りで次のノードとで、減設ノードの担当領域を2分割するように、減設ノードの反時計回りで次のノードの担当領域を変更する。具体的には、ノード識別子管理部11は、振り分けIDテーブル200(図5)において、減設ノードのレコードを削除した上で、減設ノードの反時計回りで次のノードのID空間と、減設ノードの時計回りで次のノードのID空間とを更新する(ステップS2)。
そして、特権ノードのノード識別子管理部11は、更新したノード識別子管理テーブル100(図4)および更新した振り分けIDテーブル200(図5)を、更新情報として分散処理システム1000内の各ノード1に送信する(ステップS3)。
続いて、各ノード1のノード識別子管理部11は、受信した更新情報(ノード識別子管理テーブル100および振り分けIDテーブル200)を用いて、自身の記憶部30に記憶されたノード識別子管理テーブル100および振り分けIDテーブル200を更新する(ステップS4)。
次に、各ノード1のレプリケーションデータ管理部14は、更新された振り分けIDテーブル200において示される自身の担当領域を抽出し、当該担当領域のデータについて、複製データとして保持しているか否かを判定する(ステップS5)。
ここで、レプリケーションデータ管理部14は、自身の担当領域のデータについて、複製データとして保持しているデータがなければ(ステップS5→No)、つまり、全て原本データとして保持している場合には、処理を終了する。一方、レプリケーションデータ管理部14は、自身の担当領域のデータについて、一つでも複製データとして保持しているデータがあれば(ステップS5→Yes)、次のステップS6に進む。
ステップS6において、レプリケーションデータ管理部14は、ステップS5において保持していると判定した複製データを、原本データに昇格させる処理を実行する。具体的には、レプリケーションデータ管理部14は、図6に示すデータ属性情報310に示させるレプリカフラグ313を「1」から「0」に変更する。
続いて、レプリケーションデータ管理部14は、複製データの配置先ノード決定処理を実行する(ステップS7)。このレプリケーションデータ管理部14による、複製データの配置先ノード決定処理により、ID空間上において、時計回り側に次のノードと、反時計回り側に次のノードとを含めた配置先ノードが決定される。なお、この複製データの配置先ノード決定処理の詳細は、後記する。
続いて、レプリケーションデータ管理部14は、ステップS7において、決定した複製データの配置先となるノード1に対して、レプリケーションを実行する(ステップS8)。そして、グラビテーションを抑止する処理を終了する。
≪配置先ノード決定処理≫
次に、図7のステップS7において実行される、複製データの配置先ノード決定処理について、図8および図9を参照して説明する。
図8は、本実施形態に係るノード1のレプリケーションデータ管理部14が実行する複製データの配置先ノード決定処理の流れを示すフローチャートである。図9は、複製データの配置先ノード決定処理の具体例を説明するための図である。なお、この処理は、各ノード1のID空間上に、原本データが新たに配置された場合にも、同様の処理を実行する。また、図9においては、冗長度が「4」であるとして説明する。
図8に示すように、まず、ノード1のレプリケーションデータ管理部14は、原本データが新たに追加されたか否かを判定する(ステップS10)。ここで、レプリケーションデータ管理部14は、データ300内のデータ属性情報310(図6)を監視し、原本昇格があった場合、つまり、レプリカフラグ313が「1」から「0」に変更されたことや、新たな、原本データがレコードとして追加されたことを検出することにより、原本データが新たに追加されたか否かを判定する。
次に、レプリケーションデータ管理部14は、データ属性情報310(図6)を参照し、追加されるデータ(原本データ)のデータ識別子(ハッシュ値)312を抽出する。そして、レプリケーションデータ管理部14は、そのデータがID空間上において属するノード1を振り分けIDテーブル200(図5)を参照して決定し、その「ノード番号」を算出し、「1」を減算する(ステップS11)。
ここで、ノード番号とは、各ノード1に割り振られる一意の番号であり、例えば、振り分けIDテーブル200(図5)の各ノード1のノード識別子201の昇順に、「0」〜「総ノード数−1」の値が設定される。図9に示す例では、各ノード1に、ノード番号が「0」〜「4」の値で設定されている。なお、総ノード数は5である。
図8においては、ステップS11に示すように、追加されるデータ(原本データ)のデータ識別子を[i]とし、データ[i]が属するノード番号「N」から「1」を減算した値を「start」として設定する。
例えば、図9では、原本データが属するノード1のノード番号が「0」であり、start=0−1=−1となる例を示している。
続いて、ステップS12において、冗長度を示す変数として「j」を導入し、初期値としてj=0とする。そして、j<冗長度(ここでは「4」)の条件を満たすようにして、ステップS16までの処理を繰り返す。つまり、以下に示すように、j=0,1,2,3として以下の処理を実行する。
〔j=0〕の場合
ステップS13において、レプリケーションデータ管理部14は、次の式(1)を計算する。
dst=start + j ・・・式(1)
ここでは、start=−1であり、j=0であるので、式(1)は、
dst=−1+0=−1
となる。
次に、ステップS14において、レプリケーションデータ管理部14は、「j」が「1」であるか否かを判定する。そして、レプリケーションデータ管理部14は、「j」が「1」であれば、ステップS12に戻る。一方、「j」が「1」でなければ、次のステップS15へ進む。
ここでは、レプリケーションデータ管理部14は、j=0であるので、「j」が「1」でなく(ステップS14→No)、ステップS15に進む。
続いて、ステップS15において、レプリケーションデータ管理部14は、次の式(2)を計算する。
dst mod 総ノード数 ・・・式(2)
そして、式(2)の計算結果で示されるノード番号のノード1を、複製データの配置先として決定する。
ここでは、図9に示すようにj=0の場合に、「−1 mod 5 = 4」となり、ノード番号「4」のノード1を、複製データの配置先として決定する。そして、ステップS16において、j=0の処理を終了し、ステップS12に戻る。
〔j=1〕の場合
ステップS12において、レプリケーションデータ管理部14は、「j」に1を加え、j=1とする。
そして、ステップS13において、レプリケーションデータ管理部14は、式(1)を計算する。
ここでは、start=−1であり、j=1であるので、式(1)は、
dst=−1+1=0
となる。
次に、ステップS14において、レプリケーションデータ管理部14は、「j」が「1」であるか否かを判定する。
ここでは、レプリケーションデータ管理部14は、j=1であるので(ステップS14→Yes)、ステップS16に進み、j=1の処理を終了し、ステップS12に戻る。
つまり、このj=1であることの条件により、原本データが格納されるノード1(図9においては、ノード番号「0」のノード1)には、複製データを配置しないこととなる。
〔j=2〕の場合
ステップS12において、レプリケーションデータ管理部14は、「j」に1を加え、j=2とする。
そして、ステップS13において、レプリケーションデータ管理部14は、式(1)を計算する。
ここでは、start=−1であり、j=2であるので、式(1)は、
dst=−1+2=1
となる。
次に、ステップS14において、レプリケーションデータ管理部14は、「j」が「1」であるか否かを判定する。
ここでは、レプリケーションデータ管理部14は、j=2であるので(ステップS14→No)、次のステップS15に進む。
続いて、ステップS15において、レプリケーションデータ管理部14は、式(2)を計算する。
ここでは、図9に示すようにj=2の場合に、「1 mod 5 = 1」となり、ノード番号「1」のノード1を、複製データの配置先として決定する。そして、ステップS16において、j=2の処理を終了し、ステップS12に戻る。
〔j=3〕の場合
ステップS12において、レプリケーションデータ管理部14は、「j」に1を加え、j=3とする。
そして、ステップS13において、レプリケーションデータ管理部14は、式(1)を計算する。
ここでは、start=−1であり、j=3であるので、式(1)は、
dst=−1+3=2
となる。
次に、ステップS14において、レプリケーションデータ管理部14は、「j」が「1」であるか否かを判定する。
ここでは、レプリケーションデータ管理部14は、j=3であるので(ステップS14→No)、次のステップS15に進む。
続いて、ステップS15において、レプリケーションデータ管理部14は、式(2)を計算する。
ここでは、図9に示すようにj=3の場合に、「2 mod 5 = 2」となり、ノード番号「2」のノード1を、複製データの配置先として決定する。
そして、j<冗長度(ここでは「4」)の条件の処理が終了したため(ステップS16)、レプリケーションデータ管理部14は、配置先ノード決定処理を終了する。この処理により、図9においては、原本データを保持するノード番号「0」のノード1が、ノード番号「4」「1」「2」のノード1を、複製データの配置先ノードとして決定する。
このようにすることにより、レプリケーションデータ管理部14は、冗長度が「3」以上の場合、新たな原本データを保持するノード1において、ID空間上で時計回り側に次のノードと、反時計回り側に次のノードとを、必ず複製データを送信するノード1として含めた上で配置先ノードを決定することができる。
以上説明したように、本実施形態に係るノード1およびグラビテーション抑止方法によれば、分散処理システム1000を構成するノード1の減設時において、グラビテーション(原本移管)の発生を抑止し、システムの冗長度の復旧までの時間を短縮することができる。また、冗長度回復の際に、グラビテーション(原本移管)が発生しないため、データ転送のトラフィックの増加や、CPU使用率の増加を防ぐことができる。
1 ノード
2 クライアント
3 ロードバランサ
10 制御部
11 ノード識別子管理部
12 振り分け部
13 信号処理部
14 レプリケーションデータ管理部
20 入出力部
30 記憶部
100 ノード識別子管理テーブル
200 振り分けIDテーブル(振り分けID情報)
300 データ
310 データ属性情報
1000 分散処理システム

Claims (3)

  1. クラスタを構成する複数のノードそれぞれに、コンシステント・ハッシュ法によりデータを振り分けて処理させる分散処理システムの前記ノードであって、
    ID空間上で時計回りに配置される各ノードの担当領域を示す振り分けID情報を記憶する記憶部と、
    ノード減設の情報を受信すると、前記ID空間上で減設されたノードの反時計回りに最初に位置するノードのID空間上の位置を、時計回りに所定のID分移動させて前記振り分けID情報を更新し、前記振り分けID情報の更新情報を前記複数のノードに送信するノード識別子管理部と、
    前記ID空間上において自身の前記担当領域に位置する原本データを格納するノードから、前記ID空間上で時計回りに最初に位置するノードおよび反時計回りに最初に位置するノードを、前記原本データの複製データを配置するノードに決定し、前記原本データの複製データを前記決定したノードに記憶させるレプリケーションデータ管理部と、を備え
    前記ノード減設に伴う前記振り分けID情報の更新情報を受信した場合に、前記レプリケーションデータ管理部は、受信した更新情報の前記振り分けID情報で示される自身のノードの前記ID空間上の担当領域において前記複製データとして記憶しているデータを前記原本データに昇格させること
    特徴とするノード。
  2. 前記記憶部には、保持するデータが、前記ID空間上において自身の前記担当領域に位置する原本データであるか、原本データの複製である複製データであるか、を識別するフラグであるレプリカフラグの情報を含むデータ属性情報が、さらに記憶されており、
    前記レプリケーションデータ管理部は、前記ノード減設に伴う前記振り分けID情報の更新情報を受信した場合に、前記原本データに昇格させる複製データを、前記レプリカフラグを参照することにより検索し、当該検索により得られた複製データのレプリカフラグを原本データを示すフラグに変更すること
    を特徴とする請求項1に記載のノード。
  3. クラスタを構成する複数のノードそれぞれに、コンシステント・ハッシュ法によりデータを振り分けて処理させる分散処理システムの前記ノードのグラビテーション抑止方法であって、
    前記ノードは、
    ID空間上で時計回りに配置される各ノードの担当領域を示す振り分けID情報を記憶部に記憶しており、
    ノード減設の情報を受信すると、前記ID空間上で減設されたノードの反時計回りに最初に位置するノードのID空間上の位置を、時計回りに所定のID分移動させて前記振り分けID情報を更新し、前記振り分けID情報の更新情報を前記複数のノードに送信するステップと、
    前記ID空間上において自身の前記担当領域に位置する原本データを格納するノードから、前記ID空間上で時計回りに最初に位置するノードおよび反時計回りに最初に位置するノードを、前記原本データの複製データを配置するノードに決定し、前記原本データの複製データを前記決定したノードに記憶させるステップと、を実行し、
    前記ノード減設に伴う前記振り分けID情報の更新情報を受信した場合に、受信した更新情報の前記振り分けID情報で示される自身のノードの前記ID空間上の担当領域において前記複製データとして記憶しているデータを前記原本データに昇格させること
    特徴とするグラビテーション抑止方法。
JP2015221115A 2015-11-11 2015-11-11 ノードおよびグラビテーション抑止方法 Active JP6506156B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015221115A JP6506156B2 (ja) 2015-11-11 2015-11-11 ノードおよびグラビテーション抑止方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015221115A JP6506156B2 (ja) 2015-11-11 2015-11-11 ノードおよびグラビテーション抑止方法

Publications (2)

Publication Number Publication Date
JP2017091248A JP2017091248A (ja) 2017-05-25
JP6506156B2 true JP6506156B2 (ja) 2019-04-24

Family

ID=58771563

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015221115A Active JP6506156B2 (ja) 2015-11-11 2015-11-11 ノードおよびグラビテーション抑止方法

Country Status (1)

Country Link
JP (1) JP6506156B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012174020A (ja) * 2011-02-22 2012-09-10 Kddi Corp 分散データベースの制御方法
WO2013153646A1 (ja) * 2012-04-12 2013-10-17 株式会社日立製作所 計算機システム、データ配置管理方法及びプログラム

Also Published As

Publication number Publication date
JP2017091248A (ja) 2017-05-25

Similar Documents

Publication Publication Date Title
JP5902716B2 (ja) 大規模記憶システム
JP5693560B2 (ja) データ複製システムにおけるデータの再分配
US10908834B2 (en) Load balancing for scalable storage system
CN111756841A (zh) 基于微服务集群的业务实现方法、装置、设备及存储介质
JP5969315B2 (ja) データ移行処理システムおよびデータ移行処理方法
JP6582445B2 (ja) シンクライアントシステム、接続管理装置、仮想マシン稼働装置、方法、および、プログラム
KR20130137897A (ko) 비대칭형 클러스터 파일 시스템의 데이터 관리 방법
US11431798B2 (en) Data storage system
CN113010496A (zh) 一种数据迁移方法、装置、设备和存储介质
JP6059558B2 (ja) 負荷分散判定システム
CN109597903A (zh) 图像文件处理装置和方法、文件存储系统及存储介质
JP2013182575A (ja) サーバおよびプログラム
JP6506156B2 (ja) ノードおよびグラビテーション抑止方法
US20240176762A1 (en) Geographically dispersed hybrid cloud cluster
JP5918802B2 (ja) ノードおよびプログラム
JP5711771B2 (ja) ノード離脱処理システム
JP5956364B2 (ja) クラスタシステム
JP5745445B2 (ja) 管理装置およびプログラム
JP5723330B2 (ja) 分散処理システムおよび分散処理方法
JP6714547B2 (ja) 負荷分散装置、負荷分散方法、および、負荷分散プログラム
JP5658621B2 (ja) 信号振分複製先決定システム、信号振分複製先決定方法およびプログラム
JP2013182399A (ja) 負荷分散プログラムおよび負荷分散装置
JP6473425B2 (ja) ノードおよびデータ配置方法
JP5711772B2 (ja) クラスタシステム
JP6127005B2 (ja) クラスタシステムのサーバ装置およびプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180911

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181025

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: 20190326

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190328

R150 Certificate of patent or registration of utility model

Ref document number: 6506156

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150