JPWO2012042658A1 - 分散処理システム及び分散処理システムにおけるノードの配置方法 - Google Patents

分散処理システム及び分散処理システムにおけるノードの配置方法 Download PDF

Info

Publication number
JPWO2012042658A1
JPWO2012042658A1 JP2012536103A JP2012536103A JPWO2012042658A1 JP WO2012042658 A1 JPWO2012042658 A1 JP WO2012042658A1 JP 2012536103 A JP2012536103 A JP 2012536103A JP 2012536103 A JP2012536103 A JP 2012536103A JP WO2012042658 A1 JPWO2012042658 A1 JP WO2012042658A1
Authority
JP
Japan
Prior art keywords
node
computer
network
processing system
router
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.)
Granted
Application number
JP2012536103A
Other languages
English (en)
Other versions
JP5563090B2 (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2012042658A1 publication Critical patent/JPWO2012042658A1/ja
Application granted granted Critical
Publication of JP5563090B2 publication Critical patent/JP5563090B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus

Abstract

二次元以上の格子型ネットワーク上にConsistent Hashの仮想リングを生成し、前記生成された仮想リング上にハッシュ値が割り当てられた複数のノードが配置される分散処理システムであって、前記分散処理システムは、前記複数のノードを接続する格子型ネットワークを有し、前記複数のノードは少なくとも計算資源を有し、前記仮想リング上で隣接する位置に配置されるノードは、前記格子型ネットワーク内において、他のノードを経由しないで通信可能な位置に配置されることを特徴とする分散処理システム。

Description

本発明は、格子型ネットワークにおける分散処理システムに関し、特に、格子型ネットワークにおける分散データベースのConsistent Hashの実装方式に関する。
分散データベースの実装方式として、Consistent Hashが知られている(非特許文献1参照)。これは、以下の手順でデータを格納する。
1.ハッシュ値がとりうる値をリング状に繋げた仮想リングを想定する。
2.ネットワークで相互通信可能な計算機にハッシュ値を与え、仮想リング上に配置する。
3.各計算機は、自身の一つ手前の計算機のハッシュ値と、自身のハッシュ値との間のハッシュ値を持つキーに対するプライマリノードになる。
4.プライマリノードの一つ後ろと二つ後ろに位置する計算機が、バックアップノードになる。
5.プライマリノードとバックアップノードがデータを保持する。
例えば、図25に示すように、キー値「A」のハッシュ値が計算機N2と計算機N3のハッシュ値の間に存在する場合、計算機N3がプライマリノードになり、計算機N4、N5がバックアップノードになるため、これら計算機N3、N4、N5にキー値「A」を格納する。通常、データベースではキー値にバリュー値を関連づけて管理するので、バリュー値はキー値が格納された計算機に格納される。
従来、多くの並列データベースでは、中央サーバがデータ格納計算機を一元管理し、データを格納する際、クライアントはいったん中央サーバにデータを転送する構成を採用していた。このため、中央サーバが高負荷となりスケーラビリティ(台数効果)が出にくい、という課題があった。このConsistent Hash方式は、計算機の一覧と各計算機が保持するハッシュ値とをクライアントが保持しており、クライアントがキー値を格納する計算機を一意的に決定できるため、データを格納した計算機にクライアントから直接アクセスできる。このため、スケーラビリティ(台数効果)が高いデータベースとして利用されている。
さらに、このConsistent Hash方式は、計算機の追加/削除時のコピー処理が少ないという利点がある。図26に示すように、新たな計算機N6を追加した場合、キー値「A」のプライマリノードは計算機N6に、バックアップノードは計算機N3、N4になる。従って、計算機N6にデータをコピーし、計算機N5からデータを削除すれば構成の変更が完了する。このように計算機の追加があった場合に、部分的な更新によって構成を変更することができる。
前述したような分散システムを構築する場合、計算機間を接続するネットワークを構築する必要があるが、従来、図27に示すようなツリー型のネットワークがよく利用されている。図27はネットワークスイッチSW1〜SW4でツリー型ネットワークを構成し、これに計算機N1〜N9を接続した例である。ツリー型のネットワークでは、上位のネットワークスイッチに負荷が集中することや、最上位のネットワークスイッチが単一障害点となることが課題になる。これに対して、特許文献1、2に挙げたように計算機間を格子型に接続するネットワークトポロジーが提案されている。特許文献1ではノード間をクロスバスイッチで接続する構成を採用しており、特許文献2ではノード間を直接接続し、多次元トーラス構造にする構成を採用している。
特開平7−200508号公報 特開2008−165531号公報
Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web, David Karger et al.
ツリー型のネットワークにConsistent Hashを実装する場合、仮想リングの構成方法として、図27のパターン1、2に示す二つの構成方法が考えられる。図27にパターン1、2として示した数字は、仮想リング上のノードの順序を表している。パターン1は仮想リング上で隣接するノードをネットワーク的に近い位置に配置する構成方法である。この方法では、プライマリとバックアップ間でデータを複製する際のネットワーク負荷を軽減することができるが、データが複製されるノードを同一ネットワークスイッチ以下に配置するため、耐障害性が低くなる。
パターン2は仮想リング上で隣接するノードをネットワーク的に遠い位置に配置する構成方法である。この方法では耐障害性を高くすることができるが、プライマリとバックアップ間でデータを複製する際、上位スイッチのネットワーク負荷が高くなる。このようにツリー型ネットワークにConsistent Hashを実装する場合、ネットワーク負荷と耐障害性はトレードオフの関係となり、両立することができない。
一般論として、格子型ネットワークは、耐障害性とネットワーク負荷分散を両立できるが、複数方向に伸びるネットワークをバランスよく利用し、負荷分散を実現するにはアプリケーション側の工夫が必要となる。Consistent Hashを実装する場合も、適切な仮想リングの構成をとらなければ、特定のネットワークスイッチに負荷が集中してしまう。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、二次元以上の格子型ネットワーク上にConsistent Hashの仮想リングを生成し、前記生成された仮想リング上にハッシュ値が割り当てられた複数のノードが配置される分散処理システムであって、前記分散処理システムは、前記複数のノードを接続する格子型ネットワークを有し、前記複数のノードは少なくとも計算資源を有し、前記仮想リング上で隣接する位置に配置されるノードは、前記格子型ネットワーク内において、他のノードを経由しないで通信可能な位置に配置されることを特徴とする。
本発明の代表的な実施の形態によれば、格子型ネットワーク上にConsistent Hashを実装する際、ネットワーク負荷分散と耐障害性を両立することが可能となる。
本発明の実施形態の計算機システム(分散データベースシステム)の構成図である。 本発明の実施形態の計算機及びルータの構成図である。 本発明の実施形態の代表ノードを仮想リング上に配置する規則を説明する図である。 本発明の実施形態の分散データベースシステムへの非代表ノードの追加の例を説明する図である。 本発明の実施形態の分散データベースシステムへの非代表ノードの追加の例を説明する図である。 本発明の実施形態のルータにインストールされるソフトウェアの構成図である。 本発明の実施形態のマスタ計算機にインストールされるソフトウェアの構成図である。 本発明の実施形態のDB用計算機にインストールされるソフトウェアの構成図である。 本発明の実施形態の負荷通知メッセージの例の説明図である。 本発明の実施形態のルータ負荷管理テーブルを説明する図である。 本発明の実施形態のルータ負荷監視履歴テーブルを説明する図である。 本発明の実施形態のスイッチ負荷管理テーブルを説明する図である。 本発明の実施形態のスイッチ負荷監視履歴テーブルを説明する図である。 本発明の実施形態のルータ管理テーブルを説明する図である。 本発明の実施形態のノード管理テーブルを説明する図である。 本発明の実施形態のスイッチ設定テーブルを説明する図である。 本発明の実施形態のクライアント管理テーブルを説明する図である。 本発明の実施形態のルータ負荷更新する処理のフローチャートである。 本発明の実施形態の非代表ノード追加処理のフローチャートである。 本発明の実施形態の格子サイズ変更時の構成変更処理のフローチャートである。 本発明の実施形態の変形例1の計算機システム(分散データベースシステム)の構成図である。 本発明の実施形態の変形例2の計算機システム(分散データベースシステム)の構成図である。 本発明の実施形態の変形例3の計算機システム(分散データベースシステム)の構成図である。 本発明の実施形態の3次元格子における代表ノードの配置例を説明する図である。 本発明の実施形態の3次元格子における代表ノードの配置例を説明する図である。 本発明の実施形態の3次元格子における代表ノードの配置例を説明する図である。 本発明の実施形態の3次元格子における代表ノードの配置例を説明する図である。 本発明の実施形態の3次元格子における代表ノードの配置方法を説明する図である。 本発明の実施形態の3次元格子における代表ノードの配置方法を説明する図である。 本発明の実施形態の3次元格子における代表ノードの配置方法を説明する図である。 Consistent Hashの概念図である。 Consistent Hashにおけるノード追加の概念図である。 従来のツリー型のネットワークの構成図である。
まず本発明の実施の形態の概要について説明する。
本実施の形態では、次元数が二次元以上の格子型ネットワークにConsistent Hashの仮想リングを生成する際、仮想リング上で隣接するノードが格子型ネットワークで隣接するように配置する。
前記格子型ネットワークは、(次元数−1)個の座標が一致するノード間をネットワークスイッチで接続し、仮想リングを構成するノードを仮想リングに沿って一周するように、格子型ネットワークを最短経路でたどった場合、全てのネットワークスイッチを同じ回数だけ通過するように構成する。
また、本実施の形態では、プライマリノードとバックアップノードを仮想リング上で隣接する位置で、かつ、格子型ネットワークの異なる座標位置に配置する。
また、本実施の形態では、格子型ネットワークの各格子点にルータを配置し、仮想リングを構成する計算機を各ルータに接続する。
また、本本実施の形態では、各ネットワークセグメントが接続される格子点に配置したルータの接続方法に関して、格子型ネットワーク上の位置を示す座標要素の一つのみが一致しない(すなわち、(次元数−1)個の座標が一致する)ルータをトーラス結合する。
また、本実施の形態では、プライマリノードとバックアップノードとを仮想リング上で隣接する位置に配置し、クライアントが、プライマリノード及びバックアップノードへデータを書き込む場合、仮想リング上で中央に位置するノードにデータを送信し、クライアントからデータを受信したノードから他のノードへデータを転送することによって、分散データベースへデータを書き込む。
さらに、本実施の形態では、プライマリノードとバックアップノードとを仮想リング上で隣接する位置に配置し、クライアントが、プライマリノード及びバックアップノードへデータを書き込む場合、クライアントからネットワーク距離が近いノードへデータを送信し、クライアントからデータを受信したノードから他のノードへデータを転送することによって、分散データベースへデータを書き込む。
次に、本実施の形態について図面を参照して説明する。
図1は、本発明の実施形態の計算機システムの構成図である。
本実施の形態の計算機システム(分散データベースシステム)は、格子状に配置されたルータR1〜R16、各ルータを接続するネットワークスイッチSW−X1〜SW−X4、SW−Y1〜SW−Y4、分散データベースを構成するDB用計算機N1〜N16を備える。
各ルータは、X方向に伸びるネットワークスイッチSW−X1〜SW−X4、及びY方向に伸びるネットワークスイッチSW−Y1〜SW−Y4によって接続されている。DB用計算機N1〜N16は各ルータに接続されている。
従って、各ルータはX方向のスイッチSW−X1〜SW−X4が接続しているルータ間ネットワークセグメント、Y方向のスイッチSW−Y1〜SW−Y4が接続しているルータ間ネットワークセグメント、及び、DB用計算機N1〜N16が接続している計算機用ネットワークセグメント、の3種類のネットワークセグメントに接続する。なお、計算機用ネットワークセグメントには、複数の計算機が接続されてもよい。
この分散データベースシステムを利用するクライアント計算機C1〜Cnは、ネットワークスイッチSW−0を介して、ルータR00に接続されている。ルータR00は、さらにネットワークスイッチSW−X1〜SW−X4に接続しており、例えば、クライアント計算機C1が計算機N7にアクセスする場合、クライアント計算機C1は、ルータR00、ルータR7を経由して計算機N7にアクセスする。
ネットワークスイッチSW−0には、マスタ計算機M0が接続されている。マスタ計算機はネットワーク上のDB用計算機N1〜N16の座標、ネットワークアドレス、ハッシュ値の対応関係をノード管理テーブルT06(図13)として管理している。クライアント計算機C1〜Cnは、初回アクセス時及びシステムの構成変更時にマスタ計算機M0からノード管理テーブルT06を取得し、本テーブルに基づきアクセスするDB用計算機を決定する。ノード管理テーブルT06があれば、キー値からキー値を保存すべきDB用計算機を一意に決定することができるため、2回目以降のアクセス時は、クライアント計算機C1〜Cnとマスタ計算機とは通信する必要がない。
このような格子型ネットワークでは、ルータR1〜R16、ルータR00に適切なルーティングテーブルを設定する必要があるが、OSPF(Open Shortest Path First)等のルーティング・プロトコルを利用することによって、各ルータにルーティングテーブルを自動設定することができる。但し、各ルータにルータのアドレスとネットワークセグメントの情報を設定する必要はある。
図1に示す計算機システムでは、クライアント計算機C1〜Cn及びマスタ計算機M0はルータR00を介して格子型ネットワークと接続しているが、クライアント計算機C1〜Cn及びマスタ計算機M0は、格子型ネットワークを構成するルータR1〜R16の計算機用セグメントに接続されてもよい。また、DB用計算機N1〜N16がクライアント計算機の機能を兼ねてもよい。また、図1に示す計算機システムでは格子サイズが4×4となっているが、本発明はこのサイズに限定されず、他のサイズにも適用可能である。
前述したルータR1〜R16、R00及び計算機N1〜N16、C1〜Cnの内部構成は図2に示すように、一般的なアーキテクチャの計算機である。
計算機100は、CPU101、LANインターフェース102、メモリ103、入出力インターフェース104、ストレージインターフェース105が内部バスで相互に接続されている。LANインターフェース102はLANポート110を介して外部ネットワークに接続されている。入出力インターフェース104には、ディスプレイ108、キーボード107、マウス108等の入出力装置が接続されている。ストレージインターフェース105は磁気ディスクドライブ等のストレージ装置109に接続されている。
計算機の基本的な構成はこのような型になるが、ルータではLANポート110が複数(本実施例では3つ以上)設けられ、ストレージ装置109はフラッシュメモリ等、衝撃に強いものを利用する。また、ルータでは、ルーティング用の専用アクセラレータチップを内部バスに接続し、通信性能を向上させる場合もある。
また、DB用計算機N1〜N16は、ディスプレイ、キーボード107、マウス108を接続しなくてもよい。
次に、Consistent Hashにおける仮想リングの構成方法を説明する。図1に示した計算機の符号が仮想リングを構成する順序となる。すなわち、N1から開始し、N2、N3・・・N16、N1の順に計算機をたどると仮想リングを一周する。この構成は以下の特徴を持つ。
特徴1 仮想リング上で隣接する計算機が、物理ネットワーク上でも隣接する。
特徴2 仮想リング上で隣接する計算機を順にたどると、格子型ネットワークを構成するネットワークスイッチを同じ回数だけ通る。図1に示す例では、ネットワークスイッチSW−X1〜SW−X4、SW−Y1〜SW−Y4を2回ずつ通ることになる。
特徴3 仮想リング上で隣接する計算機は、異なるルータに接続される。
Consistent Hashでは、プライマリノードとバックアップノードの間でデータを複製するため、仮想リング上で隣接する計算機間のデータ転送量が多くなる。従って、仮想リング上で隣接する計算機間のネットワーク距離が短くなるように構成すれば効率的である。これは、前述した特徴1によって実現できる。また、仮想リング上で隣接する計算機間のネットワーク負荷を分散するためには、隣接する計算機間の通信を複数のネットワークスイッチを利用して分散すればよい。これは、前述した特徴2によって実現できる。さらに、特定のルータが故障した場合に、特徴3によって、他のルータに接続された計算機上のデータが利用可能であることから、耐障害性を高めることができる。以上、特徴1〜3によって、ネットワーク負荷分散と耐障害性を両立することができる。
この仮想リングは図3に示す処理によって作成することができる。以下では、具体的な作成方法を説明する。この処理はマスタ計算機M0によって実行されるが、他の計算機によって実行されてもよい。
まず、計算機番号iを1に、ノード座標(X,Y)を(0,0)に初期化して、最初の計算機N1を座標(0,0)に割り当てる(S101)。すなわち、図1の左上の位置が座標(X,Y)=(0,0)であり、Xが増えると右に進み、Yが増えると下に進む。
次に、計算機番号iをインクリメントし、次に位置を決定する計算機の計算機番号を決定する(S102)。そして、決定された計算機番号が偶数である場合は、X方向に一つ進んだ場所に計算機を割り当て可能か否か判定する(S103、S104、S106)。そして、この場所に計算機を割り当て可能であれば、この座標に次の計算機を割り当てる(S108)。
ステップS102において計算機番号iをインクリメントした後、計算機番号が奇数である場合は、Y方向に一つ進んだ場所に計算機を割り当て可能か否か確認する(S103、S105、S106)。そして、この場所に計算機を割り当て可能であれば、この座標に次の計算機を割り当てる(S108)。
図1に示す計算機システムでは4×4の格子状にルータが配置されているので、ステップS104及びS105における剰余演算のNの値は4となる。また、ステップS106において、既に他の計算機がその座標に割り当て済みである場合は、Y方向に一つ後退する位置に計算機を割り当てることによって、仮想リングの構成方向をずらす(S107)。例えば、図1では、計算機N9を割り当てるときにステップS107の処理が行われる。
前述した方法によると、仮想リングの帯が格子型ネットワークを1周するたびに2段分ずつずれていくため、格子型ネットワークの縦と横のサイズが共に偶数個の場合に、すべての座標を一筆書きのように埋め尽くすことができる。
図1に示す計算機システムでは、ルータ間をネットワークスイッチによって接続しているため、物理的に隣接していなくても、ネットワーク的に隣接する計算機が存在する。例えば、計算機N1にネットワーク的に隣接する計算機は、ネットワークスイッチSW−X1を経由して通信可能なノードN2、N13、N14、及び、ネットワークスイッチSW−Y1を経由して通信可能なノードN16、N9、N8である。
図3に示した仮想リング構成方法では、仮想リング上で隣接する計算機が必ず物理的に隣接することになるが、前述した性質によって、他にもネットワークトポロジ的に等価な構成方法が存在する。すなわち、図1に示したネットワーク構成においてX軸方向の任意の列を置換してもネットワークトポロジ的には等価である。例えば、ノード座標Y=0の列を構成する計算機(N1、N2、N13、N14)と、ノード座標Y=1の列を構成する計算機(N16、N3、N4、N15)を置換したネットワークは、元のネットワークと、等価なネットワークトポロジを有する。同様に、Y軸方向の列を置換してもよいし、X軸方向の列の置換とY軸方向の列の置換とを順に複数回行ってもよい。
前述した手順によって各ルータ以下に一つずつ計算機を配置することができる。以下では、このように配置された計算機を代表ノードと称する。
分散データベースに格納されるデータが増えた場合、1台のDB用計算機による処理能力を超えることがある、このような場合には、DB用計算機を追加する必要がある。このとき、仮想リングへの挿入はConsistent Hashの規則に従うことになるが、物理ネットワークのどの位置へDB用計算機を追加するかが問題となる。なるべく、前述した特徴1〜特徴3を満たすように計算機を追加することができればよい。以下では、代表ノードが配置された構成に、新たな計算機を非代表ノードとして追加する方法を説明する。
DB用計算機の追加時に特徴1〜特徴3すべてを満たすことは困難であるが、特徴1及び特徴3を満たすことはできる。このため、具体的には、以下の規則に従って、計算機を追加する位置を決定する。
規則A1 仮想リング上で追加される新たな計算機に隣接する2台の代表ノードから、物理ネットワーク上で隣接する位置、すなわち、上記2台の計算機が共通に利用するルータ間ネットワークセグメントに接続されたルータに新たな計算機を接続する。
規則A2 仮想リング上で隣接する3台の計算機を異なるルータに接続する。
規則A1によって特徴1を満たすことができ、規則A2によって特徴3を満たすことができる。
例えば、図4は、仮想リング上の計算機N9とN10の間に計算機N9−1と計算機N9−2を追加する例を示し、計算機N9−1はルータR5に接続されており、計算機N9−2はルータR6に接続されている。これらの計算機N9−1、N9−2に隣接する代表ノードは計算機N9、N10であり、これらが共通に利用するルータ間ネットワークセグメントは、ネットワークスイッチSW−X3を利用する。従って、規則A1を満たすためには、ネットワークスイッチSW−X3に接続されたルータの配下に新たな計算機を追加すればよい。さらに、規則A2を満たすためは、計算機N9−1及びN9−2を異なるルータに接続している。
一方、前述した接続方法によって新たな計算機を追加すると、特定のネットワークに負荷が集中する可能性がある。例えば、図4に示す計算機システムでは、ネットワークスイッチSW−X3の負荷が上昇する。これに対して、規則A1のネットワーク距離に関する制限を緩めて、
規則A1b 仮想リング上で追加される新たな計算機に隣接する2台の代表ノードのいずれか1台に物理ネットワーク上で隣接する位置に新たな計算機を接続する。
という規則に従って、新たな計算機を追加する方法が考えられる。
例えば、図5に示す計算機システムでは、新たな計算機N9−1を、ルータR10が直接接続されているネットワークスイッチSW−Y2に接続されたルータR3に接続しており、計算機N9−2を、ネットワークスイッチSW−Y2に接続されたルータR11に接続している。このように、新たな計算機を接続すると、ネットワークスイッチSW−X3への負荷を軽減することができる。しかし、計算機N10と計算機N9−1との間、及び、計算機N10と計算機N9−2との間では、途中でルータを介さずに通信可能である。しかし、計算機N9と計算機N9−1との間、及び、計算機N9と計算機N9−2との間の通信では、途中でルータR10による転送が発生するため、ルータR10の負荷は上昇する。従って、この接続方法はネットワークスイッチSW−X3の負荷が高く、ルータR10の負荷に余裕がある場合に有効である。
同様に、ネットワークスイッチSW−X3の負荷が高く、ルータR9の負荷に余裕がある場合には、ネットワークスイッチSW−Y1に接続されたルータに新たな計算機を接続する方法が有効である。
これまでの説明を纏めると以下のようになる。すなわち、図3に示した手順に従って、格子型ネットワークを構成する各ルータに一つずつDB用計算機(代表ノード)を配置した状態を初期状態とする。一つのルータに2台目以降のDB用計算機を配置する場合、ネットワークスイッチ及びルータの負荷を勘案し、負荷に余裕がある場合は前述した規則A1、2を満たす位置に新たな計算機を追加し、又は、負荷が高い場合は規則A1b、2を満たす位置に新たな計算機を追加する。
前述した方法を実施するためには、ネットワーク負荷の監視結果に基づいて、新たな計算機を追加する位置を決定する必要がある。これを人手で実行すると手間がかかる。そこで、以下では、前述した作業を支援する構成管理ツールについて説明する。
本実施形態では、ルータR1〜R16が、当該ルータによって転送されるデータ量を監視し、取得したデータ転送量をマスタ計算機M0に送信する。マスタ計算機M0は受信したネットワーク転送量からネットワークスイッチSW−X1〜SW−X4、SW−Y1〜SW−Y4及びルータR1〜R16の負荷を算出し、算出された負荷に基づいて新たな計算機を追加する位置を決定する。
これを実現するルータR1〜R16のソフトウェア構成を図6に示し、マスタ計算機M0のソフトウェア構成を図7に示す。
図6に示すように、ルータR1〜R16は、ルータの各種設定を保存する設定保存部201、ネットワーク負荷及びCPU負荷を監視する負荷監視部202及びネットワークを流れるパケットを転送するルーティング部203を備える。また、図7に示すように、マスタ計算機M0は、格子型ネットワークを構成するルータ及びDB用計算機を管理するノード管理部301、クライアント計算機C1〜Cnを管理するクライアント管理部302、格子型ネットワークのネットワーク負荷やルータ負荷を管理する負荷管理部303及び新たな計算機の追加位置を決定する構築支援部304を備える。
ルータの設定保存部201は、ルータのアドレス、ネットワークアドレス、ブロードキャストアドレス等のネットワーク情報と、ルータが備えるLANポートとネットワークセグメントとの対応関係を、ネットワークセグメント毎に保持する。さらに、設定保存部201は、ルーティングテーブルを保持する。このルーティングテーブルに基づいて、ルーティング部203がパケットの転送処理を行う。
ルータの負荷監視部202は、各ポートを通過した入出力パケットの総量を計数しており、一定時間(例えば、1秒)毎、かつ、ネットワークセグメント毎に計数値を集計する。また、負荷監視部202は、ルータのCPU利用率を監視しており、一定時間(例えば、1秒)毎に監視した値を集計する。そして集計したパケットの計数値及びCPU利用率をマスタ計算機M0に送信する。例えば、LANポート1、2を計算機用ネットワークセグメントとして利用している場合、LANポート1、2の入力パケット用カウンタの合計値と出力パケット用カウンタの合計値と、計算機用ネットワークセグメントのルータアドレスとカウンタ値の合計値との対応関係をマスタ計算機M0に送る。2種類のルータ間ネットワークセグメントについても、同様に、ルータアドレスとカウンタ値の合計値とをマスタ計算機M0に送信する。なお、前述した処理において、カウンタ値の合計を計算すべきLANポートとルータアドレスは、設定保存部201に保持される情報から決定される。カウンタの合計を送信するとき、CPU利用率も一緒にマスタ計算機M0に送信される。
図9に、ルータがマスタ計算機M0に送る負荷通知メッセージMSG01の例を示す。負荷通知メッセージMSG01は、ネットワークセグメント毎に、ルータのアドレス、入出力カウンタ値の合計、及びCPU利用率を含む。なお、図9では説明を簡単にするため、XML形式のデータフォーマットとして、負荷通知メッセージMSG01を示したが、同一内容の情報を送信できれば、他のデータフォーマットでもよい。
マスタ計算機M0の負荷管理部303は、ルータの負荷を管理するルータ負荷管理テーブルT01(図10A参照)及びネットワークスイッチの負荷を管理するスイッチ負荷管理テーブルT03(図11A参照)を保持する。マスタ計算機M0は、ルータから受信した負荷通知メッセージMSG0に基づいて、ルータ負荷管理テーブルT01及びスイッチ負荷管理テーブルT03を更新する。以下に、図16を用いてルータ負荷管理テーブルT01の更新処理を説明する。
マスタ計算機M0は、ルータから負荷通知メッセージMSG01を受信すると(S201)、負荷通知メッセージMSG01に含まれるルータアドレスをノード管理部301に送信し、各ルータアドレスのネットワークセグメントの種類及び座標を問い合わせる。
ノード管理部301は、ルータ管理テーブルT05(図12)を保持しており、このテーブルを利用して、対応するルータの座標とネットワークセグメントの種類を特定する。
ルータ管理テーブルT05は、座標T051、XアドレスT052、YアドレスT053及び計算機アドレスT054を含む。
座標T051は、格子ネットワーク上のルータの位置である。XアドレスT052は、X方向のルータ間ネットワークセグメントのルータアドレスである。YアドレスT053は、Y方向のネットワークセグメントのルータアドレスである。計算機アドレスT054は、DB用計算機を接続するネットワークセグメントのルータアドレスである。XアドレスT052、YアドレスT053及び計算機アドレスT054は、"192.168.0.20/24"のように、ルータのアドレスとネットワークアドレス長の組によって表される。
ルータ管理テーブルT05は、システム構築時にルータR1〜R16の座標を決定するときに作成されるため、マスタ計算機M0からノード管理部301への前記問い合わせを受信した場合には、ルータR1〜R16に対応するエントリが既に登録されている。
ノード管理部301は、負荷管理部303から問い合わせを受信すると、受信したルータアドレスと一致するアドレスを、ルータ管理テーブルT05のXアドレスT052、YアドレスT053又は計算機アドレスT054のいずれかに含むエントリを検索する。この検索によって見つかったエントリが、不可通知メッセージMSG01を送信したルータを示しており、そのエントリの座標T051が当該ルータの座標となる。また、XアドレスT052、YアドレスT053又は計算機アドレスT054のいずれかに、ルータアドレスと一致するアドレスが記載されているため、一致したフィールドのフィールド名(Xアドレス、Yアドレス、計算機アドレス)がネットワークセグメントの種類となる。
ノード管理部301は、負荷通知メッセージMSG01を受信した全てのルータアドレスについてネットワークセグメントの種類を取得したら、ルータの座標とネットワークセグメントの種類とを負荷管理部303に送る(S202)。
負荷管理部303は、ノード管理部301からネットワークアドレス、セグメント情報及びルータの座標を受信したら、負荷通知メッセージMSG0に含まれる各アドレスとカウンタ値をルータ負荷管理テーブルT01(図10A)、スイッチ負荷管理テーブルT03(図11A)に登録する(S203)。ノード管理部301は、負荷通知メッセージMSG0からルータアドレスを一つ取り出す。その取り出したルータアドレスに対応するネットワークセグメントの種類が計算機用ネットワークセグメントであれば、ルータ負荷管理テーブルT01を更新するためステップS205へ進む。一方、当該ネットワークセグメントの種類が計算機用ネットワークセグメントであなければ、スイッチ負荷管理テーブルT03を更新するためステップS206へ進む(S204)。
ルータ負荷管理テーブルT01は、ルータの座標を表現する座標T011及び監視履歴T012を含み、このテーブルの一つのエントリが1台のルータに対応する。座標T011には"(0,0)"のように、ルータの座標が記載される。監視履歴T012には、ルータ負荷監視履歴テーブルT02(図10B)を示す識別子が記載される。つまり、ルータ負荷管理テーブルT01は、その中にルータ負荷監視履歴テーブルT02を含むネスト構造となる。
ルータ負荷監視履歴テーブルT02は、入力カウンタT021、出力カウンタT022、CPU利用率T023及び報告時刻T024を含む。
入力カウンタT021は、ルータから受信した入力カウンタ値である。出力カウンタT022は、ルータから受信した出力カウンタ値である。CPU利用率T023は、ルータから受信したCPU利用率である。報告時刻T024は、ルータから負荷通知メッセージMSG01を受信した時刻である。このテーブルは、ルータから受信した負荷情報の最新履歴であり、負荷通知メッセージMSG01受信するたびに新しいエントリが追加される。また、報告時刻が現在時刻から一定時間(例えば、24時間)経過したエントリは削除される。負荷管理部303は、このルータ負荷監視履歴テーブルT02を用いて、計算機用ネットワークセグメントの入出力データ量及びルータのCPU負荷を計算する。
スイッチ負荷管理テーブルT03は、ネットワークスイッチの座標を表現する座標T031、ネットワークアドレスT032及び監視履歴T033を含む。このテーブルの一つのエントリが1台のネットワークスイッチに対応する。座標T031には、"X−0"のように、ネットワークスイッチが配置される軸の方向及び当該軸に垂直方向の座標が指定される。例えば、SW−X1は、X方向のネットワークスイッチであり、Y軸の座標は0であるため、"X−0"となる。ネットワークアドレスT032には、ネットワークアドレスとアドレス長が"102.168.0.0/24"のように記載される。監視履歴T033には、スイッチ負荷監視履歴テーブルT04(図11B)の識別子が記載される。つまり、スイッチ負荷管理テーブルT03は、その中にスイッチ負荷監視履歴テーブルT04を含むネスト構造となる。
スイッチ負荷監視履歴テーブルT04は、ルータ座標T041、入力カウンタT042、出力カウンタT043及び報告時刻T044を含む。ルータ座標T041は、このルータが配置された座標である。入力カウンタT042は、ルータから受信した入力カウンタ値である。出力カウンタT043は、ルータから受信した出力カウンタ値である。報告時刻T044は、ルータから負荷通知メッセージMSG01を受信した時刻である。このスイッチ負荷監視履歴テーブルT04は、ルータから受信した負荷情報の最新の履歴であり、ルータ負荷監視履歴テーブルT02と同様、負荷通知メッセージMSG01受信するたびに新しいエントリが追加される。また、報告時刻が現在時刻から一定時間(例えば、24時間)経過したエントリは削除される。負荷管理部303は、このスイッチ負荷監視履歴テーブルT04を用いて、スイッチに入出力されるデータ量を計算する。
ステップS204の判定の結果、ネットワークセグメントが計算機用ネットワークセグメントであれば、ノード管理部301は、受信したカウンタ値をルータ負荷管理テーブルT01及びルータ負荷監視履歴テーブルT02に追加する。具体的には、ノード管理部301は、ステップS202で決定した座標をキーとして、ルータ負荷管理テーブルT01の座標T011を検索する。座標T011が一致するエントリが見つかったら、そのエントリの監視履歴T012を取得する。監視履歴T012にはルータ負荷監視履歴テーブルT02の識別子が登録されており、この識別子が示すテーブルに新たにエントリを一つ作成し、ルータから受信した負荷通知メッセージMSG01に記載された当該ルータアドレスに対応する値を、新たに作成したエントリの入力カウンタT021及び出力カウンタT022に登録する。また、負荷通知メッセージMSG01に記載されたCPU利用率を、新たに作成したエントリのCPU利用率T023に登録する。さらに、負荷通知メッセージMSG01を受信した時刻を、新規に作成したエントリの報告時刻T024に登録する(S205)。
ステップS204の判定の結果、ネットワークセグメントがルータ間ネットワークセグメントであれば、ノード管理部301は、受信したカウンタ値をスイッチ負荷管理テーブルT03及びスイッチ負荷監視履歴テーブルT04に追加する。具体的には、ノード管理部301は、ステップS202で決定したネットワークセグメントの種類とルータ座標とに基づき、ネットワークスイッチの座標を決定する。座標は、ネットワークセグメント軸方向の名称(X/Y)とルータ座標の軸方向に垂直な成分との組み合わせによって表される。例えば、ステップS202で決定したネットワークセグメントがX方向のネットワークセグメントであり、ルータの座標が(1,0)であった場合、ルータのY座標が0であるため、ネットワークスイッチの座標は「X−0」になる。
次に、ノード管理部301は、決定されたネットワークスイッチの座標をキーとして、スイッチ負荷管理テーブルT03の座標T031を検索する。座標T031が一致するエントリが見つかったら、そのエントリの監視履歴T032を取得する。監視履歴T032にはスイッチ負荷監視履歴テーブルT04の識別子が登録されており、この識別子が示すテーブルに新たにエントリを一つ作成し、新たに作成したエントリのルータ座標T041にルータ座標を登録する。また、ルータから受信した負荷通知メッセージMSG01に記載された当該ルータアドレスに対応する値を、新たに作成したエントリの入力カウンタT042及び出力カウンタT043に登録する。さらに、負荷通知メッセージMSG01を受信した時刻を、新規に作成したエントリの報告時刻T044に登録する(S206)。
ノード管理部301は、全てのルータアドレスに対して、前述したステップS202〜S206の処理を行う。これによって、ルータ及びネットワークスイッチの負荷情報がマスタ計算機M0にリアルタイムに記録される。
次に、新たな計算機の追加時に、計算機を追加する位置を決定し、新たな計算機への設定情報を生成する手順を図17を用いて説明する。
システム管理者がマスタ計算機M0上で構成管理ツールを起動すると、構築支援部304は、ノード管理テーブルT06を参照して、分散データベースを構成するすべてのDB用計算機のハッシュ値とディスク使用率を表示し、新たな計算機を挿入すべき箇所をシステム管理者が決定できるようにする。
ノード管理テーブルT06は、図13に示すように、DB用計算機を管理するためのテーブルであり、座標T061、アドレスT062、ハッシュ値T063、代表ノードT064、拡張用スイッチT065及びディスク使用率T066を含む。座標T061は、その計算機が接続されているルータの座標である。アドレスT062は、その計算機のアドレスである。ハッシュ値T063は、その計算機のハッシュ値である。代表ノードT064は、その計算機が代表ノードであるか否かを表すフラグであり、代表ノードの場合"true"が格納される。拡張用スイッチT065は、非代表ノードを追加するルータ間を接続するネットワークスイッチの座標である。ディスク使用率T066は、各ノードに備わるディスクの使用率である。
構築支援部304は、必要に応じて、ハッシュ値又はディスク使用率でソートされた計算機一覧を表示する。ハッシュ値でソートすれば、仮想リングの構成が分かりやすく表示することができる。また、ディスク使用率でソートすれば、ディスク使用率が高い計算機、すなわち新たに追加する計算機の位置を容易に見つけることができる。
システム管理者は、表示されたDB用計算機の一覧に基づいて、新たな計算機を追加すべき場所を決定し、新たな計算機に割り当てるハッシュ値を決める。構築支援部304は、管理者によって決定された、新たな計算機を追加すべき場所及びハッシュ値の入力を受け付ける。
なお、ディスク使用率が最も高い計算機が保持するデータを分割するように、ハッシュ値を自動的に決めてもよい。この場合、ディスク使用率が最も高い計算機のハッシュ値と、仮想リング上でその次に位置する計算機のハッシュ値の中間のハッシュ値を新たな計算機のハッシュ値とすることができる(S301)。
次に、構築支援部304は、ノード管理テーブルT06から、ステップS301で決定されたハッシュ値に隣接する代表ノードを検索する。具体的には、ノード管理テーブルT06のエントリをハッシュ値T063でソートし、代表ノード(代表ノードT064が"true"のエントリ)のハッシュ値を順に確認する。ステップS301で決定されたハッシュ値よりハッシュ値T063が小さいエントリの中で、最大のハッシュ値を持つエントリと、ステップS301で決定したハッシュ値よりハッシュ値T063が大きいエントリの中で、最小のハッシュ値を持つエントリが隣接する二つの代表ノードである。
二つの代表ノードのうちハッシュ値が小さい方が、手前の代表ノードになる。このようなエントリが存在しない場合、すべての代表ノードの中で最小のハッシュ値をもつものと、最大のハッシュ値をもつものが、隣接する二つの代表ノードになる。但し、この場合はハッシュ値が大きいノードが手前の代表ノードになる(S302)。
次に、構築支援部304は、ステップS302で求めた二つの代表ノードのうち、手前に位置する代表ノードのノード管理テーブルT06のエントリから拡張用スイッチT065を読み取る。既に非代表ノードが挿入されていれば、拡張用スイッチT065に値が設定されており、ノードの拡張方向が決まっているため、ステップS304へ進む。拡張用スイッチS065に値が設定されていない場合は、ノードの拡張方向を決める必要があるためステップS306へ進む(S303)。
ステップS303において、拡張用スイッチT065が設定されていると判定された場合、非代表ノードが接続されるルータは、拡張用スイッチT065に記載されたネットワークスイッチに接続されたルータであることが必要がある。構築支援部304は、拡張用スイッチT065に記載されたネットワークスイッチの座標を確認し、そのネットワークスイッチに接続されたルータの座標一覧を生成する。例えば、拡張用スイッチT065に"X−0"が格納されていた場合、Y座標が"0"であるすべての座標、すなわち、(0,0)(0,1)(0,2)(0,3)の四つの座標を生成する。これらが新たな計算機を接続するルータの候補(接続候補ルータ)となる。
このように複数のルータが候補となるが、以下の規則によって新たな計算機を接続するルータを決定する。
規則B1 ルータのLANポートに空きがある。
規則B2 仮想リング上で連続する三つの計算機を同一ルータに接続しない。
規則B3 負荷が低いルータを優先的に利用する。
構築支援部304は、生成された座標とノード管理テーブルT06の座標T061とが一致するノード管理テーブルT06のエントリを検索する。各座標に対して見つかったエントリ数はルータに接続されている計算機の数である。ある座標において、この計算機数と、ルータが計算機用ネットワークに割り当てているLANポート数とが一致する場合、対応するルータには空きポートがないため、その座標を持つルータを接続候補ルータから除外する。これによって規則B1による選別が行われた。
次に、構築支援部304は、ステップS302と同様の手順によって、新たな計算機のハッシュ値に隣接される計算機をノード管理テーブルT06から検索する。ステップS302では代表ノードのみを検索対象としたが、ここではすべての計算機を検索対象とする。隣接する計算機を求めた後、手前側で隣接する計算機の手前の計算機及び後ろ側で隣接する計算機の直後の計算機に対応するノード管理テーブルのエントリを求める。例えば、図4に示した構成において、計算機N9−1と計算機N9−2の間に新たな計算機を挿入する場合、手前側の2台の計算機N9、N9−1、及び、後ろ側の2台の計算機N9−2、N10に対応するエントリを求める。
構築支援部304は、求められたエントリの座標T061を読み取り、読み取った座標T061と求められた接続候補ルータの座標とが一致するものがあれば、その座標を持つルータを接続候補ルータから除外する。これによって規則B2による選別が行われた。
次に、構築支援部304は、接続候補ルータの負荷を求める。具体的には、ルータ負荷管理テーブルT01を参照し、接続候補ルータの座標と座標T011とが一致するエントリを取得する。取得したエントリの監視履歴T012には、当該ルータの負荷情報の履歴が格納されたルータ負荷監視履歴テーブルT02の識別子が記載されている。そこで、ルータ負荷監視履歴テーブルT02を参照し、過去及び現在の情報を用いて、入力カウンタ及び出力カウンタの差分を計算し、計算された差分を所定の経過時間(例えば、1時間)で除算することによって一定時間内のデータ転送量の平均値を算出する。また、差分を計算する時間間隔を短くすることによって、ある時刻におけるデータ転送量の瞬間値を求める。このようにして一定時間内のデータ転送量の平均値及びデータ転送量の瞬間値の最大値を求める。
また、同様にして、ルータ負荷監視履歴テーブルT02のCPU利用率T023について、過去一定時間内のCPU使用率の平均値と、過去一定時間内の最大値を求める。
このようにして、ネットワーク負荷の平均値及び最大値、CPU利用率の平均値及び最大値を求め、求められた値に基づいて負荷ポイントを算出する。負荷ポイントの算出方法は様々な方法があるが、例えば、下式を用いて、前述した四つの値の線形結合によって算出することが考えられる。
負荷ポイント = ネットワーク負荷の平均値 × 定数1 + ネットワーク負荷の最大値 × 定数2 + CPU負荷の平均値 × 定数3 + CPU利用率の最大値 × 定数4
前述した手順によって、全ての接続候補ルータの負荷ポイントを算出し、負荷ポイントが最低のルータを接続対象として選択する。これによって規則B3による選別が行われた(S304)。
次に、構築支援部304は、新たな計算機の情報をノード管理テーブルT06に登録する。具体的には、ノード管理テーブルT06に新エントリを作成し、ステップS304で選択された接続対象ルータの座標を、ノードの座標として、座標T064に登録する。アドレスT062は、この段階では登録されない。これは、ノードが、起動後に割り当てられる(例えば、DHCPによる自動割り当て)アドレスをマスタ計算機M0に通知し、この通知されたアドレスが登録されるためである。ハッシュ値T063には、ステップS301で決定された新たな計算機のハッシュ値が登録される。新たな計算機は代表ノードではないため、代表ノードT064及び拡張用スイッチT065は設定されない。
さらに、構築支援部304は、新たな計算機の設定情報を作成する。設定すべき情報は、ステップS301で決定された新たな計算機のハッシュ値及び新たな計算機の座標(ステップS304で求めたルータの座標と等しい)、新たな計算機のアドレスである。但し、アドレスについては、ルータが計算機用ネットワークに対するDHCPサーバとして動作すれば、全ての計算機はDHCPクライアントとして動作することができ、個々の計算機のアドレスの設定は不要となる。構築支援部304が設定情報を作成した後、システム管理者は、作成された設定情報を新たな計算機に設定し、ステップS304で決定されたルータに新たな計算機を接続する。
設定情報を新たな計算機に設定する方法としては様々な方法がある。例えば、マスタ計算機M0から、フロッピーディスク又はUSBメモリ等の記憶媒体を経由して、新たな計算機に設定ファイルをコピーしてもよい。また、新たな計算機をネットワークスイッチSW−0に一時的に接続することによって、新たな計算機とマスタ計算機M0とを同一ネットワークに接続し、ネットワーク経由でマスタ計算機M0から新たな計算機に設定情報をコピーしてもよい(S305)。
ステップS303において、拡張用スイッチT065が設定されていないと判定された場合、新たな計算機を接続するルータのネットワークセグメントを決定する必要がある。構築支援部304は、ステップS302で求めた二つの(前後の)代表ノードの座標をノード管理テーブルT06の座標T061から取得し、二つの座標を比較し違いがある要素(X、Y)を確認する。違いがある要素が二つの代表ノード間の軸方向となり、違いがない要素が軸の方向を含まない座標となる。例えば、図4に示す計算機N9と計算機N10を代表ノードとして選んだ場合、計算機N9の座標は(0,2)であり、計算機N10の座標は(1,2)である。よって、軸方向はX方向で、軸のY座標は2になり、軸の方向を含む座標は「X−2」になる。
次に、この軸に対応するネットワークスイッチの負荷を求める。具体的には、求められた軸の方向を含む座標とスイッチ負荷管理テーブルT03の座標T031とが一致するエントリを検索する。エントリが見つかったら、そのエントリの監視履歴T032を取得する。取得したエントリの監視履歴T032には、当該スイッチの負荷情報の履歴が格納されたスイッチ負荷監視履歴テーブルT04の識別子が記載されている。そこで、負荷監視履歴テーブルT04を参照し、ルータ座標T041毎に、報告時刻T044が過去一定時間以内(例えば、1時間)以内のエントリについて、入力カウンタ及び出力カウンタの差分を計算する。カウンタ値の差分は、ネットワークスイッチに入力/出力されるデータ量となる。次に、ルータ座標T041毎に、入力カウンタ及び出力カウンタの差分の平均値及び最大値を求める。そして、各ルータ座標T041において求められた最大値及び平均値の各々の和を計算する。例えば、軸の座標が「X−2」の場合、ルータ座標(0,2)(1,2)(2,2)(3,2)の各々について入力カウンタの差分の最大値を算出し、最大値の和を計算する。同様に、ルータ座標(0,2)(1,2)(2,2)(3,2)の各々について入力カウンタの差分の平均値を算出し、平均値の和を計算する。同様に、出力カウンタの最大値及び平均値を算出し、最大値の和及び平均値の和を計算する。
このような手順によって、軸方向のネットワークスイッチに関する四つの負荷パラメタ(入力/出力データ量の最大値及び平均値)を算出し、算出された全ての負荷パラメータが基準値以下であるか否かを判定する。例えば、最大値にはネットワークスイッチの最大性能の95%、平均値にはネットワークスイッチの最大性能の70%のように、ネットワークスイッチの最大性能に基づいて基準値を決めるとよい。いずれかの負荷パラメタが基準値を超えていれば、ネットワークスイッチの負荷が高いので、ステップS307へ進む。一方、全ての負荷パラメタが基準値を超えていなければ、ネットワークスイッチの負荷が低いので、ステップS308へ進む(S306)。
ステップS306において、ネットワークスイッチの負荷が低いと判定された場合、新たな計算機を接続するルータのネットワークセグメントとして、軸方向のネットワークスイッチを選択する。ステップS302で求めた二つの代表ノードのうち手前の代表ノードに対応するノード管理テーブルT06のエントリの拡張用スイッチT065に、ステップS306で求めた軸の方向を含む座標を登録する(S307)。
一方、ステップS306でネットワークスイッチの負荷が基準値以上であれば、新たな計算機を接続するルータのネットワークセグメントとして、軸方向に垂直な方向のネットワークスイッチを選択する。ステップS302で求めた二つの代表ノードの座標及びステップS306で求めた軸方向に基づいて、軸方向に垂直なネットワークスイッチの座標を決定する。例えば、図4に示す計算機N9と計算機N10が代表ノードとして選択されている場合、計算機N9の座標は(0,2)であり、計算機N10の座標は(1,2)であり、軸方向はX方向である。従って軸方向に垂直な方向はY方向となり、選択されている代表ノードの座標の各々からY方向に伸びる軸の座標「Y−0」「Y−1」がネットワークスイッチの座標となる。
構築支援部304は、ステップS306と同様の手順で、軸方向に垂直な方向に伸びる二つのネットワークスイッチの負荷パラメタ(入力/出力データ量の最大値及び平均値)を算出する。そして、算出された負荷パラメタに基づいて、負荷ポイントを算出する。負荷ポイントの算出方法は様々な方法があるが、例えば、下式を用いて、前述した四つの値の2乗の線形結合によって算出することが考えられる。
負荷ポイント = 定数1 × 入力量の平均値2 + 定数2 × 入力量の最大値2 + 定数3 × 出力量の平均値2 + 定数4 × 出力量の平均値2
この式で、負荷パラメータの二乗を用いたのは、入出力データ量がネットワークスイッチの性能限界に近づいた場合に、より負荷を高く見積もるためである。このように、軸方向に垂直な方向に伸びる二つのネットワークスイッチの負荷ポイントを算出し、算出された負荷ポイントが低いネットワークスイッチを、新たな計算機の接続用のセグメントに採用する。
構築支援部304は、ステップS302で求めた二つの代表ノードのうち、手前の代表ノードに対応するノード管理テーブルT06のエントリの拡張用スイッチT065に、採用されたネットワークスイッチの座標を登録する(S309)。
ステップS307又はS309の処理が終了した後、構築支援部304は、ステップS304と同様の手順で新たな計算機を接続するルータを選択する(S310)。そして、ステップS305と同様の手順で新たな計算機の情報をノード管理テーブルT06へ登録し、次に新たな計算機へ設定される設定情報を作成し、作成された設定情報を新たな計算機へ設定する(S311)。
分散データベースを構成する計算機の数が増えた場合、一つのルータに計算機を追加する方法では、ルータのLANポートが不足したり、一つのルータへの負荷が高くなったり、という問題が発生する。このような場合は、格子のサイズを拡大し、システムを再構成する必要がある。しかし、システムの再構成は多くの手間を必要とする作業であり、設定の自動化による構築支援があると望ましい。以下では、設定自動化の方法について説明する。
設定自動化における、マスタ計算機M0の構築支援部304の動作を図18に示す。以下では図18を用いて自動設定処理の詳細を説明する。
まず、システム管理者は新システムの格子サイズをマスタ計算機M0に入力する。次に、構築支援部304は、ルータ管理テーブルT05をクリアした後、図3で説明した手順を用いてルータの座標を決定する。図3ではノードの座標を決定したが、ノードをルータに読み替えてルータに適用することができる。ルータの座標が決まる度に、ルータ管理テーブルT05の最後尾に新エントリを追加し、そのエントリの座標T51に、決定された座標を登録する。このようにして、すべての格子点に対してルータの割り当てを終わると、ルータ管理テーブルT05上では、仮想リング上の順序でルータに対応するエントリが並ぶ(S401)。
構築支援部304は、ステップS401においてユーザが入力した格子サイズからネットワークスイッチのアドレス一覧を生成し、生成したアドレス一覧をスイッチ設定テーブルT07(図14)の座標T071に登録する。スイッチ設定テーブルT07は、各エントリがネットワークスイッチ1台に対応し、座標T071及びネットワークアドレスT072を含む。座標T071は、ネットワークスイッチの座標である。ネットワークアドレスT072は、当該ネットワークスイッチが担当するネットワークセグメントのネットワークアドレスであり、ネットワークアドレスは、「192.168.0.0/24」のようにネットワークアドレス「192.168.0.0」とアドレス長「24」を組み合わせて表される。
構築支援部304は、システム管理者に対して、格子型ネットワークを構成する各ネットワークスイッチのネットワークセグメントのアドレスを決定するように促す。このとき、構築支援部304が図4に示すようなネットワーク図をディスプレイ上に表示して、各ネットワークスイッチのネットワーク上の位置を示すと分かりやすい。システム管理者は、ネットワークスイッチの座標とネットワークアドレスの対応関係を入力する。構築支援部304は、スイッチ設定テーブルT07の座標T071が一致するエントリのネットワークアドレスT072に、システム管理者によって入力された値を登録する(S402)。
次に、構築支援部304は、ルータ管理テーブルT05の各エントリのXアドレスT052、YアドレスT053及び計算機アドレスT054を決定する。具体的には、Xアドレス及びYアドレスは、軸方向とその軸方向以外の座標T051の要素に基づいて、対応するネットワークスイッチの座標を決定し、決定されたネットワークスイッチの座標によってスイッチ設定テーブルT07を参照し、ネットワークアドレスを求める。その後、そのネットワーク内で利用していないアドレスを順に割り当てる。
例えば、ルータ管理テーブルT05の座標に(0,1)が格納されていた場合、軸方向がXであるため、Y要素と組み合わせた「X−1」が対応するネットワークスイッチの座標となる。スイッチ設定テーブルT07の座標T071とネットワークスイッチの座標とが一致するエントリをスイッチ設定テーブルT07から探す。その結果、「192.168.1.0/24」が対応するネットワークアドレスとなる。このネットワークセグメントを使うのはルータのみである。そして、構築支援部304は、他のルータに既に割り当てられたアドレス以外のアドレスをルータに割り当て、そのアドレスをXアドレスT052に格納する。Yアドレスについても同様にアドレスを決定して、決定されたアドレスをYアドレスT053に格納する。
全てのルータのXアドレスとYアドレスが決定した後、計算機アドレスT054を決定する。計算機アドレスT054は、ルータ毎に独自のネットワークセグメントを設定してよいため、利用されていないネットワークセグメントであればよい。構築支援部304は、利用されていないネットワークセグメントを順にルータに割り当て、割り当てられたネットワークセグメントの最初のアドレスを計算機アドレスT054に登録する(S403)。
構築支援部304は、ルータ管理テーブルT05に基づいて、ルータの設定情報を生成する。具体的には、XアドレスT052、YアドレスT053及び計算機アドレスT054に対応する三つのネットワークセグメントの設定、各ネットワークセグメントに対応するルータのアドレスの設定、各ネットワークセグメントに対応するルータのLANポートの割り当て、及び、計算機ネットワークセグメントに対するDHCPサーバの設定を生成する。LANポートは、Xアドレス、Yアドレスについて一つずつ割り当て、残りのLANポートを計算機アドレスに割り当てる。生成された設定情報は、システム管理者がフロッピーディスク等の媒体又はネットワーク経由でルータに設定する。ネットワーク経由で設定する場合は、各ルータを一時的にマスタ計算機M0が接続されたネットワークセグメント(ネットワークスイッチSW−0に対応するネットワークセグメント)に接続する必要がある(S404)。
次に、構築支援部304は、各ノードの再配置方法を決定する。ノード管理テーブルT06に、分散データベースを構成する計算機の一覧が記載されているので、まず、ノード管理テーブルT06に記載された計算機から代表ノードになるものを選択する。構築支援部304は、ノード管理テーブルT06のすべてのエントリについて座標T061、アドレスT062、代表ノードT064及び拡張用スイッチT065をクリアする。次に、ノード管理テーブルT06のすべてのエントリをハッシュ値T063でソートする。次に以下の計算式を用いて代表ノードのエントリ番号を求める。
エントリ番号 =(格子番号 × 全エントリ数/格子数)の整数部分
この式において、格子番号は仮想リングにおけるノードの順序を示す番号であり、0〜格子数−1までのいずれかの値である。また、エントリ番号は、ソート後のノード管理テーブルT06のエントリの順序を示す番号であり、最初のエントリが0であり、最後のエントリ番号が全エントリ数−1である。
格子番号に対応するエントリ番号が求められた後、ルータ管理テーブルT05に含まれるエントリのうち、最初から"格子番号"番目のエントリの座標T051を取得する。この取得した座標を、ノード管理テーブルT06に記載されたエントリのうち、最初から"エントリ番号"番目のエントリの座標T061に登録し、そのエントリの代表ノードT063を"true"に設定する(S405)。
次に、構築支援部304は、ノード管理テーブルT06の座標T061が決まっていないエントリについて、図17と同様の手順で座標T061を決定する。但し、この時点では分散データベースが動作していないため、ルータ及びネットワークスイッチに入出力されるデータがない。従って、ステップS306の後、ステップS308及びS309に必ず進む。また、ステップS305及びS311において、新たな計算機への設定情報を生成及び設定している。しかし、この自動設定処理においては、ステップS407においてまとめて設定情報を設定するので、ステップS305及びS311ではノード管理テーブルT06へ新たな計算機を登録するだけである(S406)。
最後に、構築支援部304は、ステップS305と同様の手順によって、各計算機の設定情報を作成し、作成された設定情報を各計算機に設定する(S407)。
次に、通常運用時の動作について説明する。
クライアント計算機C1が、最初に分散データベースシステムにアクセスするとき、マスタ計算機M0に問い合わせ、マスタ計算機M0からノード管理テーブルT06の座標T061、アドレスT062及びハッシュ値T063を取得する。このノード管理テーブルT06の情報は1回取得すると、DB用計算機の構成が変更するまで再取得する必要はない。
マスタ計算機M0のクライアント管理部302は、クライアント管理テーブルT08(図15)にシステムを利用中のクライアント計算機のアドレスを保持する。クライアント管理テーブルT08は、アドレスT081及びキャッシュリース日時T082を含む。アドレスT081は、クライアント計算機のアドレスである。キャッシュリース日時T082は、クライアントへノード管理テーブルT06の内容を送信した時刻である。DB用計算機の構成が変更された場合、マスタ計算機M0はクライアント管理テーブルT08に登録されているすべてのクライアントに、ノード管理テーブルT06のキャッシュを無効化するように要求する。また、キャッシュリース日時から一定時間が経過すると、マスタ計算機M0はクライアントが消失したものと判定し、クライアント管理テーブルT08から対応するエントリを削除する。従って、クライアント計算機は一定時間毎にマスタ計算機M0にアクセスし、キャッシュリース日時T082を更新する。
クライアント計算機C1は、データを書き込むとき、自身がキャッシュしているノード管理テーブルT06を参照し、アクセスすべきキーのハッシュ値を格納している計算機(プライマリノード)のエントリを求める。次に、全エントリをハッシュ値が小さい順にソートしたときに、求められたプライマリノードから1番目及び2番目に位置する二つの計算機(バックアップノード)のエントリを求める。
プライマリ及びバックアップノードのエントリを求めた後、クライアント計算機はハッシュ値が中央の計算機(すなわち、1番目のバックアップノード)にデータを送信する。これまで説明した計算機配置方法によれば、連続する三つの計算機はL字又は直線に並ぶ。L字に並ぶ場合に、最初に中央の計算機にデータを送信し、次に中央の計算機から両端の計算機にデータを転送すると、効率的にデータを転送することができる。このことから、クライアント計算機はハッシュ値が中央の計算機に最初にデータを転送する。
DB用計算機のソフトウェア構成を図8に示す。
DB用計算機は、データを書き込むシーケンスを管理するシーケンス管理部401、及びデータ管理部402を備える。データを書き込む際、プライマリノードのシーケンス管理部401が書き込むべきキー値にシーケンス番号を割り当てる。バックアップノードは、プライマリノードが割り当てたキーシーケンス番号をキー値に関連付けて書き込む。シーケンス番号はデータを書き込む毎に増加するが、バックアップノードでデータを書き込む際、書き込むべきシーケンス番号より大きなシーケンス番号が既に書き込まれていた場合、そのデータは書き込まない。このような方法によってデータの一貫性を保障することができる。
中央のノードはバックアップノードであるため、クライアント計算機からデータを受信しても、データをコミットする権限を持たない。中央のノードは、マスタノードにデータを転送すると共に、シーケンス番号を要求する。さらに、中央のノードは、他のバックアップノードにデータを転送する。
マスタノードは、データを受信したら、シーケンス管理部401がシーケンス番号を割り当て、データ管理部402がデータの書き込みを開始する。そして、マスタノードはシーケンス番号を中央ノードに返信する。中央ノードは、マスタノードからシーケンス番号を受信したら、他のバックアップノードにシーケンス番号を送る。
各バックアップノードでは、書き込むべきキー値に既に関連付けられたシーケンス番号と、新たにプライマリノードから受け取ったシーケンス番号とを比較し、プライマリノードから受け取ったシーケンス番号の方が大きければ、データを書き込む。
以上の説明では、クライアント計算機C1〜Cn及びマスタ計算機M0が、DB用計算機が含まれる計算機群と異なるネットワークセグメントに配置されているが、クライアント計算機の機能はDB用計算機N1〜N16が持ってもよい。また、マスタ計算機M0をルータR1〜R16の計算機用ネットワークセグメントに接続してもよく、ネットワークスイッチSW−X1〜SW−X4、SW−Y1〜SW−Y4に接続してもよい。
DB用計算機N1〜N16がクライアント計算機を兼ねる場合、クライアント計算機からDB用計算機へ前述した方法によってアクセスすることは必ずしも最適ではない。例えば、クライアント計算機が計算機N1であり、プライマリノード及びバックアップノードが計算機N14、N15、N16である場合、前述した方法では、クライアント計算機N1から計算機N15にデータを転送した後、計算機N15から計算機N14及びN16にデータを再転送する。しかし、クライアント計算機N1から計算機N15へのアクセスは、途中でルータR14又はR16を経由するので、データの転送回数が増加する。
このため、DB用計算機N1〜N16がクライアント計算機を兼ねる場合、クライアント計算機からネットワーク距離が最も近いDB用計算機にデータを転送した後、データが最初に転送されたDB用計算機から他のDB用計算機にデータを転送する手順によってデータを書き込むことが効率的である。
具体的には、クライアント計算機は、自身がキャッシュしているノード管理テーブルT06を参照し、データを書き込むプライマリノード及びバックアップノードを決定した後、自身の座標とプライマリノード及びバックアップノードの座標(座標T061から取得する)とを比較し、以下の順位でネットワーク距離の近い計算機を求める。
1 座標がクライアント計算機と同一のもの。
2 座標の一つの要素がクライアント計算機と同一のもの。
3 座標の二つの要素がクライアント計算機と異なるもの。
そして、ネットワーク距離が最も近いDB用計算機にデータを転送した後、データが最初に転送されたDB用計算機から他のDB用計算機にデータを転送する。
本発明は、物理ネットワークとして高いスループットを利用可能な格子型ネットワークを利用することから、高いスループットが必要なアプリケーションで利用すると効果的である。キーあたりの保存データ量が増えると必要なスループットが増えるが、このような特性を持つアプリケーションの一つとしてファイルサーバがある。
すなわち、ファイルID(又は、ファイルのパス名)をキーとし、ファイルの内容をキーに対応するvalueとして本発明の分散データベースに格納すれば、分散データベースをファイルサーバとして利用可能になる。上記ファイルIDは、ファイル作成時にファイルに付与され、二度と変更されることがないファイルの識別子である。通常のファイルサーバにおいて、上記ファイルIDはi−node番号と呼ばれている。
階層構造のディレクトリ機能を実現するには、ディレクトリのパス名をキー、ディレクトリ内のファイルのファイルID及び各種属性情報(ファイル名、タイムスタンプ、ファイルサイズ等)をvalueとして、分散データベースに格納すればよい。
また、ファイルの内容を複数のブロックに分けて管理したい場合は、ファイルIDと当該ブロックのオフセット位置をキーとして、ブロックの内容をvalueとして分散データベースに格納すればよい。
本発明は、要旨の範囲内で様々な変形が可能である。これまでの説明では格子内のルータ間の通信にIPプロトコルを利用することを前提としていたが、ルータやスイッチによっては他のプロトコルを利用してもよい。例えば、座標をデータ送信先のアドレスとして座標を指定するプロトコルを利用すれば、より効率的な実装が可能となる。
前述した説明では、格子点上に配置したルータにDB用計算機を接続したが、図19に示すように、ルータがDB用計算機を兼ねる、すなわち、ルータとDB用計算機とが一体に構成されてもよい。この場合、ルータが代表ノードとなる。また、ルータの配下にDB用計算機を接続する構成では、非代表ノード間のネットワーク距離が長くなることを避けるため、図19の計算機N4−1、N9−1、N9−2のように、非代表ノードをX方向又はY方向のスイッチに接続することが望ましい。
このような構成の場合、非代表ノードを追加する手順(図17)においてステップS304及びS310の処理は必要ない。また、計算機用ネットワークが設けられないことから、ルータ管理テーブルT05に計算機アドレスT054を格納する必要はない。これ以外の処理については、前述した処理と同様である。
また、前述した説明では、格子点上に配置したルータ間をネットワークスイッチSW−X1〜SW−X4、SW−Y1〜SW−Y4によって接続したが、図20に示すように、ルータ間を直接結合し、二次元トーラス型に構成してもよい。ルータ間をネットワークスイッチによって接続する場合、計算機のX座標又はY座標が一致する計算機はネットワーク的に隣接する。しかし、二次元トーラス型構造である場合、座標が隣接する計算機のみがネットワーク的に隣接する。なお、トーラス型構造であるため、例えば、座標が(0,0)のノードと(0,3)のノードとは隣接する。図3に示した代表ノードの配置方法では、このような制約を設けても仮想リング上で隣接する代表ノード間はネットワーク的に隣接する。
前述した説明では、DB用計算機を追加する際、システム管理者がDB用計算機を適切なルータに接続する必要がある。この作業は煩雑であり、人的ミスが発生しやすい。このため、図21に示すように、各ルータから計算機用ネットワークセグメントへのポートをクロスバースイッチSW−A経由でDB用計算機に接続するシステムが考えられる。
これは、ルータのポートにDB用計算機を接続する代わりに、ルータとDB用計算機をクロスバースイッチSW−Aに接続し、クロスバースイッチSW−Aを制御することによって接続を変更する。従って、クロスバースイッチSW−Aは、ルータが接続されたポートと、DB用計算機N1〜N16が接続されたポートを電気的に接続するものでよく、ネットワークスイッチのように転送されるパケットに基づいて、転送先を制御する機能を有する必要はない。このため、ポート数が多いクロスバースイッチSW−Aでも安価である。クロスバースイッチSW−Aのスイッチは、マスタ計算機M0によって制御線L0を経由して制御される。制御線L0は、RS−232C等のシリアル通信線でも、Ether等のネットワークでもよい。
図21では、図面レイアウトの都合上、一つのルータとクロスバースイッチSW−Aとが1本の線で接続されているが、一つのルータとクロスバースイッチSW−Aとは複数の線で接続されてもよい。また図21ではDB用計算機の台数が16台となっているが、実際にはさらに増やして利用してもよい。
また、図21に示した、ルータR1〜R16、ネットワークスイッチSW−X1〜SW−X4、SW−Y1〜SW−Y4、クロスバースイッチSW−A及びマスタ計算機M0を一体化した装置を実装し、DB用計算機を必要に応じて追加してもよい。さらに、前述した装置に必要に応じてルータを追加してもよい。
本実施の形態は、二次元の格子を例として説明したが、次元数が2より大きい格子にも本発明を適用することができる。図22A〜図22Dは、3次元格子によってシステムを構成した場合の、代表ノードの仮想リング上の順序を示し、Z座標毎にX−Y面の配置を図示している。なお、3次元格子では、前述した特徴1(仮想リング上で隣接する代表ノードはネットワーク的にも隣接すること)及び特徴2(代表ノードを仮想リング上の順にたどると、すべてのネットワークスイッチを同じ回数だけ通る)を同時に満たすことは難しい。図22A〜図22Dに示す計算機の配置では、特徴1は完全に満たすが、特徴2を満たさない箇所がある。
以下、計算機の配置規則を説明する。この問題は3次元格子内を一筆書きする問題に帰着できるので、以下では一筆書きとして説明する。まず、すべてのZ座標に対して、X−Y平面を2×2の領域に分割する。図22A〜図22Dに示すシステムは、1辺のサイズが4の格子なので、図23に示すように、一つのX−Y平面が4領域に分割される。このような領域を4つのZ座標に対して作成する。このとき、異なるX−Y平面に、領域間の境界を同じ位置に設定する。例えば、図22A〜図22Dでは、全てのZ座標のX−Y平面において、縦及び横の中心線が境界となる。以下では、各領域を参照する場合、図23に示すようにA〜Dの名前で称する。
最初は、Z=0のX−Y平面の領域Aから開始し、領域Aの全ての4ブロックを通過して、当該ブロックの順序(1〜4)を決定した後、Z=1のX−Y平面上で同じ位置の領域Aへ移動する。この領域Aの全てのブロックを通過して、当該ブロックの順序(5〜8)を決定する。その後、同様にZ=2のX−Y平面の領域A、及び、Z=3のX−Y平面の領域Aに移動し、当該領域A内のブロックを通過して、当該ブロックの順序を決定する。Z=3のX−Y平面の領域Aの全てのブロックの順序(13〜16)を決定した後、そのX−Y平面において、隣接する領域Bへ移動し、領域BにおいてZ=3、Z=2、Z=1、Z=0の順に各X−Y平面を通過して、領域B内のブロックの順序(17〜32)を決定する。Z=0の領域Bを通過し終えたら、Z=0のX−Y平面において領域Cに移動し、同様にZ=0、Z=1、Z=2、Z=3の順に各X−Y平面の領域Cを通過する。最後にZ=3、Z=2、Z=1、Z=0の順に各X−Y平面の領域Dを通過して開始位置に戻る。
領域を一つの格子と考えると、図3の手順で作成されるノードの並べ方を領域の並べ方に適用することができる。これによって、X−Y平面内で異なる領域を通過順に隣接させることが可能である(なお、格子の一辺が4の倍数のときのみ、図3の手順が実行可能であり、図23は最小サイズのケースを示し、図3の手順が適用されている)。このため、Z=0及びZ=3で異なる領域に移動する場合、移動先の領域が隣接することが保障される。また、Z座標が変化する場合、領域のX−Y平面上の位置は変化しないので、移動先の格子点が隣接することが保障される。
領域内の移動については、領域の左上から開始する場合、2通りの通過方法が考えられる。領域が左又は下に移動する場合、図24Aに示す通過方法を採用すれば、領域間移動の際に必ず隣接する格子点を移動することができる。同様に、領域が右又は上に移動する場合、図24Bに示す通過方法を採用すれば、領域間移動の際に必ず隣接する格子点を移動することができる。
以上により、X−Y平面の1辺のサイズが4の倍数である場合、前述した手順によって、仮想リング上の隣接ノードがネットワーク的に隣接するような仮想リングを3次元格子上に作成できる。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。

Claims (19)

  1. 二次元以上の格子型ネットワーク上にConsistent Hashの仮想リングを生成し、前記生成された仮想リング上にハッシュ値が割り当てられた複数のノードが配置される分散処理システムであって、
    前記分散処理システムは、前記複数のノードを接続する格子型ネットワークを有し、
    前記複数のノードは少なくとも計算資源を有し、
    前記仮想リング上で隣接する位置に配置されるノードは、前記格子型ネットワーク内において、他のノードを経由しないで通信可能な位置に配置されることを特徴とする分散処理システム。
  2. 請求項1に記載の分散処理システムであって、
    前記ノードは、前記格子型ネットワークに接続されるルータと、前記計算資源を有する計算機とを有し、
    前記ルータは、前記格子型ネットワークのセグメント間を接続する格子点に配置され、
    前記仮想リングを構成する計算機は前記各ルータに接続されることを特徴とする分散処理システム。
  3. 請求項2に記載の分散処理システムであって、
    前記計算機のうち、前記仮想リング上で連続して配置される三つの計算機は、同一のデータを格納し、
    当該三つの計算機は、各々、異なる前記ルータに接続されることを特徴とする分散処理システム。
  4. 請求項2に記載の分散処理システムであって、
    前記仮想リング上で第1の計算機と第2の計算機との間に第3の計算機を追加する場合、前記第1の計算機と前記第2の計算機との両方が接続されるネットワークセグメント上のルータに前記第3の計算機を配置することを特徴とする分散処理システム。
  5. 請求項2に記載の分散処理システムであって、
    前記仮想リング上で第1の計算機と第2の計算機との間に第3の計算機を追加する場合、前記第1の計算機と前記の第2計算機との少なくとも一つが接続されるネットワークセグメント上のルータに前記第3の計算機を配置することを特徴とする分散処理システム。
  6. 請求項1に記載の分散処理システムであって、
    前記ノードは、異なるネットワークセグメント間でのデータ転送機能及び前記計算資源を有する計算機によって構成され、
    前記仮想リング上で、第1の計算機と第2の計算機との間に、第3の計算機を追加する場合、前記第1の計算機と前記第2の計算機との両方が接続されるネットワークセグメント上に前記第3の計算機を配置することを特徴とする分散処理システム。
  7. 請求項1に記載の分散処理システムであって、
    前記格子型ネットワークは、少なくとも、第1のネットワークセグメントと、前記第1のネットワークセグメントと交差するように配置される第2のネットワークセグメントとを含み、
    前記複数のノードは、前記仮想リング上に配置される第1のノードと、前記仮想リング上で前記第1のノードの次の位置に配置される第2のノードと、前記仮想リング上で前記第2のノードの次の位置に配置される第3のノードと、を含み、
    前記第1のノードと前記第2のノードとは前記第1のネットワークセグメントに接続され、前記第2のノードと前記第3のノードとは前記第2のネットワークセグメントに接続されることを特徴とする分散処理システム。
  8. 請求項1に記載の分散処理システムであって、
    前記格子型ネットワークは、少なくとも、第1軸の方向に延伸する第1のネットワークセグメントと、前記第1軸と交差する第2軸の方向に延伸する第2のネットワークセグメントとを含み、
    前記複数のノードは、前記仮想リング上に配置される第1のノードと、前記仮想リング上で前記第1のノードの次の位置に配置される第2のノードと、前記仮想リング上で前記第2のノードの次の位置に配置される第3ノードと、を含み、
    前記第2のノードは、前記第1軸の方向で前記第1のノードと隣接する位置に配置され、
    前記第3のノードは、前記第2軸の方向で前記第2のノードと隣接する位置に配置されることを特徴とする分散処理システム。
  9. 請求項8に記載の分散処理システムであって、
    前記第2のノードは、第1軸の方向で前記第1のノードと隣接する位置に配置され、
    前記第3のノードは、前記第2軸のある方向で前記第2のノードと隣接する位置に既に他のノードが割り当てられている場合、前記第2軸の逆の方向で前記第2のノードと隣接する位置に配置されることを特徴とする分散処理システム。
  10. 請求項1に記載の分散処理システムであって、
    前記各ノードと隣接するノードが前記格子型ネットワークの各軸上に同数配置されることを特徴とする分散処理システム。
  11. 請求項1に記載の分散処理システムであって、
    前記格子型ネットワーク上の位置を示す座標要素の一つのみが一致しないノードをトーラス結合することを特徴とする分散処理システム。
  12. 請求項1に記載の分散処理システムであって、
    前記ノードのうち、前記仮想リング上で連続して配置される第1のノード、第2のノード及び第3のノードには、同一のデータが格納されており、
    クライアント計算機は、前記分散処理システムにデータを書き込む場合、前記仮想リング上で前記第1のノードと前記第3のノードの間に位置する第2のノードにデータを送信し、
    前記第2のノードは、前記第1のノード及び前記第3のノードに、前記クライアント計算機から受信したデータを送信することを特徴とする分散処理システム。
  13. 前記仮想リング上で連続して配置される三つのノードには、同一のデータが格納されており、
    クライアント計算機は、前記分散処理システムにデータを書き込む場合、前記クライアント計算機からネットワーク上最も近い位置に配置された前記ノードにデータを送信し、
    前記書き込まれるデータを受信したノードは、前記三つのノードのうち他のノードに、前記受信したデータを送信することを特徴とする分散処理システム。
  14. 二次元以上の格子型ネットワーク上にConsistent Hashの仮想リングを生成し、前記生成された仮想リング上に複数のノードが配置された分散処理システムにおけるノードの配置方法であって、
    前記分散処理システムは、前記複数のノードを接続する格子型ネットワーク、及び、前記ノードの配置を決定する計算機を有し、
    前記複数のノードは少なくとも計算資源を有し、
    前記方法は、
    前記計算機が、ノードの識別子を加算することによって、前記仮想リング上で次の位置に配置されるノードを決定し、
    前記計算機が、前記決定されたノードを、前記格子型ネットワーク内において他のノードを経由しないで通信可能な位置に配置するように、前記次の位置に配置されるノードの位置を決定することを特徴とするノードの配置方法。
  15. 請求項14に記載のノードの配置方法であって、
    前記仮想リング上で第1のノードと第2のノードとの間に第3のノードを追加する場合、前記計算機が、前記第1のノードと前記第2のノードとの両方が接続されるネットワークセグメント上のルータに前記第3のノードが配置されるように、前記追加される第3のノードの位置を決定することを特徴とするノードの配置方法。
  16. 請求項14に記載のノードの配置方法であって、
    前記仮想リング上で第1のノードと第2のノードとの間に第3のノードを追加する場合、前記計算機が、前記第1のノードと前記第2のノードとの少なくとも一つが接続されるネットワークセグメント上のルータに前記第3のノードが配置されるように、前記追加される第3のノードの位置を決定することを特徴とするノードの配置方法。
  17. 請求項14に記載のノードの配置方法であって、
    前記ノードは、異なるセグメント間でデータ転送機能を有し、
    前記仮想リング上で第1のノードと第2のノードとの間に第3のノードを追加する場合、前記第1のノードと前記第2のノードとの両方が接続されるネットワークセグメント上に前記第3のノードが配置されるように、前記追加される第3のノードの位置を決定することを特徴とするノードの配置方法。
  18. 請求項14に記載のノードの配置方法であって、
    前記格子型ネットワークは、少なくとも、第1軸の方向に延伸する第1のネットワークセグメントと、前記第1軸と交差する第2軸の方向に延伸する第2のネットワークセグメントとを含み、
    前記複数のノードは、前記仮想リング上に配置される第1のノードと、前記仮想リング上で前記第1のノードの次の位置に配置される第2のノードと、前記仮想リング上で前記第2ノードの次の位置に配置される第3のノードと、を含み、
    前記第1軸の方向で前記第1のノードと隣接する位置に前記第2のノードが配置され、前記第2軸の方向で前記第2のノードと隣接する位置に前記第3のノードが配置されるように、前記各ノードの位置を決定することを特徴とするノードの配置方法。
  19. 請求項18に記載のノードの配置方法であって、
    第1軸の方向で前記第1のノードと隣接する位置に前記第2のノードが配置され、
    前記第2軸のある方向で前記第2のノードと隣接する位置に既に他のノードが割り当てられている場合、前記第2軸の逆の方向で前記第2のノードと隣接する位置に前記第3のノードが配置されるように、前記各ノードの位置を決定することを特徴とするノードの配置方法。
JP2012536103A 2010-10-01 2010-10-01 分散処理システム及び分散処理システムにおけるノードの配置方法 Expired - Fee Related JP5563090B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/067208 WO2012042658A1 (ja) 2010-10-01 2010-10-01 分散処理システム及び分散処理システムにおけるノードの配置方法

Publications (2)

Publication Number Publication Date
JPWO2012042658A1 true JPWO2012042658A1 (ja) 2014-02-03
JP5563090B2 JP5563090B2 (ja) 2014-07-30

Family

ID=45892162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012536103A Expired - Fee Related JP5563090B2 (ja) 2010-10-01 2010-10-01 分散処理システム及び分散処理システムにおけるノードの配置方法

Country Status (3)

Country Link
US (1) US20130191437A1 (ja)
JP (1) JP5563090B2 (ja)
WO (1) WO2012042658A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9119705B2 (en) 1998-06-08 2015-09-01 Thermotek, Inc. Method and system for thermal and compression therapy relative to the prevention of deep vein thrombosis
US8574278B2 (en) 2006-05-09 2013-11-05 Thermotek, Inc. Wound care method and system with one or both of vacuum-light therapy and thermally augmented oxygenation
US8128672B2 (en) 2006-05-09 2012-03-06 Thermotek, Inc. Wound care method and system with one or both of vacuum-light therapy and thermally augmented oxygenation
US10016583B2 (en) 2013-03-11 2018-07-10 Thermotek, Inc. Wound care and infusion method and system utilizing a thermally-treated therapeutic agent
US10765785B2 (en) 2004-07-19 2020-09-08 Thermotek, Inc. Wound care and infusion method and system utilizing a therapeutic agent
US10512587B2 (en) 2011-07-27 2019-12-24 Thermotek, Inc. Method and apparatus for scalp thermal treatment
WO2013162728A1 (en) 2012-04-24 2013-10-31 Thermotek, Inc. Method and system for therapeutic use of ultra-violet light
US9559919B2 (en) * 2013-03-07 2017-01-31 Brocade Communications Systems, Inc. Display of port transmit and receive parameters sorted by higher of transmit or receive value
US10300180B1 (en) 2013-03-11 2019-05-28 Thermotek, Inc. Wound care and infusion method and system utilizing a therapeutic agent
US9669233B2 (en) 2013-11-11 2017-06-06 Thermotek, Inc. Method and system for wound care
US10019452B2 (en) 2015-05-19 2018-07-10 Morgan Stanley Topology aware distributed storage system
US11531637B2 (en) * 2020-03-26 2022-12-20 Graphcore Limited Embedding rings on a toroid computer network
CN115297131B (zh) * 2022-08-01 2023-05-26 东北大学 一种基于一致性哈希的敏感数据分布式储存方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2880880B2 (ja) * 1993-08-18 1999-04-12 株式会社東芝 データマッピング方法
US6430618B1 (en) * 1998-03-13 2002-08-06 Massachusetts Institute Of Technology Method and apparatus for distributing requests among a plurality of resources
CA2236394C (en) * 1998-04-30 2003-01-21 Frederick C. Livermore Programmable transport and network architecture
JP4409604B2 (ja) * 2008-01-15 2010-02-03 株式会社東芝 オーバーレイネットワーク構築・維持方法及びプログラム
JP5078034B2 (ja) * 2008-02-08 2012-11-21 株式会社リコー 通信装置、p2pネットワーク構築方法、プログラムおよび記録媒体
US8122217B2 (en) * 2009-05-06 2012-02-21 International Business Machines Corporation Method of a full coverage low power mode for storage systems storing replicated data items
US8819076B2 (en) * 2010-08-05 2014-08-26 Wavemarket, Inc. Distributed multidimensional range search system and method
US8972366B2 (en) * 2010-09-29 2015-03-03 Red Hat, Inc. Cloud-based directory system based on hashed values of parent and child storage locations

Also Published As

Publication number Publication date
JP5563090B2 (ja) 2014-07-30
WO2012042658A1 (ja) 2012-04-05
US20130191437A1 (en) 2013-07-25

Similar Documents

Publication Publication Date Title
JP5563090B2 (ja) 分散処理システム及び分散処理システムにおけるノードの配置方法
US10397139B2 (en) Storage device in which forwarding-function-equipped memory nodes are mutually connected and data processing method
EP3349132A1 (en) A distributed object storage
JP5931196B2 (ja) I/oノード及び複数の計算ノードに備えられたキャッシュメモリの制御方法
US20130031229A1 (en) Traffic reduction method for distributed key-value store
WO2015078194A1 (zh) 一种哈希数据库的配置方法和装置
CN109918021B (zh) 数据处理方法和装置
CN107111481A (zh) 分布式主动混合存储系统
CN111164587A (zh) 共享存储数据库系统中的路由请求
WO2004055675A1 (ja) ファイル管理装置、ファイル管理プログラム、ファイル管理方法およびファイルシステム
JP6338257B2 (ja) ネットワーク要素データアクセス方法および装置、およびネットワーク管理システム
CN107908713B (zh) 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法
JP2007317138A (ja) データ記憶システム、ファイル検索装置およびプログラム
US20120151175A1 (en) Memory apparatus for collective volume memory and method for managing metadata thereof
JP5949561B2 (ja) 情報処理装置、情報処理システム、情報処理方法および情報処理プログラム
CN113542013B (zh) 虚拟化网络功能管理消息分配方法、装置及设备
JP2024514467A (ja) 地理的に分散されたハイブリッドクラウドクラスタ
JP5803908B2 (ja) ストレージシステム及びストレージシステムの制御方法
CN112231058A (zh) 一种突破numa拓扑限制创建云主机的方法及装置
WO2019149031A1 (zh) 应用于节点系统的数据处理方法及装置
CN115878046B (zh) 数据处理方法、系统、装置、存储介质及电子设备
JP7458610B2 (ja) データベースシステム、及びクエリ実行方法
JP5965353B2 (ja) アドレス解決システム及び方法
JP2018005456A (ja) イメージ配信プログラム、イメージ配信装置およびイメージ配信方法
CN117201516A (zh) 数据处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140508

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140611

R150 Certificate of patent or registration of utility model

Ref document number: 5563090

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees