JP6059558B2 - 負荷分散判定システム - Google Patents

負荷分散判定システム Download PDF

Info

Publication number
JP6059558B2
JP6059558B2 JP2013035548A JP2013035548A JP6059558B2 JP 6059558 B2 JP6059558 B2 JP 6059558B2 JP 2013035548 A JP2013035548 A JP 2013035548A JP 2013035548 A JP2013035548 A JP 2013035548A JP 6059558 B2 JP6059558 B2 JP 6059558B2
Authority
JP
Japan
Prior art keywords
node
data
nodes
virtual
load 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.)
Expired - Fee Related
Application number
JP2013035548A
Other languages
English (en)
Other versions
JP2014164554A (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 JP2013035548A priority Critical patent/JP6059558B2/ja
Publication of JP2014164554A publication Critical patent/JP2014164554A/ja
Application granted granted Critical
Publication of JP6059558B2 publication Critical patent/JP6059558B2/ja
Expired - Fee Related 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(Internet Protocol)アドレスをハッシュ関数にかけた値(hash(IPアドレス))が挙げられる。
クラスタ構成の分散処理システムでは、各ノードの処理性能が等しい場合には、各ノードが担当するデータ量を等しくする、すなわち、コンシステントハッシュ法のID空間における、ノード間の距離(以下、「ノード担当領域」と称する。)を等しくすることが望ましい。この点を解決するため、各ノードに仮想的に複数のIDを持たせる手法が用いられている(非特許文献1参照)。各ノードが複数の仮想IDを持つことで、仮想ID毎の担当領域は異なっていても、大数の法則に従いノード担当領域は平均化される。なお、仮想IDを有して構成されるノードを「仮想ノード」と称し、仮想ノードが属するノードを「物理ノード」と称することがある。
多数のデータの管理をクラスタ構成の分散処理システムで実行する場合、あるノードに障害が発生した場合でも他のノードで処理が継続できるように、データの複製を保持することでデータの冗長化を実現している。コンシステントハッシュ法によるデータ管理手法を用いた分散処理システムにおいても、データの冗長化が必要であり、図5に示すような複製データの配置方式をとるものがある。
図5に示すように、コンシステントハッシュ法では、ノード(ノード「1」〜「4」)とデータ(データA〜D。黒丸(●)で表示)の双方にIDを割り当て、データのIDからID空間を時計回りに辿り最初に出合ったノードをそのデータの担当として決定する。そして、担当するノードのさらに右隣(時計回りに次)のノードに複製データを担当させる。
例えば、図5において、データAについては、ID空間上を時計回りに辿り最初に出合ったノード「1」が担当となり、その複製データについては、ID空間上でノード「1」の右隣にあたるノード「2」に担当させることとなる。このように原本データおよび複製データを担当するノードを決定することで、ノードが離脱した場合でも複製データを保持しているノードが新しくデータを担当するノードとなることにより処理を継続できるという利点がある。なお、複製データを複数個とる場合には、複製データを担当するノードのさらに右隣のノードに複製データを担当させるようにする。また、原本データを格納し管理するノードを、以下、「所有者ノード」と称することがあり、複製データを格納し管理するノードを、以下、「複製ノード」または「バディ」と称することがある。
なお、分散処理システムを構成するノードが複数の仮想IDを有して仮想IDそれぞれに対応する仮想ノードを構成し、前記仮想ノードをID空間に配置する場合において、右隣の仮想ノードが自身と同じ物理ノードに属しているときには、その仮想ノードをスキップしてさらに右隣の仮想ノードに複製データを担当させる。また、図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年2月5日検索],インターネット<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年2月5日検索]、インターネット<URL:http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf>
コンシステントハッシュ法によるデータ管理手法は、クラスタを構成するノードの追加や離脱に伴うデータの移行が全データに対する一部のデータに限られるため、クラスタ構成の動的な変更(ノードの追加および離脱)が頻繁に起こるシステムに対して有効である。この特性を活かし、トラヒック変化や管理するデータ量の変化に対して、ノードの追加や離脱を柔軟に行いリソースの利用効率を上げることが可能である。
しかし、ノードの追加および離脱の回数またはタイミングによっては、各ノードが担当するID空間上のノード担当領域に差が生じてしまい、負荷分散性が低下する場合がある。特に、ノードが離脱するときに関しては、ID空間において、離脱するノードの右隣のノードがデータを引き継ぐので、ID空間に配置される各ノードについて、ノード同士の隣接関係が偏っている場合には、ノードの離脱に起因する影響が残りのノード間で偏ってしまい、負荷分散性が低下する。具体的には、引き継がれるデータの多くが特定のノードに移行すること、およびノード離脱後に特定のノードが大きなノード担当領域を有すること、などがある。
図6(a)を参照すると、4つのノード「1」、ノード「2」、ノード「3」、ノード「4」がそれぞれ、4つの仮想ノードを有しており、計16個の仮想ノードがID空間に配置されている。つまり、ノード「1」は、仮想ノード1−1〜1−4を有しており、ノード「2」は、仮想ノード2−1〜2−4を有しており、ノード「3」は、仮想ノード3−1〜3−4を有しており、ノード「4」は、仮想ノード4−1〜4−4を有している。
ここで、ノード「4」が離脱したとする(図6(b)参照)。すると、仮想ノード4−1が担当していたデータは、仮想ノード1−2が引き継ぐ。仮想ノード4−2が担当していたデータは、仮想ノード1−3が引き継ぐ。仮想ノード4−3が担当していたデータは、仮想ノード3−3が引き継ぐ。仮想ノード4−4が担当していたデータは、仮想ノード1−1が引き継ぐ。仮想ノード単位でいえば、データの引き継ぎ先が分散しているといえるが、物理ノード単位でいえば、データの引き継ぎ先の多くはノード「1」になっており、引き継ぐデータのデータ量に応じた負荷が、残りのノード「1」〜「3」間で偏る。また、ノード離脱後のID空間において、ノード1のデータの担当領域が相対的に大きくなり、残りのノード「1」〜「3」の間で負荷の偏りが生じる。
クラスタを構成するノードの数が多く、前記ノードが十分な数の仮想ノードを有していれば、ノード間の負荷の偏りを小さくできる。しかし、複数のノードが同時に離脱すること、さまざまなノード追加用のアルゴリズムが存在すること、などを考慮すると、あらゆるタイミングでノード間の負荷の偏りを小さくすることには限界がある。結果的に、負荷分散性は低下し、リソースの利用効率の低下やノードの突発的な離脱に対する信頼性の低下、などといった不都合な事態を招く場合がある。そのような事態に至った場合には、一般的には、サービス運用者等のオペレータがノード間の負荷の偏りを解消するために新たなノードを追加するなどの対策がとられる。しかしながら、そのような事態に陥る前にノード間の負荷の偏りを検出することで、事前に対策をとれることが望ましい。
このような事情に鑑みて、本発明は、負荷分散性の低下を招くノード間の負荷の偏りを事前に検出することを目的とする。
前記した課題を解決するため、請求項1に記載の発明は、クラスタを構成し、制御部お
よび記憶部を備える複数のノードと、クライアントからのメッセージを参照することで抽
出できるデータ識別子に基づいて、前記データ識別子で識別されるデータを記憶する前記
ノードに前記メッセージを振り分ける振り分け装置と、を備える負荷分散判定システムで
あって、前記ノードは、複数の仮想的なノード識別子を有することで、前記ノード識別子
で識別される複数の仮想ノードを構成し、前記記憶部は、前記データと、前記ノード識別
子を、前記クラスタを構成するノードごとに記憶するノード識別子管理テーブルと、を記
憶しており、前記制御部は、前記ノード識別子管理テーブルが記憶する前記ノード識別子
に基づいて、前記クラスタを構成する前記複数のノードの各々が構成する前記仮想ノード
が担当するノード担当領域のサイズを求め、加算することで、前記クラスタを構成する前
記複数のノードのノード担当領域のサイズを算出することと、前記算出した前記複数のノ
ードのノード担当領域のサイズの加算平均を分母とし、前記複数のノードのノード担当領域のサイズの標準偏差を分子とする、前記複数のノード間の第1の変動係数を算出す
ることと、前記算出した前記第1の変動係数が第1の所定値を超えた場合、前記負荷分散
判定システムの負荷分散性が低下していることを示す警告表示を行うことと、を実行する
ことを特徴とする。
請求項1の発明によれば、負荷分散判定システムの負荷分散性が低下をもたらす負荷の偏りとして、ノードの追加も離脱もない、つまりノード識別子管理テーブルの更新が無い通常時の負荷の偏りを求めることができる。
請求項2に記載の発明は、請求項1に記載の発明において、前記ノードが、前記データを原本データとして担当する所有者ノードおよび前記原本データの複製データを担当するバディとして機能し、前記ノード識別子管理テーブルによって、前記データに対して、前記所有者ノードおよび前記バディを特定するように管理しており、前記制御部は、前記ノード識別子管理テーブルが記憶する前記ノード識別子に基づいて、前記所有者ノードの前記ノード担当領域のサイズのうち、前記所有者ノードの前記バディが担当する前記複製データに対応する前記原本データを前記所有者ノードが担当する領域である部分担当領域のサイズを、前記所有者ノードごとに算出することと、前記算出した前記部分担当領域のサイズを用いて、前記複数のノード間の第2の変動係数を、前記所有者ノードとなる前記ノードごとに算出することと、前記算出した前記第2の変動係数が第2の所定値を超えた前記ノードが少なくとも1つ存在する場合、前記負荷分散判定システムの負荷分散性が低下していることを示す警告表示を行うことと、を実行することを特徴とする。
請求項2の発明によれば、負荷分散判定システムの負荷分散性が低下をもたらす負荷の偏りとして、ノード離脱時に離脱後の残りのノード間に生じる負荷の偏りを、求めることができる。
本発明によれば、負荷分散性の低下を招くノード間の負荷の偏りを事前に検出することができる。
負荷分散判定システムを含む分散処理システムの全体構成を示す図である。 ノードの構成例を示す機能ブロック図である。 ノード識別子管理テーブルのデータ構成例を示す図である。 ノードにおける処理の全体の流れを示すフローチャートである。 コンシステントハッシュ法によるデータ管理手法を説明するための図である。 (a)ノード「4」の離脱前のID空間の概念図、(b)ノード「4」の離脱後のID空間の概念図である。
次に、本発明を実施するための形態(以下、「本実施形態」と称する。)における負荷分散判定システム100について説明する。
<分散処理システムの全体構成>
まず、本実施形態に係る負荷分散判定システム100を含む分散処理システム1000の全体構成について説明する。
図1を参照すると、この分散処理システム1000は、各クライアント2からのメッセージを受け付けるロードバランサ3と、少なくもと1つの振り分け装置4と、クラスタを構成する複数のノード1とを含んで構成される。本実施形態においては、少なくもと1つの振り分け装置4と複数のノード1とを含む構成を、負荷分散判定システム100として説明する。
ロードバランサ3は、クライアント2からのメッセージを単純なラウンドロビン法等により各振り分け装置4に振り分ける。また、ロードバランサ3は、各振り分け装置4から受信した情報をクライアント2に送信する。
このロードバランサ3は、情報の入出力を行う入出力部、制御部、記憶部を備える(図示省略)。前記記憶部には、各振り分け装置4のIPアドレスや、各クライアント2のIPアドレス等のアドレス情報が記憶される。前記制御部は、前記記憶部に記憶された振り分け装置4のアドレス情報(IPアドレス等)を管理でき、管理下の振り分け装置4にクライアント2からのメッセージを振り分ける。
振り分け装置4は、受信したメッセージを、例えば、コンシステントハッシュ法等に基づき、各ノード1に振り分ける。また、各ノード1から受信した情報を、ロードバランサ3に送信する。各ノード1は、メッセージ処理を行い、クライアント2にサービスを提供する。
この振り分け装置4は、情報の入出力を行う入出力部、制御部、記憶部を備える(図示省略)。前記記憶部は、ノード1が記憶する後記のノード識別子管理テーブル200と同等のテーブルを記憶しており、前記制御部は、前記テーブルを用いたノード1の管理を行うことができる。振り分け装置4によるノード1の管理の説明は省略する。
振り分け装置4は、ロードバランサ3等より受信したメッセージを参照し、そのメッセージの処理対象となるデータのkey(データkey:データ識別子)を抽出する。ここで振り分け装置4は、受信したメッセージを参照し、例えば、そのメッセージに付されたデータkeyをそのまま抽出してもよいし、メッセージ内の情報を利用してデータkeyを算出するようにしてもよい。振り分け装置4は、その抽出したデータkeyを用いて、振り分け装置4の記憶部が記憶するノード識別子管理テーブルを参照し、コンシステントハッシュ法に従い、そのメッセージを対象のノード1に振り分ける。
図1においては、振り分け装置4とノード1とを別装置として記載したが、同一サーバ上で別々の機能として動作させることも可能である。また、振り分け装置4も、図1に示すように、クラスタ構成をとることができる。さらに、ロードバランサ3が存在せず、クライアント2から任意の振り分け装置4にメッセージを送信することも可能である。
本実施形態では、分散処理システム1000のデータ管理手法として、ノード1の離脱時の影響が少ない、コンシステントハッシュ法によるデータ管理手法を例として説明する。ただし、コンシステントハッシュ法に限定されるものではない。また、本実施形態の負荷分散判定システム100は、ノード1の各々に複数の仮想IDを持たせる手法を採用し、ノード1の各々は、仮想IDが割り当てられた仮想ノードを構成する。また、本実施形態の負荷分散判定システム100は、図5に示した複製データの配置方式を採用し、コンシステントハッシュ法のID空間上で右隣(時計回りに次)のノード1に複製データを担当させることとする。しかしながら、本発明は、ノードに仮想IDを持たせない負荷分散判定システムにも、複製データの配置方式を採用しない負荷分散判定システムにも適用できる。また、複数個の複製データを複数個のノードに担当させる負荷分散判定システムにも本発明を適用できる。
図2に示すように、ノード1は、各振り分け装置4と通信可能に接続されると共に、クラスタを構成する自身以外の他のノード1とも通信可能に接続される。そして、ノード1は、クライアント2からのメッセージを受信し、サービスを提供する。
このノード1は、制御部10と、入出力部11と、記憶部12とを含んで構成される。
入出力部11は、振り分け装置4や、自身以外の他のノード1との間の情報の入出力を行う。また、この入出力部11は、通信回線を介して情報の送受信を行う通信インタフェースと、不図示のキーボード等の入力手段やモニタ等の出力手段等との間で入出力を行う入出力インタフェースとから構成される。
制御部10は、ノード1全体の制御を司り、ノード識別子管理部101、メッセージ処理部102、負荷分散情報計算部103、および負荷分散情報判定部104といった機能部を含んで構成される。なお、この制御部10が含む機能部は、例えば、記憶部12に格納されたプログラムをCPU(Central Processing Unit)が記憶領域として機能するRAM(Random Access Memory)に展開し実行することで実現される。なお、前記CPUを制御部10の具体例とすることができ、前記RAMを記憶部12の具体例とすることができる。
ノード識別子管理部101は、クラスタを構成する各ノード1に関する識別情報をノード識別子管理テーブル200として管理する。ノード識別子管理テーブル200は、記憶部12に記憶されている。ノード識別子管理部101は、クラスタへのノード1の追加やクラスタからのノード1の離脱が発生した際に、クラスタを構成するノード1に関するノード識別子管理テーブル200の情報を更新する。
図3に示すように、ノード識別子管理テーブル200は、クラスタを構成する各ノード1のノード識別子201、およびアドレス202を含んで構成される。
このノード識別子201は、コンシステントハッシュ法のID空間上でのノードIDに対応するが、コンシステントハッシュ法において仮想IDを用いる場合には、前記ノードIDは、仮想IDとすることができる。ノード識別子201は、仮想ID毎に割り当てられ、ノード識別子管理テーブル200に登録される。そして、このノード識別子管理テーブル200では、例えば、ノード識別子201の値を昇順に並べることにより、コンシステントハッシュ法のID空間における仮想IDを昇順に並べて管理することができる。つまり、ノード識別子管理テーブル200において、ノード識別子201の値を昇順に並べたとき、注目する仮想ノードを識別する仮想IDの1つ下の仮想IDで識別される仮想ノードが、ID空間上での右隣(時計回りに次)の仮想ノードとなる。
アドレス202は、例えば、各ノード1のIPアドレスであるが、MAC(Media Control Access)アドレスなどの他のアドレスでもよい。すでに述べたように、ノード1のIPアドレスにハッシュ関数を作用させてノードIDを生成できるが、例えば、仮想ID生成用のハッシュ関数をさせることによって、1つのノード1に対して、複数の仮想IDを生成できる。したがって、アドレス202に格納された値が同一となるノード識別子201は、1つのノード1に属することがわかる。
ノード識別子管理テーブル200によって、原本データを担当するノード1および複製データを担当するノード1がどれであるか、つまり、あるデータに関して、所有者ノードとバディとがどのノード1であるかを管理することができる。例えば、2番目のレコードによって特定される仮想ノードが属するノード1が所有者ノードとして担当するデータ(1番目のレコードのノード識別子201の値の次の値から2番目のレコードのノード識別子201の値までの値をとるデータkeyを有するデータ)に関して、2番目のレコードのアドレス202の値と、3番目のレコードのアドレス202の値とが異なれば、3番目のレコードによって特定される仮想ノードが属するノード1がバディとして前記データの複製データを担当する。もし、2番目のレコードのアドレス202の値と、3番目のレコードのアドレス202の値とが同じであれば、アドレス202の値が異なる4番目以降のレコードのうちもっとも上位のレコードによって特定される仮想ノードが属するノード1がバディとなる。このような管理により、同一ノード1が原本データと複製データを担当してしまうという不都合を回避する。
また、ノード識別子管理テーブル200によって、各ノード1のノード担当領域のサイズを管理できる。例えば、ノード識別子管理テーブル200の2番目のレコードによって特定される仮想ノードのノード担当領域のサイズは、2番目のレコードのノード識別子201の値と、1つ上のレコードとなる1番目のレコードのノード識別子201の値との差分(ID空間の円弧の長さに相当)に基づいて計算できる。2番目のレコードによって特定される仮想ノードが属するノード1(物理ノード)のノード担当領域のサイズは、2番目のレコードのアドレス202の値と同一の値が格納されるレコードによって特定される複数の仮想ノードのノード担当領域のサイズの合計となる。
なお、このノード識別子201は、ノード識別子管理部101が各ノード1に対して付与することもできるし、他のノード1や外部装置(例えば、ネットワーク管理装置等)が生成したノード識別子管理テーブル200を受信して格納することも可能である。ただし、負荷分散判定システム100を構成する各振り分け装置4および各ノード1は、他のノード1や外部装置との間で、ノード1の離脱や追加等の情報を送受信することにより、常に、同一内容のノード識別子管理テーブル200を備えるようにする。
また、ノード識別子管理部101は、他のノード1や外部装置から、追加されるノード1の識別情報(例えば、ノード識別子201)を含むノード追加要求を受信した場合に、ノード識別子管理テーブル200において、その追加されるノード1の情報(ノード識別子201およびアドレス202)を含むレコードを追加する。一方、ノード識別子管理部101は、他のノード1や外部装置から、離脱させるノード1の識別情報(例えば、ノード識別子201)を含むノード離脱要求を受信した場合に、ノード識別子管理テーブル200において、その離脱させるノード1の情報(ノード識別子201およびアドレス202)を含むレコードを削除する。
メッセージ処理部102は、振り分け装置4から振り分けられたメッセージを受信し、そのメッセージの処理を実行し、処理結果をクライアント2に返信することにより、サービスを提供する。同時に、メッセージ処理部102は、他のノード1、ここでは、ノード識別子201(図3参照)を昇順に並べたときの次のノード1(ID空間での右隣の異なる物理ノード)にデータの複製を行うことにより、データの冗長化を実現する。
また、メッセージ処理部102は、メッセージの処理に必要なデータをそのノード1自身が保持していなかった場合には、他のノード1に要求すること等により、そのデータを取得することが可能である。
負荷分散情報計算部103は、ノード識別子管理テーブル200を参照して、負荷分散情報を計算する。負荷分散情報とは、分散処理システム1000の負荷分散性を定量的に表す情報であり、具体的には、(1)分散処理システム1000内のノード1間のノード担当領域のサイズの偏り、(2)分散処理システム1000内のノード1間のバディ担当領域のサイズの偏りがある。「バディ担当領域」とは、所有者ノードのノード担当領域のうち、その所有者ノードのバディが担当する複製データに対応する原本データを所有者ノードが担当する領域であり、所有者ノードごとに計算される。本実施形態のように、所有者ノードおよびバディが複数の仮想ノードを構成していれば、所有者ノードを構成する複数の仮想ノードの各々が担当する原本データに対応する複製データを担当する仮想ノードが属するバディは、一般的に複数存在する。よって、ある所有者ノードのバディ担当領域は、その所有者ノードのバディごとに区分けされる。
(1)分散処理システム1000内のノード1間のノード担当領域のサイズの偏りは、ノード1の追加も離脱もない、つまりノード識別子管理テーブル200の更新が無い通常時の負荷の偏りを示す指標となる。また、(2)分散処理システム1000内のノード1間のバディ担当領域の偏りは、ノード離脱時に離脱後の残りのノード1間に生じる負荷の偏りを示す指標となる。なお、本実施形態では、これらの負荷の偏りを計算するために統計学の変動係数を計算し、詳細は後記するが、これに限定されない。
(1)分散処理システム1000内のノード1間のノード担当領域のサイズの偏りを表す変動係数C.V.は、以下の式1によって計算する。
Figure 0006059558
・・・式1
ここで、nは、分散処理システム1000内のノード1の個数である。i=1,2,・・・,nである。
は、i番目のノード1(物理ノード)のノード担当領域であり、i番目のノード1を構成する仮想ノードの各々のノード担当領域のサイズの合計である。なお、式1の右辺の分母は、分散処理システム1000内のノード1のノード担当領域のサイズの加算平均である。式1の右辺の分子は、分散処理システム1000内のノード1のノード担当領域のサイズの標準偏差である。
(2)所有者ノードであるi番目のノード1に関して、分散処理システム1000内のノード1間のバディ担当領域の偏りを表す変動係数C.V.は、以下の式2によって計算する。
Figure 0006059558
・・・式2
ここで、nは、分散処理システム1000内のノード1の個数である。i=1,2,・・・,nであり、j=1,2,・・・,nである。
ここで、Rijは、所有者ノードであるi番目のノード1のバディ担当領域のうち、i番目のノード1のj番目のバディが担当する複製データに対応する原本データをi番目のノード1が担当する領域(部分担当領域)のサイズである。なお、同一のノード1が原本データと複製データを担当することはないので、i=jのとき、Rij=0である。また、式2の右辺の分母は、分散処理システム1000内のノード1のバディ担当領域の部分担当領域のサイズの加算平均である。式2の右辺の分子は、分散処理システム1000内のノード1のバディ担当領域の部分担当領域のサイズの標準偏差である。
具体的に、分散処理システム1000内に、図6(a)に示すように、4つのノード「1」〜「4」が存在する場合を考える。ノード「1」、ノード「2」、ノード「3」、ノード「4」はそれぞれ1番目のノード1、2番目のノード1、3番目のノード1、4番目のノード1とする。
ノード「2」を所有者ノードとした場合、仮想ノード2−1〜2−4が所有者ノードとなる。図6(a)によれば、仮想ノード2−1のノード担当領域は、仮想ノード1−1から仮想ノード2−1までの円弧である。よって、仮想ノード2−1の右隣の仮想ノード3−1が仮想ノード2−1のバディとなり、ノード「3」がノード「2」のバディとなる。
また、仮想ノード2−2のノード担当領域は、仮想ノード1−2から仮想ノード2−2までの円弧である。よって、仮想ノード2−2の右隣の仮想ノード3−2が仮想ノード2−2のバディとなり、ノード「3」がノード「2」のバディとなる。
また、仮想ノード2−3のノード担当領域は、仮想ノード3−3から仮想ノード2−3までの円弧である。よって、仮想ノード2−3の右隣の仮想ノード1−4が仮想ノード2−3のバディとなり、ノード「1」がノード「2」のバディとなる。
また、仮想ノード2−4のノード担当領域は、仮想ノード1−4から仮想ノード2−4までの円弧である。よって、仮想ノード2−4の右隣の仮想ノード3−4が仮想ノード2−4のバディとなり、ノード「3」がノード「2」のバディとなる。
したがって、バディとなるノード「1」に対するノード「2」のバディ担当領域のサイズR21は、
21 = (仮想ノード3−3から仮想ノード2−3までの円弧に相当するサイズ)
となる。
また、バディとなるノード「3」に対するノード「2」のバディ担当領域のサイズR23は、
23 = (仮想ノード1−1から仮想ノード2−1までの円弧に相当するサイズ)
+(仮想ノード1−2から仮想ノード2−2までの円弧に相当するサイズ)
+(仮想ノード1−4から仮想ノード2−4までの円弧に相当するサイズ)
となる。
なお、同一のノード1が原本データと複製データを担当することはないので、R22=0である。また、図6(a)によれば、仮想ノード4−1〜4−4のいずれもが、仮想ノード2−1〜2−4の右隣に配置されていないので、ノード「4」がノード「2」のバディとなることはない。つまり、R24=0である。
負荷分散情報判定部104は、負荷分散情報計算部103が計算したノード担当領域の偏りが所定値を超えているか否かを判定するとともに、負荷分散情報計算部103が計算したバディ担当領域の偏りが所定値を超えているか否かを判定する。少なくとも一方の所定値を超えていれば、分散処理システム1000の負荷分散性が許容できなくなったとみなし、オペレータに対して負荷分散性の改善を求める警告表示を行う。
図2に戻り、記憶部12は、ハードディスクやフラッシュメモリ等の記憶装置からなり、サービスの対象となる原本データや複製データを含むデータ300や、前記したノード識別子管理テーブル200(図3参照)等を記憶する。
なお、データ300の各データは、そのデータのデータkeyを含むことができる。
<処理の流れ>
次に、図4を参照して、本実施形態に係る分散処理システム1000の負荷分散性を判定する処理の流れについて説明する。ノード1の制御部10がこの処理を実行する。この処理は、例えば、ノード1のノード担当領域を変更するときに実行され、より具体的には、分散処理システム1000にノード1を追加するとき、または分散処理システム1000からノード1を離脱させるときに実行される。この処理を開始すると、ステップS401に進む。
ステップS401において、制御部10は、記憶部12からノード識別子管理テーブル200を読み出す。ステップS401の後、ステップS402に進む。
ステップS402において、制御部10は、負荷分散情報計算部103によって、前記式1を用いて、ノード担当領域に関する第1の変動係数C.V.を算出する。ステップS402の後、ステップS403に進む。
ステップS403において、制御部10は、負荷分散情報計算部103によって、前記式2を用いて、バディ担当領域に関する第2の変動係数C.V.を、ノード1ごとに算出する。ステップS403の後、ステップS404に進む。
ステップS404において、制御部10は、負荷分散情報判定部104によって、第1の変動係数C.V.が、第1の所定値TH1を超えているか否かを判定する。超えている場合(ステップS404でYes)、負荷分散性を許容できないと判断して、ステップS406に進む。超えていない場合(ステップS404でNo)、ステップS405に進む。
ステップS405において、制御部10は、負荷分散情報判定部104によって、第2の変動係数C.V.が、第2の所定値TH2を超えるノード1が少なくとも1つあるか否かを判定する。少なくとも1つある場合(ステップS405でYes)、負荷分散性を許容できないと判断して、ステップS406に進む。1つもない場合(ステップS404でNo)、負荷分散性を許容できると判断して、処理全体を終了する。
ステップS406において、制御部10は、例えば、入出力部11によって、分散処理システム1000の負荷分散性を許容できないことを示す警告表示を行い、処理全体を終了する。
ステップS404の判定により、通常時のノード1間の負荷の偏りを事前に定量的に評価できる。ステップS405の判定により、ノード離脱時のノード1間の負荷の偏りを事前に定量的に評価できる。ステップS405において、第2の変動係数C.V.が第2の所定値TH2を超えるノード1が少なくとも1つあるか否かという判定をするのは、ノード1の故障する場合を想定すると、離脱するノード1を特定できないことがあるため、そのような場合も警告表示の対象とするためである。
図4の処理で、負荷分散性を許容できないと判定された場合には、ノード1を追加する離脱させるなどの対処を行うことで、負荷の偏りを解消することができる。この際、ノード1の追加または離脱は、ランダムに行ってもよいし、ノード1各々のノード担当領域を考慮して行ってもよい。複数のノード1間のバディ担当領域の偏りに対して前記対処を行えば、ノード離脱後に、複数のノード1間のノード担当領域のサイズの偏りが低減されるだけでなく、ノード担当領域の偏りも併せて低減することができる。
本実施形態によれば、第1の変動係数C.V.および第2の変動係数C.V.を求めることで、負荷分散性の低下を招くノード間の負荷の偏りを事前に検出することができる。
<その他>
図4に示す処理において、第1の変動係数C.V.が、第1の所定値TH1を超えており、かつ、第2の変動係数C.V.が、第2の所定値TH2を超えるノード1が存在するときに、負荷分散性を許容できないという警告表示を行ってもよい。また、第1の変動係数C.V.のみ、第2の変動係数C.V.のみで負荷分散性を許容できるか否かを判定してもよい。
また、第1の所定値TH1および第2の所定値TH2は、ノード1の性能によって、適宜変更できる。
また、ステップS405において、第2の変動係数C.V.が、第2の所定値TH2を超えるノード1が2以上存在するときに、警告表示を行ってもよい。
また、図4に示す処理は、振り分け装置4が行うことができる。また、負荷分散判定システム100と通信可能に接続している外部装置が行うことができる。
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
また、本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
1 ノード
2 クライアント
3 ロードバランサ
4 振り分け装置
10 制御部
11 入出力部
12 記憶部
100 負荷分散判定システム
101 ノード識別子管理部
102 メッセージ処理部
103 負荷分散情報計算部
104 負荷分散情報判定部
200 ノード識別子管理テーブル
300 データ
1000 分散処理システム

Claims (2)

  1. クラスタを構成し、制御部および記憶部を備える複数のノードと、クライアントからの
    メッセージを参照することで抽出できるデータ識別子に基づいて、前記データ識別子で識
    別されるデータを記憶する前記ノードに前記メッセージを振り分ける振り分け装置と、を
    備える負荷分散判定システムであって、
    前記ノードは、複数の仮想的なノード識別子を有することで、前記ノード識別子で識別
    される複数の仮想ノードを構成し、
    前記記憶部は、
    前記データと、
    前記ノード識別子を、前記クラスタを構成するノードごとに記憶するノード識別子管理
    テーブルと、を記憶しており、
    前記制御部は、
    前記ノード識別子管理テーブルが記憶する前記ノード識別子に基づいて、前記クラスタ
    を構成する前記複数のノードの各々が構成する前記仮想ノードが担当するノード担当領域
    のサイズを求め、加算することで、前記クラスタを構成する前記複数のノードのノード担
    当領域のサイズを算出することと、
    前記算出した前記複数のノードのノード担当領域のサイズの加算平均を分母とし、前記複数のノードのノード担当領域のサイズの標準偏差を分子とする、前記複数のノード間の第1の変動係数を算出することと、
    前記算出した前記第1の変動係数が第1の所定値を超えた場合、前記負荷分散判定シス
    テムの負荷分散性が低下していることを示す警告表示を行うことと、を実行する
    ことを特徴とする負荷分散判定システム。
  2. 前記ノードが、前記データを原本データとして担当する所有者ノードおよび前記原本データの複製データを担当するバディとして機能し、前記ノード識別子管理テーブルによって、前記データに対して、前記所有者ノードおよび前記バディを特定するように管理しており、
    前記制御部は、
    前記ノード識別子管理テーブルが記憶する前記ノード識別子に基づいて、前記所有者ノードの前記ノード担当領域のサイズのうち、前記所有者ノードの前記バディが担当する前記複製データに対応する前記原本データを前記所有者ノードが担当する領域である部分担当領域のサイズを、前記所有者ノードごとに算出することと、
    前記算出した前記部分担当領域のサイズを用いて、前記複数のノード間の第2の変動係数を、前記所有者ノードとなる前記ノードごとに算出することと、
    前記算出した前記第2の変動係数が第2の所定値を超えた前記ノードが少なくとも1つ存在する場合、前記負荷分散判定システムの負荷分散性が低下していることを示す警告表示を行うことと、を実行する
    ことを特徴とする請求項1に記載の負荷分散判定システム。
JP2013035548A 2013-02-26 2013-02-26 負荷分散判定システム Expired - Fee Related JP6059558B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013035548A JP6059558B2 (ja) 2013-02-26 2013-02-26 負荷分散判定システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013035548A JP6059558B2 (ja) 2013-02-26 2013-02-26 負荷分散判定システム

Publications (2)

Publication Number Publication Date
JP2014164554A JP2014164554A (ja) 2014-09-08
JP6059558B2 true JP6059558B2 (ja) 2017-01-11

Family

ID=51615096

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013035548A Expired - Fee Related JP6059558B2 (ja) 2013-02-26 2013-02-26 負荷分散判定システム

Country Status (1)

Country Link
JP (1) JP6059558B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6325995B2 (ja) * 2015-02-20 2018-05-16 日本電信電話株式会社 分散システム、負荷分散方法及びプログラム
JP6383336B2 (ja) * 2015-08-10 2018-08-29 日本電信電話株式会社 サーバ管理装置およびサーバ管理方法
JP2017146848A (ja) * 2016-02-18 2017-08-24 日本電信電話株式会社 リバランス装置、リバランス方法、及びプログラム
JP6473425B2 (ja) * 2016-03-16 2019-02-20 日本電信電話株式会社 ノードおよびデータ配置方法
JP6825323B2 (ja) * 2016-11-14 2021-02-03 富士通株式会社 情報処理装置、情報処理システム、および状態情報収集プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010176626A (ja) * 2009-02-02 2010-08-12 Fujitsu Ltd 文書クラスタリングプログラム及び文書クラスタリング方法
US8972419B2 (en) * 2010-04-28 2015-03-03 JVC Kenwood Corporation Item selecting apparatus, item selecting method and item selecting program
CN102457429B (zh) * 2010-10-27 2014-08-20 中兴通讯股份有限公司 分布式哈希表网络的负载均衡实现方法及装置
JP5600573B2 (ja) * 2010-12-07 2014-10-01 日本放送協会 負荷分散装置及びプログラム

Also Published As

Publication number Publication date
JP2014164554A (ja) 2014-09-08

Similar Documents

Publication Publication Date Title
US10581957B2 (en) Multi-level data staging for low latency data access
AU2014212780B2 (en) Data stream splitting for low-latency data access
US9613104B2 (en) System and method for building a point-in-time snapshot of an eventually-consistent data store
US7783763B2 (en) Managing stateful data in a partitioned application server environment
CN102708165B (zh) 分布式文件***中的文件处理方法及装置
US9483482B2 (en) Partitioning file system namespace
US20160212206A1 (en) Deterministic database system and data transferring method thereof
JP6059558B2 (ja) 負荷分散判定システム
US9367261B2 (en) Computer system, data management method and data management program
JP5969315B2 (ja) データ移行処理システムおよびデータ移行処理方法
Trifa et al. A novel replication technique to attenuate churn effects
CN107276914B (zh) 基于cmdb的自助资源分配调度的方法
US20120303588A1 (en) Data de-duplication processing method for point-to-point transmission and system thereof
US9971543B2 (en) Methods and apparatus for storing electronic documents
EP2765517B1 (en) Data stream splitting for low-latency data access
JP5918802B2 (ja) ノードおよびプログラム
JP6259408B2 (ja) 分散処理システム
JP5723330B2 (ja) 分散処理システムおよび分散処理方法
JP5690296B2 (ja) 負荷分散プログラムおよび負荷分散装置
JP5711771B2 (ja) ノード離脱処理システム
JP6506156B2 (ja) ノードおよびグラビテーション抑止方法
JP5711772B2 (ja) クラスタシステム
JP6127005B2 (ja) クラスタシステムのサーバ装置およびプログラム
JP6714547B2 (ja) 負荷分散装置、負荷分散方法、および、負荷分散プログラム
Tech et al. A view on load balancing of NoSQL databases (Couchbase, Cassandra, Neo4j and Voldemort)

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140529

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151020

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160415

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160425

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20160527

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161209

R150 Certificate of patent or registration of utility model

Ref document number: 6059558

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees