(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022180956
(43)【公開日】2022-12-07
(54)【発明の名称】情報処理装置,プログラム及び情報処理方法
(51)【国際特許分類】
G06F 16/182 20190101AFI20221130BHJP
G06F 13/00 20060101ALI20221130BHJP
【FI】
G06F16/182
G06F13/00 357Z
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021087751
(22)【出願日】2021-05-25
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【弁理士】
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【弁理士】
【氏名又は名称】横田 功
(72)【発明者】
【氏名】前田 宗則
【テーマコード(参考)】
5B089
【Fターム(参考)】
5B089GA12
5B089GA19
5B089GA21
5B089GB01
5B089HA10
5B089JA12
5B089KA06
(57)【要約】
【課題】分散データストアの性能を向上させる。
【解決手段】複数のストレージノード101と1以上のプロキシ102と1以上のクライアント103とが接続されるネットワークにおいて、アクセス経路に1以上のプロキシ102を挟んで最も実行されている1以上のクライアント103のアクセス情報を収集し、アクセス情報に基づいて、複数のストレージノード101と1以上のプロキシ102との間のそれぞれのネットワーク距離とを算出し、ネットワーク距離に基づき、複数のストレージノード101の中から、最もアクセス頻度が高いプロキシ102に近いストレージノード101をリーダとして決定する、プロセッサを備える。
【選択図】
図3
【特許請求の範囲】
【請求項1】
複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、
アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記1以上のクライアントのアクセス情報を収集し、
前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、
前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定する、
プロセッサを備える、情報処理装置。
【請求項2】
前記アクセス情報は、前記ネットワーク距離を算出するための、前記複数のストレージノードと前記1以上のプロキシとの間における静的なパラメータ及び動的なパラメータを含む、
請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、前記クライアントによってアクセス性能値が要件を満たさないと判定された場合に、前記リーダを決定する、
請求項1又は2に記載の情報処理装置。
【請求項4】
前記プロセッサは、前記クライアントによって前記複数のストレージノードの拠点変更のための要件が満たされると判定された場合に、前記リーダを決定する、
請求項1~3のいずれか一項に記載の情報処理装置。
【請求項5】
複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、
アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記1以上のクライアントのアクセス情報を収集し、
前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、
前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定する、
処理をコンピュータに実行させる、プログラム。
【請求項6】
複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、
アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記1以上のクライアントのアクセス情報を収集し、
前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、
前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定する、
処理をコンピュータが実行する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置,プログラム及び情報処理方法に関する。
【背景技術】
【0002】
クラウド上においてサーバレスコンピューティングが利用されることがある。サーバレスコンピューティングは、ノード貸しのような従来のクラウドコンピューティングの枠を脱し、ファンクションと呼ばれる処理単位がハードウェアリソースを意識することなく自在に動作するものである。これによってクラウド側はハードウェアを余すところなく使えるようになり、また、ユーザはファンクションへのリクエスト数で従量課金されるため、スモールスタートしやすくなる。
【0003】
サーバレスコンピューティングでは、永続化したいデータの取り扱いが課題となる場合がある。ファンクションはどこで動作するか本質的に指定できないため、従来は世界中のどこからでも接続できるパブリッククラウドストレージサービスを使うことが一般的である。パブリッククラウドストレージは永続性、可用性は優れているが、安価なストレージは応答時間(別言すれば、レイテンシ)が長かったり、クラウドのDatabase(DB)は費用が高くスケールアップは即応性がなかったりする。
【0004】
そこで、サーバレスコンピューティング向け永続化データのストレージとして、近年、分散データストアが登場してきた。分散データストアはDBの機能(原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、永続性(Durability)=ACID)をマルチクラウド、マルチクラスタ環境のような広域に渡る計算環境で実現するものである。
【0005】
一般的な分散データストアは、N台(N>2)のサーバから構成されており、各サーバは離れた拠点(例えば、データセンタ)に置かれていて、一部のサーバやネットワークが故障しても、残りのサーバでサービスを継続できる。サーバレスコンピューティング向けの分散データストアでは、ファンクションの実行場所が変化するため、ファンクションの実行場所からの応答時間が短くなるような構成変更(別言すれば、サーバ配置拠点)が実施される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許公開公報第2016/0098225号
【特許文献2】特開2009-151403号公報
【特許文献3】国際公開第2014/188682号
【発明の概要】
【発明が解決しようとする課題】
【0007】
分散データストアでは構成変更は可能だが、構成変更している最中に、複数のサーバがリーダ役を自任することでDBの一貫性が壊れるスプリットブレインという状況が生じるおそれがある。スプリットブレインを避けるためサービスを一時停止させてから構成変更を行うことが想定されるが、サービスを一時停止させると可用性の問題を引き起こす。また、コンセンサスアルゴリズムを用いてスプリットブレイン回避と可用性とを両立させることも想定されるが、リーダは常にサーバ間の選挙で決まるため、ファンクションの実行場所から近い保証がない。
【0008】
1つの側面では、分散データストアの性能を向上させることを目的とする。
【課題を解決するための手段】
【0009】
1つの側面では、情報処理装置は、複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記1以上のクライアントのアクセス情報を収集し、前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定するプロセッサを備える。
【発明の効果】
【0010】
1つの側面では、分散データストアの性能を向上できる。
【図面の簡単な説明】
【0011】
【
図1】実施形態におけるコンピュータ装置のハードウェア構成例を模式的に示すブロック図である。
【
図2】実施形態における分散データストアシステムの構成例を模式的に示すブロック図である。
【
図3】
図2に示した分散データストアシステムの構成例を簡単に示す図である。
【
図4】
図3に示した分散データストアシステムにおけるSパラメータのうちラウンドトリップタイムを例示するテーブルである。
【
図5】
図3に示した分散データストアシステムにおけるSパラメータのうちアップロード帯域幅を例示するテーブルである。
【
図6】
図3に示した分散データストアシステムにおけるSパラメータのうちダウンロード帯域幅を例示するテーブルである。
【
図7】
図3に示した分散データストアシステムにおけるSパラメータのうちメッセージレートを例示するテーブルである。
【
図8】
図3に示した分散データストアシステムにおけるSパラメータのうち上り下り帯域幅を例示するテーブルである。
【
図9】
図3に示した分散データストアシステムにおけるDパラメータのダウンロード(下り)の帯域幅を示すテーブルである。
【
図10】
図3に示した分散データストアシステムにおけるDパラメータのうち転送データ量を示すテーブルである。
【
図11】
図3に示した分散データストアシステムにおいてリーダノードを決定するためのテーブルである。
【
図12】
図3に示した分散データストアシステムにおいてストレージノードの構成を決定するためのテーブルである。
【
図13】
図3に示した分散データストアシステムにおいてネットワーク距離を算出するためのテーブルである。
【
図14】実施形態におけるクライアントサイドの性能監視処理の第1の例を説明するフローチャートである。
【
図15】実施形態における管理装置のリーダ見直し処理の第1の例を説明するフローチャートである。
【
図16】実施形態におけるストレージノードのリーダ見直し処理の第1の例を説明するフローチャートである。
【
図17】実施形態におけるストレージノードのリーダ見直し処理の第2の例を説明するフローチャートである。
【
図18】実施形態におけるクライアントサイドの性能監視処理の第2の例を説明するフローチャートである。
【
図19】実施形態における管理装置のリーダ見直し処理の第2の例を説明するフローチャートである。
【発明を実施するための形態】
【0012】
〔A〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0013】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0014】
〔A-1〕構成例
図1は、実施形態におけるコンピュータ装置1のハードウェア構成例を模式的に示すブロック図である。
【0015】
コンピュータ装置1は、情報処理装置10,表示装置15及びドライブ装置16を備える。
【0016】
情報処理装置10は、プロセッサ11,メモリ12,ストレージデバイス13及びネットワークデバイス14を備える。
【0017】
プロセッサ11は、例示的に、種々の制御や演算を行なう処理装置であり、メモリ12に格納されたOperating System(OS)やプログラムを実行することにより、種々の機能を実現する。
【0018】
なお、プロセッサ11の機能を実現するためのプログラムは、例えばフレキシブルディスク、CD(CD-ROM、CD-R、CD-RW等)、DVD(DVD-ROM、DVD-RAM、DVD-R、DVD+R、DVD-RW、DVD+RW、HD DVD等)、ブルーレイディスク、磁気ディスク、光ディスク、光磁気ディスク等の、コンピュータ読取可能な記録媒体に記録された形態で提供されてよい。そして、コンピュータ(本実施形態ではプロセッサ11)は上述した記録媒体から図示しない読取装置を介してプログラムを読み取って内部記録装置または外部記録装置に転送し格納して用いてよい。また、プログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、記憶装置から通信経路を介してコンピュータに提供してもよい。
【0019】
プロセッサ11の機能を実現する際には、内部記憶装置(本実施形態ではメモリ12)に格納されたプログラムがコンピュータ(本実施形態ではプロセッサ11)によって実行されてよい。また、記録媒体に記録されたプログラムをコンピュータが読み取って実行してもよい。
【0020】
プロセッサ11は、情報処理装置10全体の動作を制御する。プロセッサ11は、マルチプロセッサであってもよい。プロセッサ11は、例えばCentral Processing Unit(CPU)やMicro Processing Unit(MPU),Digital Signal Processor(DSP),Application Specific Integrated Circuit(ASIC),Programmable Logic Device(PLD),Field Programmable Gate Array(FPGA)のいずれか一つであってもよい。また、プロセッサ11は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0021】
メモリ12は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。RAMは、例えばDynamic RAM(DRAM)であってよい。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、プロセッサ11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
【0022】
ストレージデバイス13は、例示的に、データを読み書き可能に記憶する装置であり、例えば、Solid State Drive(SSD)131やSerial Attached SCSI-Hard Disk Drive(SAS-HDD)132,不図示のStorage Class Memory(SCM)が用いられてよい。
【0023】
ネットワークデバイス14は、情報処理装置10をインターコネクトによってネットワークスイッチ2と接続し、このネットワークスイッチ2を介してインターネット3(
図2等を用いて後述)等のネットワークと通信を行なうためのインタフェース装置である。ネットワークデバイス14としては、例えば、有線Local Area Network(LAN)や無線LAN,Wireless Wide Area Network(WWAN)のネットワークの規格に対応する各種インタフェースカードを用いることができる。
【0024】
表示装置15は、液晶ディスプレイやOrganic Light-Emitting Diode(OLED)ディスプレイ,Cathode Ray Tube(CRT),電子ペーパーディスプレイ等であり、オペレータ等に対する各種情報を表示する。
【0025】
ドライブ装置16は、記録媒体が装着可能に構成される。ドライブ装置16は、記録媒体が装着された状態において、記録媒体に記録されている情報を読み取り可能に構成される。本例では、記録媒体は可搬性を有する。例えば、記録媒体は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
【0026】
図2は、実施形態における分散データストアシステム100の構成例を模式的に示すブロック図である。
【0027】
分散データストアシステム100は、複数(
図2に示す例では9つ)のコンピュータ装置1(別言すれば、コンピュータ装置#1~#9)を備える。
【0028】
コンピュータ装置#1,#2は、それぞれ別のデータセンタに設置され、いずれもストレージノード101(
図3等を用いて後述)として機能してよい。コンピュータ装置#3,#4は1つのデータセンタに設置され、コンピュータ装置#3,#4も1つのデータセンタに設置されると共に、コンピュータ装置#3~#6はいずれもプロキシ102(
図3等を用いて後述)として機能してよい。コンピュータ装置#7~#9はクライアント103(
図3等を用いて後述)として機能し、具体的には、コンピュータ装置#7はオンプレミスとして機能し、コンピュータ装置#8はエッジとして機能し、コンピュータ装置#9はRemote Office Branch Office(ROBO)として機能してよい。
【0029】
ストレージノードとしてのコンピュータ装置1間、及び、ストレージノードとしてのコンピュータ装置1とプロキシとしてのコンピュータ装置1との間は、専用線を介して接続される。また、プロキシとしてのコンピュータ装置1とクライアントとしてのコンピュータ装置1との間は、インターネット3を介して接続される。なお、インターネット3は、
Wide Area Network(WAN)等の他の種類のネットワークであってもよい。
【0030】
図3は、
図2に示した分散データストアシステム100の構成例を簡単に示す図である。
【0031】
図3に示す例において、n個のストレージノード101は、拠点#1,・・・,拠点#m,・・・,拠点#nのそれぞれに設置されている。また、各ストレージノード101には、3つのプロキシ102(別言すれば、代表URL)が接続されている。更に、各プロキシ102には、インターネット3を介して、3つのクライアント103がそれぞれ接続されている。
【0032】
図3に示すように、ストレージノード101に対しては、管理装置104が接続される。管理装置104は、ストレージノード101の中のリーダ(
図1に示す例では拠点#1のストレージノード101)の定期的な見直しと、クライアント通信の監視と、クライアント103からの要請の処理とを実行する。
【0033】
ストレージノード101とプロキシ102とクライアント103とは、別の拠点にあってよい。なお、同一拠点で運用することもできるが、その場合はフォールトドメインを意識して配置する。フォールトドメインとは単一障害点を共有するハードウェアセットのことである。
【0034】
プロキシ102は、複数存在し、クライアント103とストレージノード101との間を接続し中継する。プロキシ102は、広域に分散しており、かつ、URLはクライアント103に公開されている。1つのURLは、少なくとも1つのノードに対応する。ただし、負荷分散のため、同一拠点内の複数ノードが構成されてもよい。その場合は、DNSで複数のIPアドレスのどれかに解決されてよい。プロキシ102ごとに、ストレージノード101へのレイテンシや帯域幅は異なる。プロキシ102が複数ノードで構成されている場合でも、その傾向(平均値等)は大きくは変わらない。プロキシ102ごとに、アクセスカウンタ又は上り下り転送データサイズがモニタリングされ、直近のΔ期間の値がプロキシ102へのアクセスにより取得されてよい。
【0035】
クライアント103は、広域に分散し、予めプロキシ102とのラウンドトリップや上り下り帯域幅が測定され、自分から近いプロキシ102(別言すれば、URL)を選んで接続する。
【0036】
管理装置104としての機能は、プロキシ102又はストレージノード101のいずれかが有してもよい。管理装置104は、プロキシ102とストレージノード101の両方にアクセス可能であり、RaftアルゴリズムやPaxosアルゴリズムを用いてマルチノードを多数決ベースで使用することもできる。
【0037】
管理装置104は、リーダとしてのストレージノード101の選挙の開始にあたり、クライアント103のサービスレベルアグリーメント(SLA)に基づく監視又は定期実行に基づき、リーダ見直し処理の実行を行う。
【0038】
管理装置104は、リーダ見直し処理において、Sパラメータ(
図4~
図8等を用いて後述)を取得し、Dパラメータ(
図9及び
図10等を用いて後述)を取得する。次に、管理装置104は、ネットワーク(NW)距離を計算してLeader_newを求め、自分の知るリーダにTriggerElectionRPCを送信する。TriggerElectionRPCは、Leader_newの情報をデータとして持つ。
【0039】
TriggerElectionRPCを受け取ったストレージノード101は、自分がリーダである場合は、了承=ACK(true)を返答する。一方、TriggerElectionRPCを受け取ったストレージノード101は、自分がリーダでない場合には、拒否=NACK(false)及び自分が知るリーダ情報を返答する。
【0040】
管理装置104は、ストレージノード101から拒否が返信された場合には、返信データにあるリーダを管理装置104の知るリーダに設定し、再度、当該ストレージノード101にTriggerElectionRPCを送信する。
【0041】
TriggerElectionRPCを受信したリーダとしてのストレージノード101は、Leader_newとなるfollowerに対するハートビート(AppendEntryRPC)の送信を、ハートビート受信のタイムアウト時間+マージン分まで一時停止する。なお、ストレージノード101は、AppendEntryRPCがタイムアウト時間まで未配になることで、自律的にリーダに立候補する。
【0042】
ここで、AppendEntryRPCとは、Raftアルゴリズムで使用されるRPCの1つであり、リーダからfollowerへのハートビートメッセージであるとともに、データレプリケーションのメッセージである。
【0043】
リーダ見直し処理は、以下の方法で実行されてもよい。
【0044】
各ストレージノード101は、タイマを用いて定期的にリーダ見直し処理を開始する。
【0045】
各ストレージノード101は、自分がleader又はノード状態がcandidateならば処理を終了する。
【0046】
一方、各ストレージノード101は、自分がleaderでなく、且つ、ノード状態がcandidateでないならば、Sパラメータを取得し、Dパラメータを取得する。次に、各ストレージノード101は、NW距離を計算し、Leader_newを求める。各ストレージノード101は、自分がLeader_newでないならば、自分はfollowerかつ候補ノードであるためcandidateに状態変更する。以降は、上述したRaftアルゴリズムによるリーダ選挙と同じ処理が実行される。すなわち、RequestVoteRPCが全ストレージノード101に送信され、全体の過半数のノードから承認が得られれば、新リーダが選出される。
【0047】
ここで、RequestVoteRPCとは、Raftアルゴリズムで使用されるRPCの1つであり、RPC送信ノードsが受信ノードrにリーダ選挙で送信ノードsに投票することを依頼するものである。
【0048】
管理装置104は、各ストレージノード101の拠点割り当てを変更する構成管理サーバとして機能してもよい。構成管理サーバとしての機能は、いずれかのストレージノード101に割り当てられてもよい。構成管理サーバは、プロキシ102とストレージノード101との両方にアクセスできる。構成管理サーバは、信頼性を高めるため、RaftアルゴリズムやPaxosアルゴリズムを用いて、マルチノードを多数決ベースで使用することもできる。
【0049】
管理装置104は、構成管理サーバとして機能する際に、クライアント103のサービスレベルアグリーメント(SLA)に基づく監視、又は、定期実行に基づき、以下の拠点割り当て変更の実行を行う。
【0050】
管理装置104は、Sパラメータを取得し、Dパラメータを取得する。次に、管理装置104は、NW距離を計算し、ストレージノードセットとLeader_newとを決定する。ストレージノードセットが現在のストレージノードセットと同じなら、拠点割り当ての変更は不要なので、終了する。なお、Leader_newが現在のリーダと異なるなら、上述したリーダ見直し処理が実行さる。
【0051】
管理装置104は、Raftアルゴリズムのjointコンセンサス手続きを実行する。具体的には、古い(切り替え前)ノードセットをC1、新しい(切り替え後)ノードセットをC2、新旧ノードセットの和集合をC1UC2とするとき、C1から、C1UC2の構成を経て、C2の構成に遷移する。そして、管理装置104は、新構成に変化後、リーダ見直し処理を実行し、Leader_newを選択する。
【0052】
別言すれば、情報処理装置10は、アクセス経路に1以上のプロキシ102を挟んで最も実行されている1以上のクライアント103のアクセス情報を収集する。情報処理装置10は、アクセス情報に基づいて、複数のストレージノード101と1以上のプロキシ102との間のそれぞれのネットワーク距離とを算出する。情報処理装置10は、ネットワーク距離に基づき、複数のストレージノード101の中から、最もアクセス頻度が高いプロキシに近いストレージノード101をリーダとして決定する。
【0053】
アクセス情報は、ネットワーク距離を算出するための、複数のストレージノード101と1以上のプロキシ102との間における静的なパラメータ及び動的なパラメータを含んでよい。
【0054】
情報処理装置10は、クライアント103によってアクセス性能値が要件を満たさないと判定された場合に、リーダを決定してよい。また、情報処理装置10は、クライアント103によって複数のストレージノード101の拠点変更のための要件が満たされると判定された場合に、リーダを決定してよい。
【0055】
図4は、
図3に示した分散データストアシステム100におけるSパラメータのうちラウンドトリップタイム(RTT)を例示するテーブルである。
【0056】
ここで、Sパラメータとは、ほぼ静的なパラメータである。Sパラメータは、事前又は適宜測定して求められてよい。Sパラメータは、完全な定数ではなく、見直し頻度が後述するDパラメータよりも非常に低いパラメータである。
【0057】
図4に示すラウンドトリップタイムには、各ストレージノード101(SN#1~#n)から各プロキシ102(プロキシ#1~#3)に対するラウンドトリップタイムが登録されている。
【0058】
例えば、SN#1において、プロキシ#1に対するラウンドトリップタイムは10ミリ秒であり、プロキシ#2に対するラウンドトリップタイムは100ミリ秒であり、プロキシ#3に対するラウンドトリップタイムは180ミリ秒である。
【0059】
図5は、
図3に示した分散データストアシステム100におけるSパラメータのうちアップロード(上り)帯域幅を例示するテーブルである。
【0060】
図5に示すアップロード帯域幅には、各プロキシ102(プロキシ#1~#3)から各ストレージノード101(SN#1~#n)に対するアップロード帯域幅が登録されている。
【0061】
例えば、SN#1において、プロキシ#1からのアップロード帯域幅は500MB/sであり、プロキシ#2からのアップロード帯域幅は600MB/sであり、プロキシ#3からのアップロード帯域幅は900MB/sである。
【0062】
図6は、
図3に示した分散データストアシステム100におけるSパラメータのうちダウンロード(下り)帯域幅を例示するテーブルである。
【0063】
図6に示すダウンロード帯域幅には、各ストレージノード101(SN#1~#n)から各プロキシ102(プロキシ#1~#3)に対するダウンロード帯域幅が登録されている。
【0064】
例えば、SN#1において、プロキシ#1に対するダウンロード帯域幅は550MB/sであり、プロキシ#2に対するダウンロード帯域幅は650MB/sであり、プロキシ#3に対するダウンロード帯域幅は950MB/sである。
【0065】
図7は、
図3に示した分散データストアシステム100におけるSパラメータのうちメッセージレート(MR)を例示するテーブルである。
【0066】
図7に示すメッセージレートには、各ストレージノード101(SN#1~#n)間において、毎秒、固定長のメッセージがいくつ処理可能であるかを示すメッセージレートが登録されている。
【0067】
例えば、SN#1において、SN#2との間のメッセージレートはm1,2であり、SN#nとの間のメッセージレートはm1,nである。
【0068】
図8は、
図3に示した分散データストアシステム100におけるSパラメータのうち上り下り帯域幅を例示するテーブルである。
【0069】
図8に示す上り下り帯域幅には、各ストレージノード101(SN#1~#n)間における上り下り帯域幅が登録されている。
【0070】
例えば、SN#1において、SN#2との間の上り下り帯域幅はu1,2であり、SN#nとの間の上り下り帯域幅はu1,nである。
【0071】
図9は、
図3に示した分散データストアシステム100におけるDパラメータのうちのダウンロード(下り)の帯域幅を示すテーブルである。
【0072】
Dパラメータは、動的に変化するパラメータである。
【0073】
図9に示すダウンロードの帯域幅には、各プロキシ102(プロキシ#1~#3)における読み込み割合(R_ratio),書き込み割合(W_ratio)及び読み書き割合(RW_ratio)が登録されている。
【0074】
図9に示す例において、例えば、プロキシ#1に対するRead回数は10であり、Write回数は20であり、RW(読み書き)回数は30である。また、プロキシ#1~#3の合計のRead回数は130であり、Write回数は125であり、RW回数は255である。そこで、プロキシ#1について、R_ratio=10/130,W_ratio=20/125及びRW_ratio=30/255が算出される。
【0075】
図10は、
図3に示した分散データストアシステム100におけるDパラメータのうち転送データ量を示すテーブルである。
【0076】
図10に示す転送データ量には、各プロキシ102(プロキシ#1~#3)における期間Δについての読み込み割合(R_ratio),書き込み割合(W_ratio)及び読み書き割合(RW_ratio)が登録されている。
【0077】
図10に示す例において、例えば、プロキシ#1に対するReadデータ量は100MBであり、Writeデータ量は220MBであり、RW(読み書き)データ量は320MBである。また、プロキシ#1~#3の合計のReadデータ量は310であり、Writeデータ量は1900であり、RWデータ量は2210である。そこで、プロキシ#1について、R_ratio=100/310,W_ratio=220/1900及びRW_ratio=320/2210が算出される。
【0078】
図11は、
図3に示した分散データストアシステム100においてリーダノードを決定するためのテーブルである。
【0079】
ネットワーク距離が計算されることにより、ストレージノード101の拠点を固定した場合に、プロキシ102のアクセス状況からリーダノードが決定されると共に、現在のネットワークの混雑状況とプロキシ102のアクセス状況とからストレージノード101の構成が決定されてよい。
【0080】
リーダノードは、例えば、
図9に示したダウンロードの帯域幅のRW_ratioと
図4に示したラウンドトリップタイムとに基づいて算出されてよい。別言すれば、全クライアント103のRWリクエストの平均RTTをストレージノード101毎に計算するため、SパラメータのRTTとDパラメータのRW_ratioとが使用される。
【0081】
図11に示すように、プロキシ#PにおけるRW_ratioをuPとして、SN#Qとプロキシ#Pとの間のRTTをrQPとした場合に、下記のc1, c2, c3の中で0よりも大きい最小のものが次のリーダノードとして決定されてよい。
【0082】
c1 = r11*u1+r12*u2+r13*u3
c2 = r21*u1+r22*u2+r23*u3
c3 = r31*u1+r32*u2+r33*u3
図12は、
図3に示した分散データストアシステム100においてストレージノード101の構成を決定するためのテーブルである。
【0083】
ネットワークの混み状況を反映させるため、Sパラメータは直前に測定されてよい。3拠点、4拠点、…、N拠点のそれぞれについて、割り当てと距離が求められてよい。
【0084】
以下では、総拠点数(N=4)で3拠点が選択される場合について説明する。
【0085】
ストレージノード101はSN#1~#4の4つであり、3拠点の選び方は(1,2,3)、(1,2,4)、(1,3,4)、(2,3,4)の4通りである。
【0086】
(1,2,3)について、T個のレプリカメッセージの送信時間は、リーダをSN#1にすると、(T/m12+T/m13)である。Tを1とすると、
図12に示すテーブルにおいてf1=(1/m12+1/m13)が算出される。また、プロキシ102とのネットワーク距離は、c1 = (r11*u1+r12*u2+r13*u3)と求まる。なお、
図12は、
図7に示したメッセージレートを例示するテーブルに対応する。
【0087】
また、リーダをSN#2にすると、
図12に示すテーブルにおいてf2=(1/m21+1/m23)、プロキシ102とのネットワーク距離c2は、c2 = (r21*u1+r22*u2+r23*u3)と求まる。
【0088】
同様に、リーダをSN#3とした場合のネットワーク距離c3も求まる。
【0089】
図13は、
図3に示した分散データストアシステム100においてネットワーク距離を算出するためのテーブルである。
【0090】
図13において、関数B(距離B)は、F距離とC距離とをパラメータとして、適切な定数で重みづけして加算したものである。
【0091】
関数Bに対する重み付けとしては、例えば、多項式回帰を用いることにより、B(x,y) = a0*x+a1*y+a2*x*x+a3*y*y+a4*x*yが使用されてよい。平均Bは、同じ拠点集合の関数Bの平均値を示す。
【0092】
4拠点以上の場合には、3拠点の場合よりも平均Bは大きくなるが、信頼性が上がる。従って、信頼性を含めて、重み付けを適用することにより、距離(平均Bと信頼性との組)が最小になる拠点の組み合わせが存在する。この組み合わせが拠点割り当ての解となる。
【0093】
〔A-2〕動作例
実施形態におけるクライアント103サイドの性能監視処理の第1の例を、
図14に示すフローチャート(ステップS1~S4)に従って説明する。
【0094】
性能監視処理は、クライアント103自身又はエージェントが行う。エージェントは、クライアント103と同一のサーバ上に存在して動作する、独立したプロセスである。
【0095】
性能監視処理は、一定のインターバル(1分に1回等)の経過や、クライアント103の性能指標(応答時間など)の悪化を契機として開始されてよい。性能値が性能要件を満たさない場合、管理装置104にリーダ見直しリクエストが送信されてよい。
【0096】
クライアント103は、IO性能値vを読み出す(ステップS1)。
【0097】
クライアント103は、IO性能値vが性能要件(SLA)を満たすかを判断する(ステップS2)。
【0098】
IO性能値vが性能要件を満たす場合には(ステップS2のYESルート参照)、処理はステップS4へ進む。
【0099】
一方、IO性能値vが性能要件を満たさない場合には(ステップS2のNOルート参照)、クライアント103は、管理装置104へリーダ見直しリクエストを送信する(ステップS3)。
【0100】
クライアント103は、一定の時間待ち、又は、次の監視契機を待ち(ステップS4)、処理はステップS1へ戻る。
【0101】
次に、実施形態における管理装置104のリーダ見直し処理の第1の例を、
図15に示すフローチャート(ステップS11~S20)に従って説明する。
【0102】
管理装置104は、クライアント103からリーダ見直しリクエストを受信する(ステップS11)。
【0103】
管理装置104は、Sパラメータを取得する(ステップS12)。
【0104】
管理装置104は、Dパラメータを取得する(ステップS13)。
【0105】
管理装置104は、取得したSパラメータ及びDパラメータに基づき、ネットワーク(NW)距離を計算する(ステップS14)。
【0106】
管理装置104は、計算したネットワーク距離に基づき、新しいリーダノードであるLeader_newを決定する(ステップS15)。
【0107】
管理装置104は、現在のリーダノードであるLeader_currを設定する(ステップS16)。
【0108】
管理装置104は、Leader_newを示すTriggerElectionRPCをLeader_currのストレージノード101へ送信する(ステップS17)。
【0109】
管理装置104は、Leader_currのストレージノード101からの応答受信待ちを行う(ステップS18)。
【0110】
管理装置104は、応答結果=ACKであるかを判定する(ステップS19)。
【0111】
応答結果=ACKである場合には(ステップS19のYESルート参照)、リーダ見直し処理は終了する。
【0112】
一方、応答結果=ACKでない場合には(ステップS19のNOルート参照)、管理装置104は、応答結果に含まれている現在のリーダノードをLeader_currに設定して(ステップS20)、処理はステップS17へ戻る。
【0113】
次に、実施形態におけるストレージノード101のリーダ見直し処理の第1の例を、
図16に示すフローチャート(ステップS21~S26)に従って説明する。
【0114】
ストレージノード101は、Leader_newを示すTriggerElectionRPCリクエストを管理装置104から受信する(ステップS21)。
【0115】
ストレージノード101は、自分が現在リーダノードであるかを判定する(ステップS22)。
【0116】
自分が現在リーダノードでない場合には(ステップS22のNOルート参照)、ストレージノード101は、NACK及び現在のリーダを示す情報を管理装置104へ応答する(ステップS23)。そして、リーダ見直し処理は終了する。
【0117】
一方、自分が現在リーダである場合には(ステップS22のYESルート参照)、ストレージノード101は、ACK及び現在のリーダを示す情報を管理装置104へ応答する(ステップS24)。
【0118】
ストレージノード101は、自分がLeader_newであるかを判定する(ステップS25)。
【0119】
自分がLeader_newである場合には(ステップS25のYESルート参照)、リーダ見直し処理は終了する。
【0120】
一方、自分がLeader_newでない場合には(ステップS25のNOルート参照)、Leader_newについてAppendEntryRPCの一時停止設定を行う(ステップS26)。そして、リーダ見直し処理は終了する。
【0121】
次に、実施形態におけるストレージノード101のリーダ見直し処理の第2の例を、
図17に示すフローチャート(ステップS31~S39)に従って説明する。
【0122】
ストレージノード101は、自分がリーダノードであるかを判定する(ステップS31)。
【0123】
自分がリーダノードである場合には(ステップS31のYESルート参照)、リーダ見直し処理は終了する。
【0124】
一方、自分がリーダノードでない場合には(ステップS31のNOルート参照)、ストレージノード101は、状態がCandidateであるかを判定する(ステップS32)。
【0125】
状態がCandidateである場合には(ステップS32のYESルート参照)、リーダ見直し処理は終了する。
【0126】
一方、状態がCandidateでない場合には(ステップS32のNOルート参照)、ストレージノード101は、Sパラメータを取得する(ステップS33)。
【0127】
ストレージノード101は、Dパラメータを取得する(ステップS34)。
【0128】
ストレージノード101は、取得したSパラメータ及びDパラメータに基づき、ネットワーク(NW)距離を計算する(ステップS35)。
【0129】
ストレージノード101は、計算したネットワーク距離に基づき、新しいリーダノードであるLeader_newを決定する(ステップS36)。
【0130】
ストレージノード101は、自分がLeader_newであるかを判定する(ステップS37)。
【0131】
自分がLeader_newでない場合には(ステップS37のNOルート参照)、リーダ見直し処理は終了する。
【0132】
一方、自分がLeader_newである場合には(ステップS37のYESルート参照)、ストレージノード101は、状態をCandidateに変更する(ステップS38)。
【0133】
ストレージノード101は、各ストレージノード101によるリーダノードの選挙を開始する(ステップS39)。そして、リーダ見直し処理は終了する。
【0134】
次に、実施形態におけるクライアント103サイドの拠点変更リクエストのための性能監視処理を、
図18に示すフローチャート(ステップS41~S45)に従って説明する。
【0135】
クライアント103は、IO性能値vを読み出す(ステップS41)。
【0136】
クライアント103は、IO性能値vが性能要件(SLA)を満たすかを判断する(ステップS42)。
【0137】
IO性能値vが性能要件を満たす場合には(ステップS42のYESルート参照)、処理はステップS45へ進む。
【0138】
一方、IO性能値vが性能要件を満たさない場合には(ステップS42のNOルート参照)、クライアント103は、IO性能値vが構成変更条件を満たすかを判定する(ステップS43)。
【0139】
IO性能値vが構成変更条件を満たさない場合には(ステップS43のNOルート参照)、処理はステップS45へ進む。
【0140】
一方、IO性能値vが構成変更条件を満たす場合には(ステップS43のYESルート参照)、クライアント103は、管理装置104へ拠点変更リクエストを送信する(ステップS44)。
【0141】
クライアント103は、一定の時間待ち、又は、次の監視契機を待ち(ステップS45)、処理はステップS41へ戻る。
【0142】
次に、実施形態における管理装置104の拠点変更リクエストに伴うリーダ見直し処理を、
図19に示すフローチャート(ステップS51~S63)に従って説明する。
【0143】
管理装置104は、クライアント103から拠点変更リクエストを受信する(ステップS51)。
【0144】
管理装置104は、Sパラメータを取得する(ステップS52)。
【0145】
管理装置104は、Dパラメータを取得する(ステップS53)。
【0146】
管理装置104は、取得したSパラメータ及びDパラメータに基づき、ネットワーク(NW)距離を計算する(ステップS54)。
【0147】
管理装置104は、計算したネットワーク距離に基づき、ストレージノード101の集合SNS_new及び新しいリーダノードであるLeader_newを決定する(ステップS55)。
【0148】
管理装置104は、現在のストレージノード101の集合であるSNS_Currを設定する(ステップS56)。
【0149】
管理装置104は、SNS_currとSNS_newとが同一であるかを判定する(ステップS57)。
【0150】
SNS_currとSNS_newとが同一である場合には(ステップS57のYESルート参照)、処理はステップS63へ進む。
【0151】
一方、SNS_currとSNS_newとが同一でない場合には(ステップS57のNOルート参照)、管理装置104は、追加集合SNS_addにSNS_new -SNS_currの値を設定する(ステップS58)。
【0152】
管理装置104は、削除集合SNS_dellにSNS_curr- SNS_new の値を設定する(ステップS59)。
【0153】
管理装置104は、追加集合SNS_addの値に基づき、新規ノードを確保する(ステップS60)。
【0154】
管理装置104は、SNS_currとSNS_newとでジョイントコンセンサスを行う(ステップS61)。
【0155】
管理装置104は、削除集合SNS_dellの値に基づき、不要ノードを解放する(ステップS62)。
【0156】
管理装置104は、リーダ見直し処理を実行する(ステップS63)。そして、拠点変更リクエストに伴うリーダ見直し処理は終了する。
【0157】
〔B〕効果
上述した実施形態の一例における情報処理装置10,プログラム及び情報処理方法によれば、例えば、以下の作用効果を奏することができる。
【0158】
情報処理装置10は、アクセス経路に1以上のプロキシ102を挟んで最も実行されている1以上のクライアント103のアクセス情報を収集する。情報処理装置10は、アクセス情報に基づいて、複数のストレージノード101と1以上のプロキシ102との間のそれぞれのネットワーク距離とを算出する。情報処理装置10は、ネットワーク距離に基づき、複数のストレージノード101の中から、最もアクセス頻度が高いプロキシ102に近いストレージノード101をリーダとして決定する。
【0159】
これにより、分散データストアの性能を向上できる。具体的には、クライアント103からの読み書き処理速度やスループット、レイテンシを向上できる。
【0160】
アクセス情報は、ネットワーク距離を算出するための、複数のストレージノード101と1以上のプロキシ102との間における静的なパラメータ及び動的なパラメータを含んでよい。これにより、リーダの決定をネットワーク距離に基づいて正確に実施できる。
【0161】
情報処理装置10は、クライアント103によってアクセス性能値が要件を満たさないと判定された場合に、リーダを決定してよい。また、情報処理装置10は、クライアント103によって複数のストレージノード101の拠点変更のための要件が満たされると判定された場合に、リーダを決定してよい。これにより、リーダの決定を適切なタイミングで実施できる。
【0162】
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0163】
〔D〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0164】
(付記1)
複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、
アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記1以上のクライアントのアクセス情報を収集し、
前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、
前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定する、
プロセッサを備える、情報処理装置。
【0165】
(付記2)
前記アクセス情報は、前記ネットワーク距離を算出するための、前記複数のストレージノードと前記1以上のプロキシとの間における静的なパラメータ及び動的なパラメータを含む、
付記1に記載の情報処理装置。
【0166】
(付記3)
前記プロセッサは、前記クライアントによってアクセス性能値が要件を満たさないと判定された場合に、前記リーダを決定する、
付記1又は2に記載の情報処理装置。
【0167】
(付記4)
前記プロセッサは、前記クライアントによって前記複数のストレージノードの拠点変更のための要件が満たされると判定された場合に、前記リーダを決定する、
付記1~3のいずれか一項に記載の情報処理装置。
【0168】
(付記5)
複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、
アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記1以上のクライアントのアクセス情報を収集し、
前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、
前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定する、
処理をコンピュータに実行させる、プログラム。
【0169】
(付記6)
前記アクセス情報は、前記ネットワーク距離を算出するための、前記複数のストレージノードと前記1以上のプロキシとの間における静的なパラメータ及び動的なパラメータを含む、
付記5に記載のプログラム。
【0170】
(付記7)
前記クライアントによってアクセス性能値が要件を満たさないと判定された場合に、前記リーダを決定する、
処理を前記コンピュータに実行させる、付記5又は6に記載のプログラム。
【0171】
(付記8)
前記クライアントによって前記複数のストレージノードの拠点変更のための要件が満たされると判定された場合に、前記リーダを決定する、
処理を前記コンピュータに実行させる、付記5~7のいずれか一項に記載のプログラム。
【0172】
(付記9)
複数のストレージノードと1以上のプロキシと1以上のクライアントとが接続されるネットワークにおいて、
アクセス経路に前記1以上のプロキシを挟んで最も実行されている前記の1以上のクライアントのアクセス情報を収集し、
前記アクセス情報に基づいて、前記複数のストレージノードと前記1以上のプロキシとの間のそれぞれのネットワーク距離とを算出し、
前記ネットワーク距離に基づき、前記複数のストレージノードの中から、最もアクセス頻度が高いプロキシに近いストレージノードをリーダとして決定する、
処理をコンピュータが実行する、情報処理方法。
【0173】
(付記10)
前記アクセス情報は、前記ネットワーク距離を算出するための、前記複数のストレージノードと前記1以上のプロキシとの間における静的なパラメータ及び動的なパラメータを含む、
付記9に記載の情報処理方法。
【0174】
(付記11)
前記クライアントによってアクセス性能値が要件を満たさないと判定された場合に、前記リーダを決定する、
処理を前記コンピュータが実行する、付記9又は10に記載の情報処理方法。
【0175】
(付記12)
前記クライアントによって前記複数のストレージノードの拠点変更のための要件が満たされると判定された場合に、前記リーダを決定する、
処理を前記コンピュータが実行する、付記9~11のいずれか一項に記載の情報処理方法。
【符号の説明】
【0176】
1 :コンピュータ装置
2 :ネットワークスイッチ
3 :インターネット
10 :情報処理装置
11 :プロセッサ
12 :メモリ
13 :ストレージデバイス
14 :ネットワークデバイス
15 :表示装置
16 :ドライブ装置
100 :分散データストアシステム
101 :ストレージノード
102 :プロキシ
103 :クライアント
104 :管理装置