(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-08
(45)【発行日】2024-05-16
(54)【発明の名称】クラスターシステム上でサービスをデプロイするための方法、プログラムおよびシステム
(51)【国際特許分類】
G06F 8/60 20180101AFI20240509BHJP
【FI】
G06F8/60
(21)【出願番号】P 2020097641
(22)【出願日】2020-06-04
【審査請求日】2023-03-17
(73)【特許権者】
【識別番号】000001270
【氏名又は名称】コニカミノルタ株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】沈 宇晨
(72)【発明者】
【氏名】ノルデス メナード ラマー
【審査官】坂庭 剛史
(56)【参考文献】
【文献】米国特許出願公開第2019/0370121(US,A1)
【文献】米国特許第06055363(US,A)
【文献】米国特許出願公開第2017/0257432(US,A1)
【文献】中井悦司,[改訂新版] プロのためのLinuxシステム構築・運用技術,初版,株式会社技術評論社,2016年10月25日,特に、p. 189-194
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/60-8/658
G06F 9/44-9/445
G06F 9/46-9/50
(57)【特許請求の範囲】
【請求項1】
クラスターシステムにサービスをデプロイするための方法であって、
第1のノードの第1のランレベルを取得するステップと、
第2のノードの第2のランレベルを取得するステップと、
前記サービスの
優先度に相当する要求ランレベルを取得するステップと、
前記要求ランレベルと、前記第1および第2のランレベルとを比較するステップと、
比較の結果に基づいて、前記サービスを前記第1および第2のノードの各々にデプロイ可能か否かを判定するステップと、
前記サービスを前記第1および第2のノードの少なくとも片方にデプロイしたことに基づいて、前記第1および第2のランレベルの少なくとも片方を更新するステップとを含む、方法。
【請求項2】
前記サービスを前記第1および第2のノードの各々にデプロイ可能か否かを判定するステップは、前記第1および第2のノードの各々のランレベルが、前記サービスの前記要求ランレベル以上であることに基づいて、前記サービスを前記第1および第2のノードの各々にデプロイ可能であると判定することを含む、請求項1に記載の方法。
【請求項3】
デプロイ済みの1または複数の前記サービスのランレベルに基づいて、デプロイ済みの1または複数の前記サービスの終了順序を決定するステップと、
1または複数の前記サービスの少なくとも1つを終了したことに基づいて、少なくとも前記第1および第2のランレベルの片方を更新するステップとをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記第1および第2のランレベルには、ノードごとに個別のノードランレベルが設定されており、
前記要求ランレベルと、前記第1および第2のランレベルとを比較するステップは、前記要求ランレベルおよび前記第1のランレベルの比較と、前記要求ランレベルおよび前記第2のランレベルとの比較とを個別に実行することを含む、請求項1~3のいずれかに記載の方法。
【請求項5】
前記第1および第2のランレベルの少なくとも片方を更新するステップは、
前記第1のノードにデプロイ済みの1または複数の前記サービスの中で最も前記要求ランレベルが高い前記サービスの前記要求ランレベルに基づいて、前記第1のランレベルを更新するステップと、
前記第2のノードにデプロイ済みの1または複数の前記サービスの中で最も前記要求ランレベルが高い前記サービスの前記要求ランレベルに基づいて前記第2のランレベルを更新するステップとを含む、請求項4に記載の方法。
【請求項6】
前記サービスの設定ファイルを参照して複製数の設定を取得するステップをさらに含み、
前記第1および第2のランレベルの少なくとも片方を更新するステップは、デプロイ条件を満たす前記サービスを前記複製数の設定で指定される回数デプロイしたことに基づいて、前記第1および第2のランレベルの少なくとも片方を更新するステップを含む、請求項4に記載の方法。
【請求項7】
前記第1および第2のランレベルには、前記クラスターシステム内において共通であるクラスターランレベルが設定されており、
前記要求ランレベルと、前記第1および第2のランレベルとを比較するステップは、前記要求ランレベルと、前記クラスターランレベルとを比較するステップを含む、請求項1~3のいずれかに記載の方法。
【請求項8】
前記第1および第2のランレベルの少なくとも片方を更新するステップは、前記第1または第2のノードにデプロイ済みの1または複数の前記サービスの中で最も前記要求ランレベルが高い前記サービスの前記要求ランレベルに基づいて、前記クラスターランレベルを更新するステップを含む、請求項7に記載の方法。
【請求項9】
前記サービスの設定ファイルを参照して複製数の設定を取得するステップをさらに含み、
前記第1および第2のランレベルの少なくとも片方を更新するステップは、デプロイ条件を満たす前記サービスを前記複製数の設定で指定される回数デプロイしたことに基づいて、前記クラスターランレベルを更新するステップを含む、請求項7に記載の方法。
【請求項10】
前記要求ランレベルと、前記第1および第2のランレベルとを管理するための管理サービスを前記第1および第2のノードのいずれかにデプロイするステップをさらに含む、請求項1~9のいずれかに記載の方法。
【請求項11】
前記管理サービスにより、前記要求ランレベルに基づいて、前記クラスターシステムのコントローラーに、前記サービスのデプロイ条件を含むフィルタを設定するステップをさらに含む、請求項10に記載の方法。
【請求項12】
請求項1~11のいずれかに記載の方法を1つ以上のプロセッサーに実行させるためのプログラム。
【請求項13】
1つ以上のプロセッサーと、
請求項1~11のいずれかに記載の方法を前記1つ以上のプロセッサーに実行させるためのプログラムを格納したメモリーとを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、クラスターシステム上でサービスをデプロイするための方法に関し、より特定的には、サービスのデプロイ順序の制御に関する。
【背景技術】
【0002】
近年、クラスターシステムにおいて、アプリケーションのデプロイ(インストールおよび/または起動を含み得る)は、宣言式が主流となっている。宣言式のデプロイをサポートするクラスターシステムとして、Kubernetes等が知られている。宣言式のデプロイは、コマンドまたはスクリプトを使用する従来のコマンド式とは異なり、サービスのレプリカ数等のメタ情報を記述したマニフェストファイルに基づいて、サービスのデプロイまたは終了等の処理を制御する。
【0003】
管理者は、宣言式のデプロイに対応したクラスターシステムを採用することにより、コマンドまたはスクリプトの知識がなくても容易にサービスをクラスターシステムにデプロイするための設定を作成することができる。その一方で、宣言式のデプロイに対応したクラスターシステムは、スクリプトを用いた詳細な設定方法を提供していないことがある。その場合、管理者は、サービス間の依存関係に基づいて、各サービスを特定の順番でデプロイするための設定を容易に作成することができない。そこで、サービス間の依存関係に基づいて、クラスターシステムにサービスを順番にデプロイする技術が必要とされている。
【0004】
サービスのデプロイに関し、例えば、特開2013-089093号公報(特許文献1)は、「アプリ起動確認機能部が、起動順序データベースから抽出した起動情報の順序番号が小さい順から仮想サーバの複数回の電源オンの確認を行うと共に、該複数回の電源オンが確認された仮想サーバのアプリケーションプログラムによって開通する通信ポートに対する疎通の複数回の確認を行った後に、順序番号が次に大きい他の仮想サーバの電源オン及びポート疎通を確認した後に次の順序番号の仮想サーバの起動を行うことによって、先行アプリケーションプログラムの起動完了後に後続アプリケーションプログラムを起動する」仮想サーバの起動順序管理方法を開示している([要約]参照)。
【0005】
また、サービスのデプロイに関する他の技術が、例えば、特許文献2~特許文献5に開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2013-089093号公報
【文献】特開2005-043962号公報
【文献】特開2011-018223号公報
【文献】特開平7-200441号公報
【文献】特開2019-164621号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1~5に開示された技術によると、サービス間の依存関係に基づいて、サービスのデプロイ順序を決定することができない。したがって、サービス間の依存関係に基づいて、サービスのデプロイ順序を決定するための技術が必要とされている。
【0008】
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、サービス間の依存関係に基づいて、サービスのデプロイ順序を決定するための技術を提供することにある。
【課題を解決するための手段】
【0009】
ある実施の形態に従うと、クラスターシステムにサービスをデプロイするための方法が提供される。この方法は、第1のノードの第1のランレベルを取得するステップと、第2のノードの第2のランレベルを取得するステップと、サービスの要求ランレベルを取得するステップと、要求ランレベルと、第1および第2のランレベルとを比較するステップと、比較の結果に基づいて、サービスを第1および第2のノードの各々にデプロイ可能か否かを判定するステップと、サービスを第1および第2のノードの少なくとも片方にデプロイしたことに基づいて、第1および第2のランレベルの少なくとも片方を更新するステップとを含む。
【0010】
ある局面において、サービスを第1および第2のノードの各々にデプロイ可能か否かを判定するステップは、第1および第2のノードの各々のランレベルが、サービスの要求ランレベル以上であることに基づいて、サービスを第1および第2のノードの各々にデプロイ可能であると判定することを含む。
【0011】
ある局面において、方法は、デプロイ済みの1または複数のサービスのランレベルに基づいて、デプロイ済みの1または複数のサービスの終了順序を決定するステップと、1または複数のサービスの少なくとも1つを終了したことに基づいて、少なくとも第1および第2のランレベルの片方を更新するステップとをさらに含む。
【0012】
ある局面において、第1および第2のランレベルには、ノードごとに個別のノードランレベルが設定されている。要求ランレベルと、第1および第2のランレベルとを比較するステップは、要求ランレベルおよび第1のランレベルの比較と、要求ランレベルおよび第2のランレベルとの比較とを個別に実行することを含む。
【0013】
ある局面において、第1および第2のランレベルの少なくとも片方を更新するステップは、第1のノードにデプロイ済みの1または複数のサービスの中で最も要求ランレベルが高いサービスの要求ランレベルに基づいて、第1のランレベルを更新するステップと、第2のノードにデプロイ済みの1または複数のサービスの中で最も要求ランレベルが高いサービスの要求ランレベルに基づいて第2のランレベルを更新するステップとを含む。
【0014】
ある局面において、方法は、サービスの設定ファイルを参照して複製数の設定を取得するステップをさらに含む。第1および第2のランレベルの少なくとも片方を更新するステップは、デプロイ条件を満たすサービスを複製数の設定で指定される回数デプロイしたことに基づいて、第1および第2のランレベルの少なくとも片方を更新するステップを含む。
【0015】
ある局面において、第1および第2のランレベルには、クラスターシステム内において共通であるクラスターランレベルが設定されている。要求ランレベルと、第1および第2のランレベルとを比較するステップは、要求ランレベルと、クラスターランレベルとを比較するステップを含む。
【0016】
ある局面において、第1および第2のランレベルの少なくとも片方を更新するステップは、第1または第2のノードにデプロイ済みの1または複数のサービスの中で最も要求ランレベルが高いサービスの要求ランレベルに基づいて、クラスターランレベルを更新するステップを含む。
【0017】
ある局面において、方法は、サービスの設定ファイルを参照して複製数の設定を取得するステップをさらに含む。第1および第2のランレベルの少なくとも片方を更新するステップは、デプロイ条件を満たすサービスを複製数の設定で指定される回数デプロイしたことに基づいて、クラスターランレベルを更新するステップを含む。
【0018】
ある局面において、方法は、要求ランレベルと、第1および第2のランレベルとを管理するための管理サービスを第1および第2のノードのいずれかにデプロイするステップをさらに含む。
【0019】
ある局面において、方法は、管理サービスにより、要求ランレベルに基づいて、クラスターシステムのコントローラーに、サービスのデプロイ条件を含むフィルタを設定するステップをさらに含む。
【0020】
他の実施の形態に従うと、上記のいずれかの方法を1つ以上のプロセッサーに実行させるためのプログラムが提供される。
【0021】
他の実施の形態に従うと、1つ以上のプロセッサーと、上記のいずれかに記載の方法を1つ以上のプロセッサーに実行させるためのプログラムを格納したメモリーとを備える、システムが提供される。
【発明の効果】
【0022】
ある実施の形態に従うと、サービス間の依存関係に基づいて、サービスのデプロイ順序を決定することが可能である。
【0023】
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本開示に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0024】
【
図1】ある実施の形態に従うクラスターシステム100の構成の一例を示す図である。
【
図2】クラスターシステム100におけるノード101およびサービスの一例を示す図である。
【
図3】サービスのデプロイの第1の手順における状態1の一例を示す図である。
【
図4】サービスのデプロイの第1の手順における状態2の一例を示す図である。
【
図5】サービスのデプロイの第1の手順における状態3の一例を示す図である。
【
図6】サービスのデプロイの第1の手順における状態4の一例を示す図である。
【
図7】サービスのデプロイの第2の手順における状態1の一例を示す図である。
【
図8】サービスのデプロイの第2の手順における状態2の一例を示す図である。
【
図9】サービスのデプロイの第2の手順における状態3の一例を示す図である。
【
図10】サービスのデプロイの第2の手順における状態4の一例を示す図である。
【
図11】サービスのデプロイの第3の手順における状態1の一例を示す図である。
【
図12】
図11の状態1におけるデプロイ可能なサービスを示す図である。
【
図13】サービスのデプロイの第3の手順における状態2の一例を示す図である。
【
図14】サービスのデプロイの第3の手順における状態3の一例を示す図である。
【
図15】クイックサーブモードおよびステイブルサーブモードの比較の一例を示す図である。
【
図16】ノードベースランレベルモードおよびクラスターベースランレベルモードの比較の一例を示す図である。
【
図17】マニフェストファイルの一例を示す図である。
【
図18】各ノード101に設定されるメタデータ1800の一例を示す図である。
【
図19】デプロイマネージャー110の動作の様子の一例を示す図である。
【
図20】クラスターシステム100のサービスのデプロイ処理のフローチャートの一例を示す図である。
【
図21】クラスターシステム100における各ノード101のランレベルの更新のフローチャートの一例を示す図である。
【
図22】クラスターシステム100を構成する装置2200の一例を示す図である。
【発明を実施するための形態】
【0025】
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0026】
<A.クラスターシステム>
図1は、本実施の形態に従うクラスターシステム100の構成の一例を示す図である。
図1を参照して、クラスターシステムの構成要素について説明する。クラスターシステム100は、複数のノード101A,101Bおよび101C(総称する場合は「ノード101」と表現する)から構成される。ノード101は、クラスターシステム100内の計算用のノードである。ノード101は、サーバー装置、または仮想サーバー装置等によって構成され得る。各ノード101上では、OS(Operating System)が動作しており、当該OS上でデプロイされたサービスが実行される。
【0027】
クラスターシステム100は、サービス102と、クラスターコントロールプレーン103とを含む。サービス102は、各ノード101にデプロイされたサービス全般を指す。サービス102は、OS上で稼働するアプリケーションまたは仮想環境におけるコンテナ等を含み得る。
【0028】
クラスターコントロールプレーン103は、クラスターシステム100の機能(主にサービスの起動及び終了等)を提供するための機能群であり、複数のノード101間に分散配置されていてもよい。言い換えれば、クラスターシステム100は、多数の計算リソースからなる巨大なシステムである。
図1に示すクラスターシステム100は、一例であり、クラスターシステム100の構成はこれに限定されるものではない。ある局面において、クラスターシステム100は、任意の数のノード101を含んでいてもよい。
【0029】
クラスターシステム100は、各ノード101にサービスをデプロイすることができる。「サービス」は、アプリケーションであり、個々のノード101上で実行される。「デプロイ」は、アプリケーションをノード101上にインストールすること、またはインストールして起動することを意味する。
【0030】
クラスターシステム100は、サービスごとに作成されたマニフェストファイルに基づいて、サービスをいずれかのノード101にデプロイする。「マニフェストファイル」は、サービスのレプリカ数(デプロイ回数/作成されるインスタンス数)等のメタデータを含む設定ファイルである。また、マニフェストファイルは、サービスの要求ランレベルを含む。「要求ランレベル」は、サービスごとに割り当てられた値であり、デプロイマネージャー110により、クラスターシステム100全体のランレベルまたは個々のノード101のランレベルと比較するために使用される。「ランレベル」は、クラスターシステム100全体または各ノード101に設定されており、各ノード101上で稼働している1以上のサービスの要求ランレベルの中で最も高い要求ランレベルに基づいて決定される。ノード101上でサービスが稼働していない場合、ノード101のランレベルは最低値(例えば0)となる。サービスは、自身に割り当てられた要求ランレベル以上の値のランレベルで稼働しているノードにのみデプロイが可能となる。ランレベルおよび要求ランレベルについては
図2を参照して後述する。
【0031】
ユーザーは、サービスを起動するノード101を指定する必要はなく、クラスターシステム100にマニフェストファイルを設置するだけでよい。ユーザーから見た場合、巨大なサーバー(クラスターシステム100)に設定ファイル(マニフェストファイル)を設置するだけで、巨大なサーバーが、要求ランレベルに基づいて自動でサービスを起動するように見える。ある局面において、ユーザーは、自身の端末等からクラスターシステム100にマニフェストファイルを送信し得る。ある局面において、クラスターマネージメントコンポーネント113にマニフェストファイルが投入されたことに基づいて、サービスのデプロイが開始されてもよい。
【0032】
クラスターシステム100は、上記のマニフェストファイルに基づいて、サービスを各ノード101にデプロイするために、デプロイマネージャー110と、クラスターランタイムコンポーネント111と、ノードメタデータ&ステート112と、クラスターマネージメントコンポーネント113と、クラスターメタデータ&ステート114とを備える。
【0033】
デプロイマネージャー110は、サービスのノード101上へのデプロイの順序を制御する。デプロイマネージャー110自体もノード101上で稼働するサービスである。デプロイマネージャー110は、いずれか1つのノード101上で稼働していればよい。
図1に示す例では、デプロイマネージャー110は、ノード101A上にデプロイされているが、全てのノード101に対するサービスのデプロイ順序を制御することができる。デプロイ順序の制御については、
図3以降を参照して後述する。
【0034】
デプロイマネージャー110は、クラスターコントロールプレーン103と通信することで、クラスターシステム100、各ノード101または各サービスの状態を取得することができる。さらに、デプロイマネージャー110は、クラスターコントロールプレーン103に、サービスのデプロイ順序を制御するためのフィルターを設定することができる。
【0035】
クラスターランタイムコンポーネント111は、クラスターシステム100上で実行されるサービスのデプロイまたは終了等を実行する。クラスターランタイムコンポーネント111は、各ノード101のOS上で稼働し、自身が稼働しているノード101のOSまたは仮想環境と通信し、サービスのライフサイクルを制御する。クラスターランタイムコンポーネント111は、クラスターコントロールプレーン103にノードの状態を通知する。また、クラスターランタイムコンポーネント111は、サービスからの要求を受け付けることができる。
【0036】
ノードメタデータ&ステート112は、クラスターランタイムコンポーネント111によって参照されるデータベースであり、各ノード101のメタ情報およびステートを格納する。ある局面において、ノードメタデータ&ステート112は、個別のノード101のランレベル(これ以降、「ノードランレベル」と表す)を格納してもよい。
【0037】
クラスターマネージメントコンポーネント113は、クラスターシステム100全体の状態を管理し、ユーザーの宣言的な指示(マニフェストファイルの設定等)を受けて、クラスターランタイムコンポーネント111に、サービスのデプロイまたは終了の指示を送信する。また、クラスターマネージメントコンポーネント113は、ノードメタデータ&ステート112を更新し得る。
【0038】
クラスターマネージメントコンポーネント113は、いずれのノード101上で実行されていてもよく、さらに、複数のノード101上に分散配置されていてもよい。クラスターマネージメントコンポーネント113は、複数のノード101上に分散配置されている場合、全てのインスタンスが同期している。
【0039】
クラスターメタデータ&ステート114は、クラスターマネージメントコンポーネント113によって参照されるデータベースである。クラスターメタデータ&ステート114は、デプロイマネージャー110またはクラスターマネージメントコンポーネント113によって参照される各サービスのマニフェストファイルを格納する。ある局面において、クラスターメタデータ&ステート114は、クラスターシステム100に関する情報、状態等をさらに格納し得る。また、他の局面において、クラスターメタデータ&ステート114は、クラスター全体のランレベル(これ以降、「クラスターランレベル」と表す)を格納してもよい。
【0040】
クラスターメタデータ&ステート114は、いずれのノード101上で実行されていてもよく、さらに、複数のノード101上に分散配置されていてもよい。また、クラスターメタデータ&ステート114は、クラスターマネージメントコンポーネント113と同じノード101上で実行されている必要はない。
【0041】
ある局面において、クラスターシステム100は、ノードランレベルまたはクラスターランレベルの両方を保有してもよい。他の局面において、クラスターシステム100は、ノードランレベルまたはクラスターランレベルのいずれか片方のみを保有してもよい。
【0042】
<B.サービスの要求ランレベルおよびノードのランレベル>
図2は、クラスターシステム100におけるノード101およびサービスの一例を示す図である。
図2を参照して、サービスに設定された要求ランレベルおよび各ノード101のランレベルとの関係について説明する。
【0043】
クラスターシステム100が4つのノード101A~101Dを含んでいるとする。また、デプロイされるべきサービスA~Cが存在するとする。さらに、各サービスの優先度はC,AおよびBの順に高いとする。
【0044】
各サービスには、要求ランレベルが設定されている。この要求ランレベルは、サービスの優先度に相当する。
図2に示す例では、要求ランレベルが低い程優先度が高いサービスとなる。また、各サービスには、複製数(レプリカ数)が設定されている。「複製数」は、サービスが各ノード101上にデプロイされる回数を示す。デプロイされたサービスは、各ノード101上でインスタンスとして稼働する。すなわち、複製数は、インスタンスの個数であるとも言える。
【0045】
また、各ノード101には、ランレベルが設定されている。このランレベルは、各ノード101上で稼働しているサービスの要求ランレベルによって決まる。ノード101上でサービスが稼働していない場合、ノード101のランレベルは最も低い値(例えば、ランレベル0)になる。各ノード101のランレベルは、サービスがデプロイされることにより上がる。ある局面において、各ノード101は、共通のランレベル(クラスターランレベル)が設定さてもよいし、個別のランレベル(ノードランレベル)が設定されてもよい。クラスターランレベルおよびノードランレベルの差異については
図3以降を参照して後述する。
【0046】
各サービスは、自身に割り当てられた要求ランレベル以上のランレベルで稼働しているノード101にのみデプロイされる。
図2の例では、最初、全てのノード101A~101Dのノードランレベルは0である。このとき要求ランレベルが0以下のサービスは、サービスCのみになる。そこで、現状では、サービスCのみがデプロイ可能となる。
【0047】
サービスがデプロイされたノード101のランレベルは、デプロイされたサービスの要求ランレベルに基づいて上がる。例えば、サービスCがノード101Aにデプロイされた場合、ノード101Aのランレベルは上がり、1(サービスCの要求ランレベル0+1)になる。このように各ノード101は、サービスがデプロイされることによりランレベルが上がっていき、より優先度の低い(要求ランレベルが高い)サービスのデプロイが可能になる。クラスターシステム100は、当該処理により、例えば、複数のサービス間に依存関係がある場合でも、依存関係を解消する順番で、各サービスをデプロイすることができる。
【0048】
図2に示す例では、ノード101のランレベルをデプロイされたサービスの要求ランレベル+1として説明したが、ノード101のランレベルの実現方法はこれに限られない。ある局面において、ノード101のランレベルは、要求ランレベルと等しくてもよいし、要求ランレベルに任意の計算を加えたものであってもよい。
【0049】
上記の処理を実現するために、デプロイマネージャー110は、クラスターメタデータ&ステート114に格納されたマニフェストファイルを参照し、各サービスの要求ランレベルおよび複製数を取得する。さらに、デプロイマネージャー110は、少なくとも要求ランレベルに基づいて、クラスターコントロールプレーン103にサービスの起動フィルタを設定する。ある局面において、デプロイマネージャー110は、要求ランレベルおよびランレベルに基づいて、クラスターコントロールプレーン103にサービスの起動フィルタを設定してもよい。当該フィルタは、例えば、
図2を参照して説明したデプロイのルールを含み得る。
【0050】
クラスターコントロールプレーン103は、ノードメタデータ&ステート112に格納されたノードランレベルと、当該起動フィルタとに参照することで、要求ランレベルに基づいて、サービスをいずれかのノード101に順次デプロイすることができる。
【0051】
<C.サービスのデプロイの第1の手順>
次に、
図3~
図6を参照して、サービスのデプロイの第1の手順の例について説明する。
図3~
図6の各々は、
図2の初期状態からの変化を示す。第1の手順において、各ノード101には、個別のランレベル(ノードランレベル)が設定されている。ノードランレベルを使用するモードをノードベースランレベルモード(Node-based run level mode)と呼ぶ。
【0052】
また、第1の手順において、クラスターシステム100は、優先度に係わらずデプロイの条件を満たしたサービスを順次または並列的にデプロイしていく。このように、条件を満たしたサービスを優先度に関係なくデプロイするモードをクイックサーブモード(Quick serve mode)と呼ぶ。すなわち、第1の手順は、ノードベースランレベルモードおよびクイックサーブモードを使用したサービスのデプロイ手順となる。
【0053】
図3は、サービスのデプロイの第1の手順における状態1の一例を示す図である。
図3に示す例では、
図2の初期状態から、最も要求ランレベルが低い(優先度が高い)サービスCがノード101Aおよび101Bにデプロイされている。
【0054】
図2の初期状態において、全てのノード101のランレベルは0である。この場合、クラスターシステム100は、全てのノード101に対して、要求ランレベルが0以下であるサービスCのみをデプロイ可能である。
【0055】
クラスターシステム100は、デプロイ可能なサービス(サービスC)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図2の初期状態において、サービスCの複製数は3であるため、クラスターシステム100は、サービスCを3回までデプロイできる。
【0056】
クラスターシステム100は、
図3に示す例において、サービスCをノード101Aおよび101Bにデプロイしている。この場合、サービスCは、2回デプロイされたため、複製数の残りが1になる。言い換えれば、2つのサービスCのインスタンスが、いずれかのノード101上で稼働していることになる。
【0057】
サービスCが、ノード101Aおよび101Bにデプロイされたことにより、ノード101Aおよび101Bのランレベルは、1(サービスCの要求ランレベル0+1)に上がる。その結果、ノード101Aおよび101Bのランレベルは、サービスAの要求ランレベル1以上になり、ノード101Aおよび101BへのサービスAのデプロイが可能になる。
【0058】
図4は、サービスのデプロイの第1の手順における状態2の一例を示す図である。
図4に示す例では、
図3の状態1から、さらにサービスAがノード101Bにデプロイされている。
【0059】
図3の状態1において、ノード101Aおよび101Bのランレベルは1であり、ノード101Cおよび101Dのランレベルは0である。この場合、クラスターシステム100は、ノード101Aおよび101Bに対して、要求ランレベルが1以下であるサービスAおよびCをデプロイ可能である。また、クラスターシステム100は、ノード101Cおよび101Dに対して、要求ランレベルが0以下であるサービスCをデプロイ可能である。
【0060】
クラスターシステム100は、デプロイ可能なサービス(サービスAおよびC)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図3の状態1において、サービスAの複製数は2であるため、クラスターシステム100は、サービスAを2回までデプロイできる。また、サービスCは既に2回デプロイされているため、クラスターシステム100は、サービスCを残り1回までデプロイできる。
【0061】
クラスターシステム100は、
図4に示す例において、サービスAをノード101Bにデプロイしている。この場合、サービスAは、1回デプロイされたため、複製数の残りが1になる。言い換えれば、1つのサービスAのインスタンスが、いずれかのノード101上で稼働していることになる。
【0062】
サービスAがノード101Bにデプロイされたことにより、ノード101Bのランレベルは、2(サービスAの要求ランレベル1+1)に上がる。その結果、ノード101Bのランレベルは、サービスBの要求ランレベル2以上になり、ノード101BへのサービスBのデプロイが可能になる。
【0063】
図5は、サービスのデプロイの第1の手順における状態3の一例を示す図である。
図5に示す例では、
図4の状態2から、さらにサービスCがノード101Cにデプロイされている。
【0064】
図4の状態2において、ノード101Aのランレベルは1であり、ノード101Bのランレベルは2であり、ノード101Cおよび101Dのランレベルは0である。この場合、クラスターシステム100は、ノード101Aに対して、要求ランレベルが1以下であるサービスAおよびCをデプロイ可能である。また、クラスターシステム100は、ノード101Bに対して、要求ランレベルが2以下であるサービスA~Cをデプロイ可能である。また、クラスターシステム100は、ノード101Cおよび101Dに対して、要求ランレベルが0以下であるサービスCをデプロイ可能である。
【0065】
クラスターシステム100は、デプロイ可能なサービス(サービスA~C)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図4の状態2において、サービスAは既に1回デプロイされているため、クラスターシステム100は、サービスAを残り1回までデプロイできる。また、サービスBの複製数は4であるため、クラスターシステム100は、サービスAを4回までデプロイできる。また、サービスCは既に2回デプロイされているため、クラスターシステム100は、サービスCを残り1回までデプロイできる。
【0066】
クラスターシステム100は、
図5に示す例において、サービスCをノード101Cにデプロイしている。この場合、サービスCは、合計3回デプロイされたため、複製数の残りが0になる。
【0067】
ノード101Cは、サービスCをデプロイされたことにより、ランレベルが1(サービスCの要求ランレベル0+1)に上がる。その結果、ノード101Cのランレベルは、サービスAの要求ランレベル1以上になり、ノード101CへのサービスAのデプロイが可能になる。この状態では、
図5に示すように、ノード101Bに、サービスBがデプロイ可能であり、ノード101Aおよび101Bに、サービスAがデプロイ可能であり、ノード101A~101Dに、サービスCがデプロイ可能である。
【0068】
図6は、サービスのデプロイの第1の手順における状態4の一例を示す図である。
図6に示す例では、
図5の状態3から、さらにサービスAおよびBがノード101Aにデプロイされている。
【0069】
図5の状態3において、ノード101Aおよび101Cのランレベルは1であり、ノード101Bのランレベルは2であり、ノード101Dのランレベルは0である。この場合、クラスターシステム100は、ノード101Aおよび101Cに対して、要求ランレベルが1以下であるサービスAおよびCをデプロイ可能である。また、クラスターシステム100は、ノード101Bに対して、要求ランレベルが2以下であるサービスA~Cをデプロイ可能である。また、クラスターシステム100は、ノード101Dに対して、要求ランレベルが0以下であるサービスCをデプロイ可能である。
【0070】
クラスターシステム100は、デプロイ可能なサービス(サービスA~C)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図5の状態3において、サービスAは既に1回デプロイされているため、クラスターシステム100は、サービスAを残り1回までデプロイできる。また、サービスBの複製数は4であるため、クラスターシステム100は、サービスBを4回までデプロイできる。また、サービスCは既に2回デプロイされているため、クラスターシステム100は、サービスCを残り1回までデプロイできる。
【0071】
クラスターシステム100は、
図6に示す例において、サービスCをノード101Cにデプロイしている。この場合、サービスCは、合計3回デプロイされたため、複製数の残りが0になる。また、クラスターシステム100は、サービスAをノード101Aにデプロイした後、サービスBをノード101Aに2回デプロイしている。この場合、サービスAは、合計2回デプロイされたため、複製数の残りが0になる。また、サービスBは、合計2回デプロイされたため、複製数の残りが2になる。
【0072】
サービスCがノード101Cにデプロイされたことにより、ノード101Cのランレベルが1(サービスCの要求ランレベル0+1)に上がる。その結果、ノード101Cのランレベルは、サービスAの要求ランレベル1以上になり、ノード101CへのサービスAのデプロイが可能になる。また、サービスAおよびBがノード101Aにデプロイされたことにより、ノード101Aのランレベルが3(サービスBの要求ランレベル2+1)に上がる。以降同様に、クラスターシステム100は、各サービスの要求ランレベルと、各ノード101のランレベルとを比較して、順次デプロイ可能なサービスを各ノード101にデプロイしていく。
【0073】
<D.サービスのデプロイの第2の手順>
次に、
図7~
図10を参照して、サービスのデプロイの第2の手順の例について説明する。
図7~
図10の各々は、
図2の初期状態からの変化を示す。第2の手順において、各ノード101には、共通のランレベル(クラスターランレベル)が設定されている。クラスターランレベルを使用するモードをクラスターベースランレベルモード(Cluster-based run level mode)と呼ぶ。クラスターベースランレベルモードにおいて、各ノード101のランレベルは、デプロイ済みのサービスの中で最も高い要求ランレベルによって決まる。
【0074】
また、第2の手順において、クラスターシステム100は、クイックサーブモードを使用する。すなわち、第2の手順は、クラスターベースランレベルモードおよびクイックサーブモードを使用したサービスのデプロイ手順となる。
【0075】
図7は、サービスのデプロイの第2の手順における状態1の一例を示す図である。
図7に示す例では、
図2の初期状態から、最も要求ランレベルが低い(優先度が高い)サービスCがノード101Aにデプロイされている。
【0076】
図2の初期状態において、全てのノード101のランレベルは0である。この場合、クラスターシステム100は、全てのノード101に対して、要求ランレベルが0以下であるサービスCをデプロイ可能である。
【0077】
クラスターシステム100は、デプロイ可能なサービス(サービスC)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図2の初期状態において、サービスCの複製数は3であるため、クラスターシステム100は、サービスCを3回までデプロイできる。
【0078】
クラスターシステム100は、
図7に示す例において、サービスCをノード101Aにデプロイしている。この場合、サービスCは、1回デプロイされたため、複製数の残りが2になる。言い換えれば、1つのサービスCのインスタンスが、いずれかのノード101上で稼働していることになる。
【0079】
サービスCをデプロイされたことにより、デプロイ済みのサービス(サービスCのみ)の中で最大の要求ランレベルを有するのはサービスCになる。この場合、第1の手順と異なり、全てのノード101のランレベルは、1(サービスCの要求ランレベル0+1)に上がる。その結果、全てのノード101のランレベルは、サービスAの要求ランレベル1以上になり、全てのノード101へのサービスAのデプロイが可能になる。
【0080】
図8は、サービスのデプロイの第2の手順における状態2の一例を示す図である。
図8に示す例では、
図7の状態1から、さらにサービスAがノード101Bにデプロイされている。
図7の状態1において、全てのノード101のランレベルは1である。この場合、クラスターシステム100は、全てのノード101に対して、要求ランレベルが1以下であるサービスAおよびCをデプロイ可能である。
【0081】
クラスターシステム100は、デプロイ可能なサービス(サービスAおよびC)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図7の状態1において、サービスAの複製数は2であるため、クラスターシステム100は、サービスAを2回までデプロイできる。また、サービスCは既に1回デプロイされているため、クラスターシステム100は、サービスCを残り2回までデプロイできる。クラスターシステム100は、
図8に示す例において、サービスAをノード101Bにデプロイしている。この場合、サービスAは、1回デプロイされたため、複製数の残りが1になる。
【0082】
サービスAがデプロイされたことにより、デプロイ済みのサービス(サービスAおよびC)の中で最大の要求ランレベルを有するのはサービスAになる。そのため、全てのノード101のランレベルが2(サービスAのランレベル1+1)に上がる。その結果、全てのノード101のランレベルは、サービスBの要求ランレベル2以上になり、全てのノード101へのサービスBのデプロイが可能になる。
【0083】
図9は、サービスのデプロイの第2の手順における状態3の一例を示す図である。
図9に示す例では、
図8の状態2から、さらにサービスCがノード101Aにデプロイされている。
【0084】
図8の状態2において、全てのノード101のランレベルは2である。この場合、クラスターシステム100は、全てのノード101に対して、要求ランレベルが2以下であるサービスA~Cをデプロイ可能である。
【0085】
クラスターシステム100は、デプロイ可能なサービス(サービスA~C)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図8の状態2において、サービスAは既に1回デプロイされているため、クラスターシステム100は、サービスAを残り1回までデプロイできる。また、サービスBの複製数は4であるため、クラスターシステム100は、サービスBを4回までデプロイできる。また、サービスCは既に1回デプロイされているため、クラスターシステム100は、サービスCを残り2回までデプロイできる。
【0086】
クラスターシステム100は、
図9に示す例において、サービスCをノード101Aにデプロイしている。この場合、サービスCは、2回デプロイされたため、複製数の残りが1になる。
【0087】
サービスCが新たにデプロイされても、デプロイ済みのサービス(サービスAおよびC)の中で最大の要求ランレベルを有するのはサービスAのままである。そのため、全てのノード101のランレベルは変化しない。この状態では、
図9に示すように、全てのノード101に対して、全てのサービスのデプロイが可能である。
【0088】
図10は、サービスのデプロイの第2の手順における状態4の一例を示す図である。
図10に示す例では、
図9の状態3から、さらにサービスBおよびCがノード101Cに、サービスAおよびBがノード101Dに各々デプロイされている。
【0089】
図9の状態3において、全てのノード101のランレベルは2である。この場合、クラスターシステム100は、全てのノード101に対して、要求ランレベルが2以下であるサービスA~Cをデプロイ可能である。
【0090】
クラスターシステム100は、デプロイ可能なサービス(サービスA~C)に設定された複製数の範囲内で、デプロイ可能なサービスを任意の回数デプロイできる。例えば、
図9の状態3において、サービスAは既に1回デプロイされているため、クラスターシステム100は、サービスAを残り1回までデプロイできる。また、サービスBの複製数は4であるため、クラスターシステム100は、サービスBを4回までデプロイできる。また、サービスCは既に2回デプロイされているため、クラスターシステム100は、サービスCを残り1回までデプロイできる。
【0091】
クラスターシステム100は、
図10に示す例において、サービスBおよびCをノード101Cに、サービスAおよびBをノード101Dに各々デプロイしている。この場合、サービスAは、2回デプロイされたため、複製数の残りが0になる。また、サービスBは、2回デプロイされたため、複製数の残りが2になる。また、サービスCは、3回デプロイされたため、複製数の残りが0になる。
【0092】
サービスBが新たにデプロイされたため、デプロイ済みのサービス(サービスA~C)の中で最大の要求ランレベルを有するのはサービスBになる。そのため、全てのノード101のランレベルが3(サービスBの要求ランレベル2+1)に上がる。以降同様に、クラスターシステム100は、各サービスの要求ランレベルと、クラスターランレベルとを比較して、順次デプロイ可能なサービスを各ノード101にデプロイしていく。
【0093】
<E.サービスのデプロイの第3の手順>
次に、
図11~
図14を参照して、サービスのデプロイの第3の手順の例について説明する。
図11~
図14の各々は、
図2の初期状態からの変化を示す。第3の手順において、各ノード101には、クラスターランレベルが設定されている。
【0094】
また、第3の手順において、クラスターシステム100は、優先度の高い(ランレベルが低い)サービスから優先してデプロイしてく。このように、優先度(ランレベル)に基づいてデプロイするモードをステイブルサーブモード(Stable serve mode)と呼ぶ。すなわち、第3の手順は、クラスターベースランレベルモードおよびステイブルサーブモードを使用したサービスのデプロイ手順となる。
【0095】
図11は、サービスのデプロイの第3の手順における状態1の一例を示す図である。
図11に示す例では、
図2の初期状態から、最も要求ランレベルが低い(優先度が高い)サービスCがノード101Aおよび101Bにデプロイされている。
【0096】
ステイブルサーブモードにおいては、現在デプロイ可能なサービスのインスタンス数が複製数以上になった場合にのみ、ノード101のランレベルが更新される。例えば、サービスCの複製数は3である。よって、サービスCのインスタンス数(デプロイ回数)が3以上になった場合に、全てのノード101のランレベルが1(サービスCの要求ランレベル0+1)に上がる。
図11に示す例では、サービスCのインスタンス数は2であり、サービスCの複製数3未満であるため、全てのノード101のランレベルは0のままとなる。
【0097】
図12は、
図11の状態1におけるデプロイ可能なサービスを示す図である。ノード101A~101Dのランレベルは、全て0であるため、サービスCのみがデプロイ要件を満たしている。全てのノード101のランレベルは同じであるため、クラスターシステム100は、いずれのノード101に対しても、サービスCをデプロイすることができる。
図12に示すように、ステイブルサーブモードでは、クイックサーブモードと異なり、複製数で指定された回数デプロイされていないサービスの中から最も要求ランレベルが低いサービスがデプロイされる。
【0098】
図13は、サービスのデプロイの第3の手順における状態2の一例を示す図である。
図13に示す例では、
図11の状態1から、さらにサービスCがノード101Cにデプロイされ、その後に、サービスAがノード101Dにデプロイされている。
【0099】
図13の状態2において、サービスCのインスタンス数は3であり、サービスCの複製数3以上である。また、サービスAのインスタンス数は1であり、サービスAの複製数2未満である。よって、全てのノード101のランレベルは1(サービスCの要求ランレベル0+1)になる。
【0100】
図14は、サービスのデプロイの第3の手順における状態3の一例を示す図である。
図13に示す例では、
図13の状態2から、さらにサービスAがノード101Cにデプロイされている。
【0101】
図14の状態3において、サービスAのインスタンス数は2であり、サービスAの複製数2以上である。よって、全てのノード101のランレベルは2(サービスAのランレベル1+1)になる。ノード101のランレベルが上がったことにより、クラスターシステム100は、全てノード101に対して、サービスBをデプロイ可能になる。以降同様に、クラスターシステム100は、各サービスの要求ランレベルと、クラスターランレベルとを比較して、順次デプロイ可能なサービスを各ノード101にデプロイしていく。
【0102】
上記のように、クラスターシステム100は、ノード101のランレベルの設定方法として、ノードベースランレベルモードおよびクラスターベースランレベルモードのいずれかを使用することができる。また、クラスターシステム100は、サービスのデプロイ方式として、クイックサーブモードおよびステイブルサーブモードのいずれかを使用することができる。
【0103】
また、クラスターシステム100は、上記の第1~第3の手順以外にも、ノードベースランレベルモードおよびステイブルサーブモードを組み合わせた第4の手順により、サービスをデプロイすることができる。また、クラスターシステム100は、サービスの要求ランレベルに基づいて、ノード101上で稼働しているサービスを順番に終了することができる。クラスターシステム100は、例えば、ノード101上で稼働している各サービスの要求ランレベルを参照し、要求ランレベルが高いサービスから順番に終了してもよい。
【0104】
クラスターシステム100は、ノード101上で稼働するサービスを終了した場合、ノード101のランレベルを更新する。例えば、各ノード101がノードベースランレベルモードで動作しているとする。また、ノード101A上でサービスAおよびCが稼働しているとする。この場合、ノード101Aのランレベルは2である。クラスターシステム100は、ノード101A上で稼働するサービスAを終了すると、ノード101Aのランレベルを1に変更する。また、他の例として、各ノード101がクラスターベースランレベルモードで動作しているとする。さらに、ノード101A上でのみサービスAおよびCが稼働しており、他のノード101上ではサービスは稼働していないとする。この場合、クラスターシステム100は、ノード101A上で稼働するサービスAを終了すると、全てのノード101のランレベルを1に変更する。
【0105】
図2~14を参照した説明において、サービスの優先度が高いほど、当該サービスの要求ランレベルが低くなる例を示したが、ランレベルの実現方法はこれに限られるものではない。ある局面において、サービスの優先度が高いほど、当該サービスの要求ランレベルが高くなってもよい。その場合、サービスがノード101にデプロイされたとき、ノード101のランレベルは、当該デプロイされたサービスの要求ランレベルに基づいて下がる。
【0106】
<F.各モードの比較>
図15は、クイックサーブモードおよびステイブルサーブモードの比較の一例を示す図である。状態1501A~1504Aは、クイックサーブモードにおける各サービスのデプロイ状況の一例を示している。また、状態1501B~1503Bは、ステイブルサーブモードにおける各サービスのデプロイ状況の一例を示している。
【0107】
クイックサーブモードにおいて、クラスターシステム100は、デプロイ条件が満たされたサービスを要求ランレベルの大小によらずデプロイすることができる。例えば、全てのサービスCがデプロイされていなくても、いずれかのノード101のランレベルがサービスAおよびBの要求ランレベル以上であれば、クラスターシステム100は、サービスAおよびBをデプロイすることができる。
【0108】
一方で、ステイブルサーブモードにおいて、クラスターシステム100は、必ず要求ランレベルが低いサービスを優先してデプロイする。例えば、クラスターシステム100は、サービスCを複製数で指定された回数分デプロイするまで、サービスAおよびBをデプロイしない。
【0109】
サービスA~Cが連係してユーザーに何らかの機能を提供する場合、クイックサーブモードは、全てのサービスA~Cを素早くデプロイすることができるため、迅速にユーザーに機能を提供することができる。一方で、ステイブルサーブモードは、要求ランレベルが低い(優先度の高い)サービスのデプロイを優先して完了させるため、サービス全体の動作が安定し易い。
【0110】
図16は、ノードベースランレベルモードおよびクラスターベースランレベルモードの比較の一例を示す図である。デプロイ状況1601は、ノードベースランレベルモードにおける各サービスのデプロイ状況の一例を示す。デプロイ状況1602は、クラスターベースランレベルモードにおける各サービスのデプロイ状況の一例を示す。
【0111】
ノードベースランレベルモードにおいて、クラスターシステム100は、各ノード101に個別のランレベルを設定する。そのため、サービスをデプロイされたノード101のランレベルは、サービスをデプロイされていない他のノード101のランレベルよりも大きくなる。クラスターシステム100は、サービスをデプロイされたノード101に対して要求ランレベルが高いサービスもデプロイ可能になるが、サービスをデプロイされていない他のノード101に対して要求ランレベルが高いサービスをデプロイできないままとなる。その結果、サービスは、特定のノード101に集中的にデプロイされ易くなる。
【0112】
クラスターベースランレベルモードにおいて、各ノード101には共通のランレベルが設定される。そのため、どのノード101にサービスがデプロイされても、全てノード101のランレベルは共通のままである。そのため、常に、各ノード101にデプロイ可能なサービスに差は発生しない。その結果、サービスは、各ノード101に分散的にデプロイされ易くなる。
【0113】
クラスターシステム100は、ノードベースランレベルモードで動作することで、例えば、関連するサービスを同じノード101に集中的にデプロイしてノード101間の通信負荷を削減することができる。また、クラスターシステム100は、クラスターベースランレベルモードで動作することで、例えば、同じ機能のサービスを複数のノード101に分散配置して、各ノード101の処理負荷を削減することができる。
【0114】
<G.マニフェストファイルおよびノードのメタデータ>
図17は、マニフェストファイルの一例を示す図である。マニフェストファイル1710は、サービスの1つであるアイデンティティ管理(Identity-management)のマニフェストファイルである。マニフェストファイル1720は、サービスの1つであるアクティブディレクトリ(Active-directory)のマニフェストファイルである。各マニフェストファイルは、サービスの要求ランレベルおよび複製数等の各種情報を含む。
【0115】
アイデンティティ管理は、アクティブディレクトリを参照する。そのため、アクティブディレクトリの要求ランレベル1721は、アイデンティティ管理の要求ランレベル1711よりも低い値になっている。
【0116】
図18は、各ノード101に設定されるメタデータ1800の一例を示す図である。メタデータ1800は、各ノード101に設定されたラベルおよび現在のランレベル1801を含む。ある局面において、ノードメタデータ&ステート112は、当該メタデータ1800を格納し得る。他の局面において、メタデータ1800に含まれるランレベル1801がクラスターランレベルの場合、クラスターメタデータ&ステート114が、当該メタデータ1800を格納し得る。
【0117】
図19は、デプロイマネージャー110の動作の様子の一例を示す図である。デプロイマネージャー110は、マニフェストファイル1710,1720およびノード101のメタデータ1800の全てまたは一部を参照し、クラスターコントロールプレーン103にフィルタを設定する。当該フィルタは、サービスのデプロイ順序を制御するための各種情報を含む。
【0118】
クラスターコントロールプレーン103は、当該フィルタに従って各サービスを要求ランレベルに基づいてデプロイまたは終了する。また、クラスターコントロールプレーン103は、サービスのデプロイまたは終了の実行と共に、ノード101のメタデータ1800のランレベルを更新する。
図19に示す例では、デプロイマネージャー110は、アクティブディレクトリ1902、アイデンティティ管理1900の順番にデプロイされるように、クラスターコントロールプレーン103にフィルタを設定する。
【0119】
上記のように、デプロイマネージャー110は、マニフェストファイル1710および1720と、ノード101のメタデータ1800とに基づいて、クラスターコントロールプレーン103にフィルタを設定する。当該機能により、クラスターコントロールプレーン103は、依存関係のあるサービスを適切な順番でデプロイまたは終了することができる。
【0120】
<H.フローチャート>
図20は、クラスターシステム100のサービスのデプロイ処理のフローチャートの一例を示す図である。
図20の各処理は、
図1に示すデプロイマネージャー110,クラスターランタイムコンポーネント111およびクラスターマネージメントコンポーネント113が相互に連係することで実現し得る。ある局面において、クラスターマネージメントコンポーネント113は、デプロイマネージャー110によって設定されたフィルタを参照し、下記の処理を実行してもよい。
【0121】
ステップS2010において、クラスターシステム100は、各ノード101の現在のランレベルを取得する。ある局面において、クラスターシステム100は、ノードメタデータ&ステート112から、各ノード101のノードランレベルを取得してもよい。他の局面において、クラスターシステム100は、クラスターメタデータ&ステート114から、全てのノード101に共通のクラスターランレベルを取得してもよい。
【0122】
ステップS2020において、クラスターシステム100は、各サービスの要求ランレベルを取得する。より具体的には、クラスターシステム100は、各サービスのマニフェストファイルを参照することで、要求ランレベルを取得する。
【0123】
ステップS2030において、クラスターシステム100は、各サービスの要求ランレベルと、各ノード101の現在のランレベルとを比較して、デプロイ可能なサービスと、当該サービスをデプロイ可能なノード101との組み合わせを決定する。当該組み合わせは、複数存在し得る。
【0124】
ステップS2040において、クラスターシステム100は、ステップS2030にて決定した組み合わせの中からランダムでサービスおよびノード101のペアを選択する。クラスターシステム100は、選択されたサービスを選択されたノード101にデプロイする。ある局面において、クラスターシステム100は、サービスの優先度および/またはノード101の負荷等に基づいて、サービスおよびノード101のペアを選択してもよい。
【0125】
ステップS2050において、クラスターシステム100は、サービスのデプロイが完了したか否かを判定する。より具体的には、例えば、クラスターマネージメントコンポーネント113が、クラスターランタイムコンポーネント111と通信して、サービスの状態を取得し、サービスのデプロイが完了したか否かを判定してもよい。
【0126】
クラスターシステム100は、サービスのデプロイが完了したと判定した場合(ステップS2050にてYES)、制御をステップS2060に移す。そうでない場合(ステップS2050にてNO)、クラスターシステム100は、ステップS2050の処理を繰り返す。
【0127】
ステップS2060において、クラスターシステム100は、全サービスのデプロイが完了したか否かを判定する。全サービスのデプロイの完了とは、全てのサービスが、各サービスのマニフェストファイルに基づいて、複製数で設定された回数分デプロイされた状態を指す。クラスターシステム100は、全サービスのデプロイが完了したと判定した場合(ステップS2060にてYES)、処理を終了する。そうでない場合(ステップS2060にてNO)、クラスターシステム100は、制御をステップS2010に移す。
【0128】
図21は、クラスターシステム100における各ノード101のランレベルの更新のフローチャートの一例を示す図である。
図21の各処理は、
図1に示すデプロイマネージャー110,クラスターランタイムコンポーネント111およびクラスターマネージメントコンポーネント113が相互に連係することで実現し得る。ある局面において、クラスターマネージメントコンポーネント113は、デプロイマネージャー110によって設定されたフィルタを参照し、下記の処理を実行してもよい。また、他の局面において、クラスターシステム100は、
図20および
図21に示す処理を並列または非同期的に実行してもよい。
【0129】
ステップS2105において、クラスターシステム100は、各ノード上で稼働しているサービスのリストを取得する。ステップS2110において、クラスターシステム100は、クラスターシステム100のランレベルのモードが、クラスターベースランレベルモードであるか、またはノードベースランレベルモードであるかを判定する。クラスターシステム100は、クラスターシステム100のランレベルのモードが、クラスターベースランレベルモードであると判定した場合(ステップS2110にてYES)、制御をステップS2115に移す。そうでない場合(ステップS2110にてNO)、制御をステップS2140に移す。
【0130】
ステップS2115において、クラスターシステム100は、リスト内から最も要求ランレベルの高いサービスの情報を抽出する。ここでの最も要求ランレベルの高いサービスとは、現在いずれかのノード101にデプロイされている全てのサービスの中で最も要求ランレベルの高いサービスである。
【0131】
ステップS2120において、クラスターシステム100は、クラスターシステム100のデプロイのモードが、クイックサーブモードであるか、またはステイブルサーブモードであるかを判定する。クラスターシステム100は、クラスターシステム100のデプロイのモードが、クイックサーブモードであると判定した場合(ステップS2120にてYES)、制御をステップS2130に移す。そうでない場合(ステップS2120にてNO)、クラスターシステム100は、制御をステップS2125に移す。
【0132】
ステップS2125において、クラスターシステム100は、ステップS2115にて情報を抽出したサービスのインスタンス数が複製数以上であるか否かを判定する。すなわち、クラスターシステム100は、ステップS2115にて情報を抽出したサービスが、マニフェストファイルに記述された複製数だけデプロイされているか否かを判定する。クラスターシステム100は、ステップS2115にて情報を抽出したサービスのインスタンス数が複製数以上であると判定した場合(ステップS2125にてYES)、制御をステップS2130に移す。そうでない場合(ステップS2125にてNO)、クラスターシステム100は、制御をステップS2105に移す。
【0133】
ステップS2130において、クラスターシステム100は、ステップS2115にて情報を抽出したサービスの要求ランレベルに基づいて、全てのノード101のランレベルを更新する。ステップS2135において、クラスターシステム100は、全サービスのデプロイが完了したか否かを判定する。クラスターシステム100は、全サービスのデプロイが完了したと判定した場合(ステップS2135にてYES)、処理を終了する。そうでない場合(ステップS2135にてNO)、クラスターシステム100は、制御をステップS2105に移す。
【0134】
ステップS2140において、クラスターシステム100は、各ノード101上で最も要求ランレベルが高いサービスの情報を抽出する。例えば、クラスターシステム100が4つのノード101A~101Dを含んでいる場合、クラスターシステム100は、各ノード101の最も要求ランレベルが高いサービスの4つの情報を抽出する。
【0135】
ステップS2145において、クラスターシステム100は、クラスターシステム100のデプロイのモードが、クイックサーブモードであるか、またはステイブルサーブモードであるかを判定する。クラスターシステム100は、クラスターシステム100のデプロイのモードが、クイックサーブモードであると判定した場合(ステップS2145にてYES)、制御をステップS2155に移す。そうでない場合(ステップS2145にてNO)、クラスターシステム100は、制御をステップS2150に移す。
【0136】
ステップS2150において、クラスターシステム100は、ステップS2140にて情報を抽出した各サービスのインスタンス数が複製数以上であるか否かを判定する。クラスターシステム100は、ステップS2140にて情報を抽出したサービスのインスタンス数が複製数以上であると判定した場合(ステップS2150にてYES)、制御をステップS2155に移す。そうでない場合(ステップS2150にてNO)、クラスターシステム100は、制御をステップS2105に移す。
【0137】
ステップS2155において、クラスターシステム100は、ステップS2140にて情報を抽出した各サービスの要求ランレベルに基づいて、各サービスを稼働している各ノード101のランレベルを更新する。
【0138】
<I.ハードウェア構成>
図22は、クラスターシステム100を構成する装置2200の一例を示す図である。クラスターシステム100は、1以上の装置2200から構成され得る。装置2200は、CPU(Central Processing Unit)2201と、1次記憶装置2202と、2次記憶装置2203と、外部機器インターフェイス2204と、入力インターフェイス2205と、出力インターフェイス2206と、通信インターフェイス2207とを含む。
【0139】
CPU2201は、装置2200の各種機能を実現するためのプログラムを実行し得る。CPU2201は、例えば、少なくとも1つの集積回路によって構成される。集積回路は、例えば、少なくとも1つのCPU、少なくとも1つのFPGA(Field Programmable Gate Array)、またはこれらの組み合わせ等によって構成されてもよい。
【0140】
1次記憶装置2202は、CPU2201によって実行されるプログラムと、CPU2201によって参照されるデータとを格納する。ある局面において、1次記憶装置2202は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等によって実現されてもよい。
【0141】
2次記憶装置2203は、不揮発性メモリーであり、CPU2201によって実行されるプログラムおよびCPU2201によって参照されるデータを格納してもよい。その場合、CPU2201は、2次記憶装置2203から1次記憶装置2202に読み出されたプログラムを実行し、2次記憶装置2203から1次記憶装置2202に読み出されたデータを参照する。ある局面において、2次記憶装置2203は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read Only Memory)またはフラッシュメモリー等によって実現されてもよい。
【0142】
外部機器インターフェイス2204は、プリンター、スキャナーおよび外付けHDD等の任意の外部機器に接続され得る。ある局面において、外部機器インターフェイス2204は、USB(Universal Serial Bus)端子等によって実現されてもよい。
【0143】
入力インターフェイス2205は、キーボード、マウス、タッチパッドまたはゲームパッド等の任意の入力装置に接続され得る。ある局面において、入力インターフェイス2205は、USB端子、PS/2端子およびBluetooth(登録商標)モジュール等によって実現されてもよい。
【0144】
出力インターフェイス2206は、ブラウン管ディスプレイ、液晶ディスプレイまたは有機EL(electro-luminescence)ディスプレイ等の任意の出力装置に接続され得る。ある局面において、出力インターフェイス2206は、USB端子、D-sub端子、DVI(Digital Visual Interface)端子およびHDMI(登録商標)(High-Definition Multimedia Interface)端子等によって実現されてもよい。
【0145】
通信インターフェイス2207は、有線または無線のネットワーク機器と接続される。ある局面において、通信インターフェイス2207は、有線LAN(Local Area Network)ポートおよびWi-Fi(登録商標)(Wireless Fidelity)モジュール等によって実現されてもよい。他の局面において、通信インターフェイス2207は、TCP/IP(Transmission Control Protocol/Internet Protocol)、UDP(User Datagram Protocol)等の通信プロトコルを用いてデータを送受信してもよい。
【0146】
ある局面において、CPU2201は、
図20および
図21の処理を行うためのプログラムを2次記憶装置2203から1次記憶装置2202に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
【0147】
また、他の局面において、
図1に示す全ての構成要素は、プログラムまたはデータとして、1以上の装置2200内の1次記憶装置2202に分散されて格納されていてもよい。
【0148】
以上説明したように、本実施の形態に従うクラスターシステム100は、マニフェストファイル1710および1720と、ノード101のメタデータ1800とに基づいて、依存関係のあるサービスを適切な順番でデプロイまたは終了することができる。当該機能により、ユーザーは、クラスターシステム100に依存関係のあるサービスをデプロイさせるために詳細なスクリプト等を用意する必要はなく、各サービスのマニフェストファイルに、要求ランレベルを設定するだけでよい。
【0149】
さらに、クラスターシステム100は、ノードベースランレベルモードまたはクラスターベースランレベルモードと、クイックサーブモードまたはステイブルサーブモードとを適宜組み合わせて使用することができる。当該機能により、クラスターシステム100は、適宜、各サービスを特定のノード101に集中的にデプロイしたり、または、各サービスを複数のノード101に分散してデプロイしたりできる。
【0150】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0151】
100 クラスターシステム、101 ノード、102 サービス、103 クラスターコントロールプレーン、110 デプロイマネージャー、111 クラスターランタイムコンポーネント、112 ノードメタデータ&ステート、113 クラスターマネージメントコンポーネント、114 クラスターメタデータ&ステート、1710,1720 マニフェストファイル、1711,1721 要求ランレベル、1800 メタデータ、1801 ランレベル、1900 アイデンティティ管理、1902 アクティブディレクトリ、2200 装置、2201 CPU、2202 1次記憶装置、2203 2次記憶装置、2204 外部機器インターフェイス、2205 入力インターフェイス、2206 出力インターフェイス、2207 通信インターフェイス。