JP2022130200A - コンテナ管理方法およびコンテナ管理プログラム - Google Patents

コンテナ管理方法およびコンテナ管理プログラム Download PDF

Info

Publication number
JP2022130200A
JP2022130200A JP2021029244A JP2021029244A JP2022130200A JP 2022130200 A JP2022130200 A JP 2022130200A JP 2021029244 A JP2021029244 A JP 2021029244A JP 2021029244 A JP2021029244 A JP 2021029244A JP 2022130200 A JP2022130200 A JP 2022130200A
Authority
JP
Japan
Prior art keywords
container
cluster
group
failover
deployed
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.)
Pending
Application number
JP2021029244A
Other languages
English (en)
Inventor
公敬 山崎
Kimitaka Yamazaki
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021029244A priority Critical patent/JP2022130200A/ja
Publication of JP2022130200A publication Critical patent/JP2022130200A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】マルチクラスタ環境における障害の早期対処を実現することを課題とする。【解決手段】コンテナが複数のクラスタに分散されているコンテナシステムで実行されるコンテナ管理方法において、第一のクラスタ内に配備されている第一のコンテナが、第一のクラスタとは異なる第二のクラスタに配備されている第二のコンテナの状態監視を実行し、状態監視の結果に応じて、第二のクラスタとは異なる第三のクラスタに、第二のコンテナのフェイルオーバの実行を指示する。【選択図】図3

Description

本発明は、コンテナ管理方法およびコンテナ管理プログラムに関する。
近年、Kubernetes(登録商標)などのように、多数のコンテナアプリケーション(以下では、「コンテナ」と記載する場合がある)を管理する基盤(以下では、「コンテナ基盤」と記載する場合がある)を用いて、コンテナを動作させるシステムが利用されている。このようなシステムは、スケジューラがコンテナの死活監視を実行し、障害により停止したコンテナが発生した場合に、別のコンテナを生成して動作させることで、システムの可用性を向上させている。
特開2019-149192号公報
ところで、システムの可用性をさらに高めるために、コンテナを利用したマルチクラスタ構成も考えられる。複数のクラスタを管理するために、特定のクラスタ(マスタクラスタ)にマスタスケジューラを配備し、各クラスタにはスケジューラを配備する。そして、マスタスケジューラが各クラスタのスケジューラを管理し、各クラスタのスケジューラがコンテナの実行や管理を行う。
このようなマルチクラスタ構成において障害が発生した場合に、障害場所を特定できず、障害の早期検知ができない。例えば、クラスタ全体の障害が発生すると、当該クラスタのスケジューラでは対処できないので、マスタスケジューラが当該クラスタ上の全コンテナを別のクラスタにフェイルオーバさせる必要がある。しかしながら、マスタスケジューラは、各コンテナを直接監視出来ないので、各クラスタ内のスケジューラを監視することになるが、各クラスタのスケジューラだけの障害か、クラスタ全体の障害かを区別することができない。そのため、障害場所を特定するまでに多くの時間がかかり、障害検知が遅くなり、システムの信頼性が低下する。
一つの側面では、マルチクラスタ環境における障害の早期対処を実現することができるコンテナ管理方法およびコンテナ管理プログラムを提供することを目的とする。
第1の案では、コンテナが複数のクラスタに分散されているコンテナシステムで実行されるコンテナ管理方法において、第一のクラスタ内に配備されている第一のコンテナが、
前記第一のクラスタとは異なる第二のクラスタに配備されている第二のコンテナの状態監視を実行し、前記状態監視の結果に応じて、前記第二のクラスタとは異なる第三のクラスタに、前記第二のコンテナのフェイルオーバの実行を指示する、ことを特徴とする。
一実施形態によれば、マルチクラスタ環境における障害の早期対処を実現することができる。
図1は、実施例1にかかるコンテナシステムの全体構成例を示す図である。 図2は、実施例1にかかるコンテナシステムの相互監視を説明する図である。 図3は、実施例1にかかるコンテナシステムの障害対応例を説明する図である。 図4は、実施例2にかかる各クラスタの全体構成例を示す図である。 図5は、実施例2にかかるマスタサーバとクラスタサーバの機能構成を示す機能ブロック図である。 図6は、稼働情報管理DBに記憶される情報の例を示す図である。 図7は、フェイルオーバ先DBに記憶される情報の例を示す図である。 図8は、実施例2にかかるコンテナシステム内の各コンテナの機能構成を説明する図である。 図9は、コンテナ情報管理テーブルに記憶される情報の例を示す図である。 図10は、コンテナ間の監視を説明する図である。 図11は、障害検出を説明する図である。 図12は、フェイルオーバを説明する図である。 図13は、フェイルオーバ後の稼働情報の収集を説明する図である。 図14は、実施例2にかかるフェイルオーバ処理の流れを示すフローチャートである。 図15は、実施例3にかかるフェイルオーバ処理後の遅延による性能劣化時の流れを示すフローチャートである。 図16は、実施例4にかかるフェイルオーバ処理後の縮退による性能劣化時の流れを示すフローチャートである。 図17は、重複クラスタ数によるフェイルオーバ先の特定処理の流れを示すフローチャートである。 図18は、非重複クラスタ数によるフェイルオーバ先の特定処理の流れを示すフローチャートである。 図19は、通信遅延量によるフェイルオーバ先の特定処理の流れを示すフローチャートである。 図20は、ハードウェア構成例を説明する図である。
以下に、本願の開示するコンテナ管理方法およびコンテナ管理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
[全体構成]
図1は、実施例1にかかるコンテナシステムの全体構成例を示す図である。図1に示すように、実施例1にかかるコンテナシステムは、複数の物理サーバや物理サーバ上で動作する仮想マシン(VM:Virtual Machine)により提供されるマルチクラスタで構成される。図1の例では、クラスタ1からクラスタ5の5つのクラスタリングシステムが実行されている一例を図示している。また、各クラスタは、1台以上の物理サーバまたは1台以上のVMにより提供されるとともに、それぞれが異なる物理サーバやVMで提供されている。また、コンテナシステムでは、一例としてKubernetes(登録商標)を用いて、コンテナが実行されているものとする。
図1に示すように、クラスタ1には、マスタスケジューラ、コンテナA1、コンテナC1が配備される。クラスタ2には、スケジューラ、コンテナA2、コンテナB2、コンテナC2が配備され、クラスタ3には、スケジューラ、コンテナB3が配備される。クラスタ4には、スケジューラ、コンテナA4、コンテナB4、コンテナC4が配備され、クラスタ5には、スケジューラ、コンテナB5、コンテナC5が配備される。
マスタスケジューラは、各スケジューラからのデータ受信により、各クラスタの死活監視やスケジューラが監視したクラスタの死活監視結果などを管理し、クラスタやコンテナの制御を実行する。なお、従来から利用されるKubernetes(登録商標)では、マスタスケジューラは、各クラスタの各コンテナを直接管理することができない。したがって、マスタスケジューラは、あるクラスタのスケジューラの異常を検出すると、当該あるクラスタ、あるクラスタ内のコンテナ、あるクラスタ内のスケジューラのいずれに異常があるか特定できず、あるクラスタ内の全コンテナをフェイルオーバさせる必要がある。
各スケジューラは、各クラスタ内のコンテナに関する制御を実行する。例えば、各スケジューラは、同一クラスタ内のコンテナの稼働状況を管理し、死活情報をマスタスケジューラに通知する。マスタスケジューラは、各コンテナのスケジューラとの間で死活監視を実行し、各クラスタの死活状況や各クラスタ内のコンテナの稼働状況を管理する。
各コンテナは、同種のコンテナとコンテナグループを構成し、同種の1つまたは複数のコンテナと連携して各種サービスを実行する。例えば、コンテナA1とコンテナA2とコンテナA3とは同じサービスを提供するコンテナグループAに属し、相互にレプリカの関係である。また、コンテナB2とコンテナB3とコンテナB4とコンテナB5とは同じサービスを提供するコンテナグループBに属し、相互にレプリカの関係である。また、コンテナC1とコンテナC2とコンテナC4とコンテナC5とは同じサービスを提供するコンテナグループCに属し、相互にレプリカの関係である。このようにすることで、同一コンテナグループに属するコンテナ同士は常に連携を行っているため、本発明のための通信を行うための接続を改めて設定する必要がないという効果がある。
また、各クラスタ内では、各コンテナのイメージデータを共有しており、各スケジューラが、同一クラスタ内で稼働中(動作中)のコンテナを停止させたり、任意のコンテナを配備したりすることができる。
このような構成において、各コンテナは、同じコンテナグループに属する他のコンテナの相互監視を実行する。図2は、実施例1にかかるコンテナシステムの相互監視を説明する図である。図2に示すように、例えば、クラスタ1のコンテナA1は、クラスタ2のコンテナA2およびクラスタ4のコンテナA4の死活監視を実行し、クラスタ2のコンテナA1は、クラスタ1のコンテナA1およびクラスタ4のコンテナA4の死活監視を実行し、クラスタ4のコンテナA4は、クラスタ2のコンテナA2およびクラスタ1のコンテナA1の死活監視を実行する。
そして、各コンテナは、他のコンテナの障害を検出すると、自コンテナが動作するクラスタを含む正常動作中のクラスタに、障害が検出されたコンテナをフェイルオーバさせる。図3は、実施例1にかかるコンテナシステムの障害対応例を説明する図である。図3に示すように、クラスタ4のコンテナA4は、クラスタA2のコンテナA2の障害を検出した場合、自クラスタ4であるスケジューラに対して、クラスタ4にコンテナA2をフェイルオーバさせる指示を出力する。
このように、コンテナシステムは、クラスタ全体に影響する障害が発生し、当該クラスタ内のスケジューラが障害の検知や対処を行うことができない場合であっても、他クラスタ内のコンテナが障害を検知することができるので、障害の早期検知を実現することができる。
本実施例においては、説明を簡略化するために、1台の物理サーバが1つのクラスタを実行する例で説明するが、構成手法や形式等を限定するものではない。
図4は、実施例2にかかる各クラスタの全体構成例を示す図である。図4に示すように、マスタサーバ100がクラスタ1を動作させ、クラスタサーバ200がクラスタ2を動作させ、クラスタサーバ300がクラスタ3を動作させ、クラスタサーバ400がクラスタ4を動作させ、クラスタサーバ500がクラスタ5を動作させる。なお、各クラスタで動作するコンテナなどは、実施例1と同様なので、詳細な説明は省略する。
このような構成において、マスタサーバおよび各クラスタサーバは、同一のクラスタ内に配備する第一のコンテナであって、第一のクラスタとは異なる第二のクラスタに配備されている第二のコンテナの状態監視を実行し、状態監視の結果に応じて、第二のクラスタに、第二のコンテナのフェイルオーバの実行を指示する、第一のコンテナを動作させる。
つまり、各クラスタ内で動作する各コンテナは、クラスタ間を跨いで、同じコンテナグループのコンテナの死活監視を実行し、停止したコンテナを検出すると、停止したコンテナを別のクラスタにフェイルオーバさせることができる。この結果、コンテナシステムは、クラスタ全体に影響する障害が発生し、当該クラスタ内のスケジューラが障害の検知や対処を行うことができない場合であっても、他クラスタ内のコンテナが障害を検知することができるので、障害の早期検知を実現することができる。
[コンテナシステムの機能構成]
次に、コンテナシステムを構成する各サーバの機能構成を説明する。なお、各クラスタサーバは、同様の構成を有するので、ここではクラスタサーバ200について説明する。図5は、実施例2にかかるマスタサーバとクラスタサーバの機能構成を示す機能ブロック図である。
(マスタサーバの機能構成)
図5に示すように、マスタサーバ100は、通信部101、記憶部102、制御部110を有する。
通信部101は、他の装置との間の通信を制御する処理部であり、例えば通信インタフェースなどにより実現される。例えば、通信部101は、マスタサーバ100と他のクラスタサーバそれぞれとの通信を制御することで、クラスタ1と他クラスタとの間で各種データ等の送受信を実行する。
記憶部102は、各種データや制御部110が実行するプログラムなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどにより実現される。この記憶部102は、クラスタ1で動作するマスタスケジューラや各コンテナがアクセス可能なデータとして、イメージファイルDB103と稼働情報管理DB104を記憶する。
イメージファイルDB103は、各コンテナのイメージファイルを記憶するデータベースである。例えば、イメージファイルDB103は、コンテナごとに、当該コンテナを起動させることができる情報を含むイメージファイルを記憶する。なお、このイメージファイルは、コンテナシステム内の各クラスタで共通に保持されている。
稼働情報管理DB104は、コンテナシステムに配備されている各コンテナの稼働情報を記憶するデータベースである。図6は、稼働情報管理DB104に記憶される情報の例を示す図である。図6に示すように、稼働情報管理DB104は、「クラスタID、コンテナID、リソース使用率、サービス時間、フェイルオーバ」を記憶する。
ここで記憶される「クラスタID」は、各クラスタを識別する識別子であり、「コンテナID」は、各コンテナを識別する識別子である。「リソース使用率」は、コンテナが使用しているプロセッサ、メモリ、ハードウェアなどの各リソースの使用率である。例えば、「リソース使用率」は、コンテナに割り当てられたハードウェアのリソースのうちどのくらいのリソースを使用中かを示す割合でもよく、コンテナがクラスタ内のリソースのうちどのくらいのリソースを使用中かを示す割合でもよい。「サービス時間」は、コンテナが提供しているサービスの継続時間である。「フェイルオーバ」は、フェイルオーバされたコンテナか否かを識別する情報である。
図6の例では、クラスタ1で動作するコンテナA1は、リソース使用率が80%、サービス時間10msであることを示している。また、クラスタ1で動作するコンテナB1は、フェイルオーバされたコンテナであり、リソース使用率が65%、サービス時間4msであることを示している。なお、稼働情報管理DB104は、マスタサーバ100内で、他のクラスタサーバの各コンテナ等からアクセス可能に設置される。また、稼働情報管理DB104は、コンテナシステム内で共有のDBサーバなどに配備されてもよい。
制御部110は、マスタサーバ100全体を司る処理部であり、例えばプロセッサなどにより実現される。例えば、制御部110は、クラスタ実行部111、スケジュール実行部112、コンテナ実行部113を有する。なお、クラスタ実行部111、スケジュール実行部112、コンテナ実行部113は、プロセッサが有する電子回路やプロセッサが実行するプロセスなどにより実現される。
クラスタ実行部111は、マスタサーバ100内のプロセッサやメモリなどのハードウェアリソースを用いて、クラスタ環境を提供する処理部である。例えば、クラスタ実行部111は、公知のクラスタリングシステムを用いてクラスタ1を提供する。
スケジュール実行部112は、クラスタ実行部111が提供するクラスタ1内でマスタスケジューラを実行する処理部である。例えば、スケジュール実行部112は、クラスタ1で、後述する機能を有するマスタスケジューラを実行する。
コンテナ実行部113は、クラスタ実行部111が提供するクラスタ1内でコンテナを実行する処理部である。例えば、コンテナ実行部113は、クラスタ1で、マスタスケジューラの指示にしたがって、後述する機能を有するコンテナA1、コンテナC1を実行する。
(クラスタサーバの機能構成)
図5に示すように、クラスタサーバ200は、通信部201、記憶部202、制御部210を有する。
通信部201は、他の装置との間の通信を制御する処理部であり、例えば通信インタフェースなどにより実現される。例えば、通信部201は、クラスタサーバ200と他のクラスタサーバそれぞれとの通信、および、クラスタサーバ200とマスタサーバ100との通信を制御することで、クラスタ2と他クラスタとの間で各種データ等の送受信を実行する。
記憶部202は、各種データや制御部210が実行するプログラムなどを記憶する記憶装置の一例であり、例えばメモリやハードディスクなどにより実現される。この記憶部202は、クラスタ2で動作するスケジューラや各コンテナがアクセス可能なデータとして、イメージファイルDB203とフェイルオーバ先DB204を記憶する。
イメージファイルDB203は、各コンテナのイメージファイルを記憶するデータベースである。ここで記憶される情報は、マスタサーバ100のイメージファイルDB103と同様である。
フェイルオーバ先DB204は、各コンテナグループのフェイルオーバ先を記憶するデータベースである。図7は、フェイルオーバ先DB204に記憶される情報の例を示す図である。図7に示すように、フェイルオーバ先DB204は、「コンテナグループ、フェイルオーバ先」を記憶する。
ここで記憶される「コンテナグループ」は、フェイルオーバ対象のコンテナグループを示し、「フェイルオーバ先」は、フェイルオーバ先と指定されたクラスタを示す。図7の例では、コンテナグループAに属する各コンテナのフェイルオーバ先として、コンテナグループBが選択されており、コンテナグループBのコンテナBnが配備される各クラスタのうちクラスタ3がフェイルオーバ先に設定されていることを示す。
なお、フェイルオーバ先は、制御部210によって決定される。例えば、制御部210は、ある同一コンテナグループ(対象グループ)に関して、配備先クラスタに2以上の重複があり、かつ重複しないレプリカ数が最大となるグループを選定する。そして、制御部210は、重複レプリカを除き、選定されたグループ内で、対象グループの各コンテナからの通信遅延の平均が最小となるクラスタを、対象グループのフェイルオーバ先として決定する。
制御部210は、クラスタサーバ200全体を司る処理部であり、例えばプロセッサなどにより実現される。例えば、制御部210は、クラスタ実行部211、スケジュール実行部212、コンテナ実行部213を有する。なお、クラスタ実行部211、スケジュール実行部212、コンテナ実行部213は、プロセッサが有する電子回路やプロセッサが実行するプロセスなどにより実現される。
クラスタ実行部211は、クラスタサーバ200内のプロセッサやメモリなどのハードウェアリソースを用いて、クラスタ環境を提供する処理部である。例えば、クラスタ実行部211は、公知のクラスタリングシステムを用いてクラスタ2を提供する。
スケジュール実行部212は、クラスタ実行部211が提供するクラスタ2内でスケジューラを実行する処理部である。例えば、スケジュール実行部212は、クラスタ2で、後述する機能を有するスケジューラを実行する。
コンテナ実行部213は、クラスタ実行部211が提供するクラスタ2内でコンテナを実行する処理部である。例えば、コンテナ実行部213は、クラスタ2で、マスタスケジューラやスケジューラの指示にしたがって、後述する機能を有するコンテナA2、コンテナB2、コンテナC2を実行する。
[コンテナの機能]
次に、コンテナシステムで実行される各コンテナの機能構成を説明する。なお、各クラスタサーバ内の各コンテナは、同様の構成を有するので、ここではクラスタサーバ200について説明する。図8は、実施例2にかかるコンテナシステム内の各コンテナの機能構成を説明する図である。なお、各クラスタで実行される各コンテナは、図4のとおりとする。
(クラスタ1)
図4に示すように、クラスタ1では、マスタスケジューラと、コンテナA1と、コンテナC1とが実行されるが、ここではマスタスケジューラについて説明する。なお、コンテナA1とコンテナC1は、クラスタ2のコンテナと同様の構成を有するので、ここでは詳細な説明は省略する。
図8に示すように、クラスタ1のマスタスケジューラ130は、死活情報取得部131と稼働情報取得部132を有する。なお、マスタスケジューラ130は、同一クラスタ1内で、イメージファイルDB103の記憶される情報を用いて各コンテナを生成したり(起動中)、各コンテナを稼働させたり(動作中)、各コンテナを停止させたりする(停止中)。
死活情報取得部131は、各クラスタの死活情報を取得して動作状態を管理する処理部である。例えば、死活情報取得部131は、同一クラスタ1内の各コンテナを定期的に監視して、死活情報を管理する。
また、死活情報取得部131は、各クラスタのスケジューラに、死活確認メッセージを定期的に送信し、その応答に基づき、各クラスタの状況を取得する。例えば、死活情報取得部131は、クラスタ2のスケジューラ230に死活確認メッセージを送信し、応答が受信できた場合には、クラスタ2が正常稼働中と判定し、応答が受信できない場合には、クラスタ2が異常と判定する。異常時は、Kubernetes(登録商標)で実装される機能により、クラスタやコンテナの回復等が実行される。
稼働情報取得部132は、複数クラスタに跨って配備されているコンテナシステムのサービス状態を監視する処理部である。例えば、稼働情報取得部132は、各スケジューラから、コンテナのリソース使用率やサービス時間を収集して、コンテナシステムのサービス状態を監視する。
(クラスタ2)
クラスタ2は、図4に示すように、スケジューラと、コンテナA2と、コンテナB2と、コンテナC2とが実行されるが、各コンテナは同様の構成を有するので、ここではスケジューラとコンテナA2について説明する。
図8に示すように、スケジューラ230は、コンテナ情報管理テーブル231、死活情報応答部232、死活情報取得部233、コンテナ制御部234、コンテナ情報取得部235を有する。
コンテナ情報管理テーブル231は、同一クラスタ内の各コンテナに関する情報を記憶する。具体的には、コンテナ情報管理テーブル231は、クラスタ2に配備された各コンテナについて、スケジューラ230により取得された情報を記憶する。
図9は、コンテナ情報管理テーブル231に記憶される情報の例を示す図である。図9に示すように、コンテナ情報管理テーブル231は、「コンテナID、死活、ステータス、障害情報を」を記憶する。「コンテナID」は、コンテナを識別する識別子である。「死活」は、コンテナの死活情報であり、正常時は「OK」、異常時は「NG」が設定される。「ステータス」は、コンテナのステータスを示す情報であり、動作中は「Running」、動作はしていないものの作成された状態である起動中は「Creating」、停止中は「Stop」が設定される。「障害情報」は、障害の発生状態を示している。
図9の例では、クラスタ2では、コンテナA2、コンテナB2、コンテナC2が配備されており、コンテナA2が動作中、コンテナB2が動作はしていないものの起動中、コンテナC2が停止中であることを示している。また、コンテナB2は、サービスを提供していない状態であるものの、他クラスタからコンテナグループAに属するコンテナの障害を検出した状態であることを示している。
死活情報応答部232は、自身が管理するクラスタ内で動作するコンテナなどを示す各ワーカノードの死活状態を確認して応答する処理部である。例えば、死活情報応答部232は、クラスタ2内の各コンテナの死活状態を監視し、マスタスケジューラ130から受信した死活確認メッセージの応答として、各コンテナの死活状態を応答する。
死活情報取得部233は、ワーカノード上のクラスタの死活状態を取得する処理部である。例えば、死活情報取得部233は、同一クラスタ2内の各コンテナに、死活確認メッセージを定期的に送信し、その応答に基づき、各クラスタの状況を取得する。そして、死活情報取得部233は、取得した情報に基づき、コンテナ情報管理テーブル231を更新する。
コンテナ制御部234は、ワーカノード上で、コンテナの起動、停止、配備(作成)、削除など、コンテナに関する各種の処理を実行する処理部である。また、コンテナ制御部234は、後述するコンテナ情報取得部235等の指示により、別のクラスタ内のコンテナのフェイルオーバを実行して、クラスタ2内で当該コンテナを動作させる。
コンテナ情報取得部235は、コンテナグループ間連携によって更新される情報を取得する処理部である。例えば、コンテナ情報取得部235は、コンテナA2によって他クラスタ内のあるコンテナの障害が検出されると、当該あるコンテナのフェイルオーバを実行する。
すなわち、コンテナ情報取得部235は、当該あるコンテナをクラスタ2で実行させるために、当該あるコンテナの配備および動作をコンテナ制御部234に要求することで、当該あるコンテナのフェイルオーバを実現する。このとき、コンテナ情報取得部235は、コンテナ情報管理テーブル231を更新する。
図8に戻り、コンテナA2は、死活情報応答部241、稼働情報登録部242、グループ間処理部243を有する。
死活情報応答部241は、自コンテナの死活状態を確認して応答する処理部である。例えば、死活情報応答部241は、死活情報取得部233から受信した死活確認メッセージに対して、コンテナA2の死活状態を応答する。
稼働情報登録部242は、自コンテナの稼働情報を取得して、クラスタ1内の稼働情報管理DB104を更新する処理部である。例えば、稼働情報登録部242は、コンテナA4のリソース使用率やサービス時間を収集して、集中した情報で稼働情報管理DB104を直接的に更新したり、収集した情報をマスタスケジューラ130に送信して稼働情報管理DB104を間接的に更新したりする。
グループ間処理部243は、コンテナグループ間連携によって更新された情報を保持し、コンテナグループ間の情報交換を実行する処理部である。例えば、グループ間処理部243は、コンテナシステムで動作するコンテナのうち、コンテナA2が属するコンテナグループAの各コンテナとの間で監視メッセージを送受信して、相互に死活監視を実行する。
そして、グループ間処理部243は、クラスタ4のコンテナA4の停止を検出した場合、フェイルオーバ先DB204のフェイルオーバ先にしたがってフェイルオーバを実行する。例えば、グループ間処理部243は、同一クラスタ2内のコンテナB2に、クラスタ4のコンテナA4が停止したことを通知する。すると、コンテナB2のグループ間処理部は、クラスタ3のコンテナB3にコンテナA4が停止したことを通知する。そして、コンテナB3のグループ間処理部は、クラスタ3のスケジューラにコンテナA4の停止を通知し、クラスタ3のスケジューラがコンテナA4を生成して動作させることで、フェイルオーバが完了する。
このように、マスタスケジューラ130では検出できないコンテナ異常が発生した場合であっても、同一コンテングループでクラスタを跨って相互に監視することで、コンテナ異常を検出することができる。また、コンテナ異常検出時は、検出したコンテンが、予め決定しておいたフェイルオーバ先に通知することで、遅滞なく、フェイルオーバを完了することができる。
また、グループ間処理部243は、コンテナグループ間の情報交換を実行することで、障害復旧を検出することもできる。例えば、フェイルオーバ先のグループ間処理部243がフェイルオーバ元の障害普及を検出すると、フェイルオーバ先のスケジューラ230が、フェイルオーバさせたコンテナを削除する。また、フェイルオーバ元のスケジューラは、障害発生前の各コンテナを配備して動作させる。この結果、コンテナの切り戻しが完了する。
なお、障害復旧の通知は、コンテナグループ間の情報交換に限らず、各スケジューラ間の情報交換で検出することもでき、マスタスケジューラ130が各スケジューラに通知することもでき、管理者が手動で各スケジューラに通知することもできる。
[具体例]
次に、図10から図13を用いて、フェイルオーバの具体例を説明する。図10は、コンテナ間の監視を説明する図である。図10に示すように、具体例に示すコンテナシステムは、クラスタ1、クラスタ2、クラスタ3、クラスタ4、クラスタ5を有する。
(構成)
クラスタ1には、マスタスケジューラ130とコンテナA1とコンテナC1が配備され、クラスタ2には、スケジューラ230とコンテナA2とコンテナB2とコンテナC2が配備され、クラスタ3には、スケジューラ330とコンテナB3が配備される。クラスタ4には、スケジューラ430とコンテナA4とコンテナB4とコンテナC4が配備され、クラスタ5には、スケジューラ530とコンテナB5とコンテナC5が配備される。
コンテナA1、コンテナA2、コンテナA3は、同じコンテナグループAに属し、コンテナB2、コンテナB3、コンテナB4、コンテナB5は、同じコンテナグループBに属し、コンテナC1、コンテナC2、コンテナC3、コンテナC4は、同じコンテナグループCに属する。なお、マスタスケジューラ130は、図8で説明したマスタスケジューラ130と同様の機能を有する。スケジューラ230、スケジューラ330、スケジューラ430、スケジューラ530は、図8で説明したスケジューラ230と同様の機能を有する。
(相互監視)
このような構成において、各コンテナは、同一コンテナグループ内のコンテナ間で相互に死活監視を実行する。例えば、図10に示すように、コンテナA1、コンテナA2、コンテナA4は、相互に監視する。なお、図10では、コンテナグループAを例示したが、コンテナB2、コンテナB3、コンテナB4、コンテナB5も相互に監視し、コンテナC1、コンテナC2、コンテナC4、コンテナC5も相互に監視する。
(障害検出)
次に、一例として、クラスタ4のコンテナA4がクラスタ2の障害を検出した例を説明する。図11は、障害検出を説明する図である。図11に示すように、コンテナA4は、クラスタ2のコンテナA2から、定期的に送信する死活確認メッセージの応答を受信できない場合に、クラスタ2またはコンテナA2の停止を検出する。すると、コンテナA4は、フェイルオーバ先DBに記憶される情報にしたがって、フェイルオーバ先へ障害通知を実行する。
ここで、コンテナグループAのフェイルオーバ先の決定例を説明する。まず、コンテナシステム内の複数のコンテナグループのうち、コンテナグループAのコンテナAn(n=1,2,・・・)と同じクラスタに配備されるクラスタの数である重複クラスタ数が閾値以上であるコンテナグループを特定する。例えば、コンテナグループBについて、コンテナグループAのコンテナと同じクラスタに属するコンテナの数を2(クラスタ2、クラスタ4)と特定される。同様に、コンテナグループCについて、コンテナグループAのコンテナAnと同じクラスタに属するコンテナの数を2(クラスタ2、クラスタ4)と特定される。この結果、コンテナグループBとコンテナグループCがフェイルオーバ先候補と特定される。コンテナグループAに障害が発生した場合、コンテナグループAに属するコンテナが障害を検知し、当該コンテナが、同一クラスタ内に存在する他のコンテナグループに属するコンテナに対して、フェイルオーバの依頼を行う。この時、障害を検知したコンテナと同じクラスタ内に、フェイルオーバの依頼を行うコンテナが存在する必要がある。上述の処理は、コンテナグループAと同一のクラスタに存在していることの多いコンテナグループを、フェイルオーバの依頼を行う候補(フェイルオーバ先候補)として特定するものである。
次に、フェイルオーバ先候補のうち、コンテナグループAのコンテナAnが配備されていないクラスタに配備されるクラスタの数である非重複クラスタ数が閾値以上であるコンテナグループを選択する。例えば、コンテナAnが配備されていないクラスタ3とクラスタ5を特定し、クラスタ3とクラスタ5のうち、コンテナグループBのコンテナが配備されている非重複クラスタ数が2、コンテナグループCのコンテナが配備されている非重複クラスタ数が1であることから、コンテナグループBを移行先コンテナグループに決定する。これにより、障害発生時にフェイルオーバ先となる、コンテナAnが動作していないクラスタの候補が多くなるため、フェイルオーバ後のサービス性能への影響が小さいクラスタを実際のフェイルオーバ先として選択できる可能性が高まるという効果がある。
そして、移行先コンテナグループに属する各コンテナBnと、移行元であるコンテナグループAに属する各コンテナAnとの平均遅延が最小となるコンテナが実行されるクラスタを移行先に決定する。例えば、遅延(A1B3+A2B3+A4B3)<遅延(A1B5+A2B5+A4B5)の場合、クラスタ3がフェイルオーバ先に決定される。これにより、通信遅延を考慮したフェイルオーバ先の決定が可能となる。なお、遅延量の算出方法は、伝送時間などを用いた通信ネットワークの伝送遅延時間など公知の手法を採用することができる。
この結果、障害を検出したコンテナA4は、同一クラスタ4に配備されるコンテナのうち、移行先コンテナグループBに属するコンテナB4に、クラスタ2のコンテナA2で障害が発生したことを通知する。そして、コンテナB4は、フェイルオーバ先のクラスタ3に配備される同一コンテナグループのコンテナB3に、クラスタ2のコンテナA2で障害が発生したことを通知する。その後、コンテナB3は、同一クラスタ内のスケジューラ330に、クラスタ2のコンテナA2で障害が発生したことを通知する。
(フェイルオーバ)
次に、フェイルオーバについて説明する。図12は、フェイルオーバを説明する図である。図12に示すように、クラスタ3のスケジューラ330は、コンテナB3から、クラスタ2のコンテナA2の障害発生が通知されると、イメージファイルDBからコンテナAの情報を取得して、コンテナA3として配備した上で動作させる。この結果、コンテナグループAは、障害発生前ではコンテナA1、コンテナA2、コンテナA4でサービスを提供していたが、障害発生後ではコンテナA1、コンテナA3、コンテナA4でサービス提供を継続することができる。
(稼働情報の収集)
その後は、マスタスケジューラ130が稼働情報を収集することで、コンテナシステム内でフェイルオーバが共有される。図13は、フェイルオーバ後の稼働情報の収集を説明する図である。図13に示すように、マスタスケジューラ130は、各クラスタの各スケジューラに定期的に死活監視メッセージを送信する。ここで、マスタスケジューラ130は、クラスタ2のスケジューラ230からの応答が検出できないことから、クラスタ2の障害を検出する。そして、マスタスケジューラ130は、クラスタ3のスケジューラ330から、配備されているコンテナ一覧の情報を取得することで、コンテナA4(コンテナA2)のフェイルオーバを検出する。このとき、マスタスケジューラ130は、各スケジューラから、各コンテナの稼働情報も取得する。
このようにして、マスタスケジューラ130は、稼働情報管理DB104を最新に更新する。また、各スケジューラは、自クラスタのコンテナ情報を定期的に取得することで、コンテナ情報管理テーブルを最新に維持する。
なお、上記例では、クラスタ2で障害が発生した場合のコンテナA2のフェイルオーバについて説明したが、クラスタ2内のコンテナB2およびコンテナC2についても同様の処理手順により、フェイルオーバが実行される。
[処理の流れ]
図14は、実施例2にかかるフェイルオーバ処理の流れを示すフローチャートである。図14に示すように、各コンテナは、監視タイミングに到達すると(S101:Yes)、同一コンテナグループ内のコンテナを選択し(S102)、死活監視メッセージを送信する(S103)。
そして、各コンテナは、死活監視メッセージへの応答を受信すると(S104:Yes)、同一コンテナグループ内で未選択のコンテナが存在するか否かを判定する(S105)。ここで、未選択のコンテナが存在しない場合(S105:No)、今回の監視タイミングにおける処理が終了する。
一方、未選択のコンテナが存在する場合(S105:Yes)、各コンテナは、S102以降に戻り、同一コンテナグループ内のコンテナを選択し、死活監視メッセージを送信する。
また、S104において、各コンテナのいずれかが、死活監視メッセージへの応答を受信できない場合(S104:No)、コンテナまたはクラスタの障害を検知し、フェイルオーバ処理が実行される(S106)。
例えば、コンテナA4は、死活監視メッセージの応答を受信できなかったコンテナA2について事前に選定されたコンテナグループBの同一クラスタ内のコンテナB4に障害を通知する。そして、コンテナB4が、コンテナグループB間で障害情報を、フェイルオーバ先のクラスタ3に通知する。その後、クラスタ3のコンテナB3がコンテナ情報管理テーブルを更新したり、スケジューラ330に障害を通知したりする。この結果、クラスタ3のスケジューラ330は、コンテナ情報管理テーブルの参照やコンテナB3からの通知によりコンテナグループAの障害を検出し、クラスタ3内にコンテナA3を新たに配備して動作させることで、コンテナグループAのフェイルオーバを完成させる。
その後、障害が復旧すると(S107:Yes)、障害前のコンテナへの切り戻しが実行される(S108)。例えば、フェイルオーバ先のクラスタ3のスケジューラ330は、障害時と同じ経路またはマスタスケジューラ130から、障害復旧が通知されると、フェイルオーバさせたコンテナA3を削除する。また、障害が復旧したクラスタ2のスケジューラ230は、障害で停止していたコンテナA2を含む各コンテナを動作させる。
[効果]
上述したように、コンテナシステムは、第一のコンテナが他のクラスタに配備されている、第一のコンテナのレプリカである同グループの第二のコンテナの死活監視を行い、コンテナ間で障害検出を実現することができる。この結果、システム外部から全コンテナの死活監視を行う場合に比べて、限られた範囲の監視だけで、迅速に障害検知を行うことができ、フェイルオーバによる障害対処を高速に実現することができる。
また、あるクラスタに属するコンテナから、別クラスタのスケジューラへ各種指示を送信する手法は、宛先管理が複雑で、アクセス制御が煩雑になるので、好ましい手法ではない。これに対して、上記コンテナシステムは、クラスタ間で監視し、クラスタ間で障害情報を伝達するので、煩雑な設定を不要にすることができる。
また、各コンテナグループが独立にフェイルオーバ先を選定してしまうと、偏りが生じてフェイルオーバ先でリソース逼迫による性能劣化が生じる場合がある。また、各コンテナグループ間でフェイルオーバ先を分散させると、応答遅延が大きくなりサービス品質劣化が生じる場合がある。これらに対して、実施例1にかかるコンテナシステムでは、障害発生時のフェイルオーバ先を同一コンテナグループ内で選定および合意しておくことができるので、サービス劣化を抑制しつつ、高速なフェイルオーバを実現することができ、サービス可用性の向上および信頼性の向上を実現することができる。
また、上記コンテナシステムは、クラスタ障害が短時間で復旧する可能性もあるので、優先度の高いコンテナや緊急性の高いコンテナからフェイルオーバを実行することで、高速かつ安定的なサービス復旧を実現することができる。例えば、上記コンテナシステムは、予め優先度を決めておく、停止しているコンテナが多いコンテナグループを優先する、または、サービス利用者やサービス継続時間が長いコンテナを優先するなど、任意の手法により、フェイルオーバの順序を制御することができる。
一般的に、コンテナは起動時間が短く、クラスタ間の移動コストが小さいので、高速なフェイルオーバを実現できる。そこで、実施例1で説明したように、クラスタ障害時の他クラスタの負荷状態等を予測できないが、ある程度投機的にフェイルオーバによるコンテナ移動を優先することで、高速な障害対処を実現できる。このとき、フェイルオーバ先の性能を監視し、性能劣化が現れた場合には同一コンテナグループ内で順次対処することで、サービスの品質劣化を抑制することができる。
例えば、フェイルオーバ先のクラスタのスケジューラは、同一クラスタ内の各コンテナの稼働状況を監視し、サービス遅延などが発生したことを検出すると、フェイルオーバさせたコンテナを一時的に削除したり、一時的に停止させたりして、サービス遅延の回復を図ることができる。
上記例を実施例1の例で説明すると、フェイルオーバ先のクラスタ3のスケジューラ330は、コンテナA3を含むいずれかのコンテナの通信遅延が閾値以上になって、あるコンテナグループのサービス性能劣化を検出すると、コンテナA3を削除する。この結果、コンテナシステムでは、コンテナグループAに関してはコンテナA1とコンテナA4との縮退運転を実行する。
なお、フェイルオーバ先に関わらず、他のクラスタのスケジューラも、同一クラスタ内の各コンテナの稼働状況を監視し、サービス遅延などが発生すると、フェイルオーバ先に、フェイルオーバさせたコンテナの停止等を要求することもできる。
図15は、実施例3にかかるフェイルオーバ処理後の遅延による性能劣化時の流れを示すフローチャートである。図15に示すS201からS206は、図14で説明したS101からS106までの処理と同様なので、詳細な説明は省略する。
フェイルオーバ後、フェイルオーバ先のクラスタのスケジューラは、障害が復旧するまで、遅延による性能劣化を検出すると(S207:Yes)、フェイルオーバしたコンテナの削除を実行する(S208)。一方、フェイルオーバ先のクラスタのスケジューラは、遅延による性能劣化を検出しない間は(S207:No)、フェイルオーバしたコンテナの稼働を維持する。なお、性能劣化の一例としては、通信遅延、サービス遅延、処理遅延など、一般的に利用される情報を用いることができる。
その後のS209とS210は、図14で説明したS107とS108と同様なので、詳細な説明は省略する。
例えば、実施例3の縮退運転中に、プロセッサやメモリなどのリソース使用率の異常な増加などで、あるリソース逼迫によるサービスの性能劣化が生じた場合、スケールアウトによりサービス品質の向上を図ることもできる。
上記実施例の例で説明すると、フェイルオーバ先のクラスタ3のスケジューラ330がコンテナA3を削除することで、コンテナシステムで、コンテナグループAに関してはコンテナA1とコンテナA4との縮退運転が実行されている。この状態で、例えば、クラスタ4のスケジューラ430が、クラスタ4内のコンテナA4のリソース使用率が閾値以上となったことを検出すると、クラスタ4内にコンテナA4-2を新たに生成して、コンテナグループAのサービス性能の向上を図ることができる。
図16は、実施例4にかかるフェイルオーバ処理後の縮退による性能劣化時の流れを示すフローチャートである。図16に示すS301からS308は、図15で説明したS201からS208までの処理と同様なので、詳細な説明は省略する。
縮退運転後、各クラスタの各スケジューラは、縮退による性能劣化を検出すると(S309:Yes)、自クラスタ内で、性能劣化した対象のコンテナのスケールアウトを実行する(S310)。一方、各クラスタの各スケジューラは、縮退による性能劣化を検出しない間は(S309:No)、縮退中のコンテナの稼働を維持する。
その後のS311とS312は、図14で説明したS107とS108と同様なので、詳細な説明は省略する。なお、障害復旧した場合、スケールアウトも終了する。上記例では、クラスタ4のスケジューラ430は、クラスタ4内に生成したコンテナA4-2を削除する。
上述したフェイルオーバ先の決定方法は、それぞれ独立して実行することができる。具体的には、重複クラスタ数による決定手法、非重複クラスタ数による決定手法、通信遅延量による決定手法のいずれかの手法を用いて決定することもでき、すべての条件を満たすフェイルオーバ先を決定することもできる。そこで、ここでは、一例として、クラスタサーバ200が各決定手法を実行する場合の処理の流れを説明する。
(重複クラスタ数による決定手法)
図17は、重複クラスタ数によるフェイルオーバ先の特定処理の流れを示すフローチャートである。図17に示すように、クラスタサーバ200は、コンテナグループを1つ選択し(S401)、選択したコンテナグループのコンテナが動作するクラスタを特定し(S402)、選択したコンテナグルーブ以外の他コンテナグループのコンテナが動作するクラスタを特定する(S403)。
そして、クラスタサーバ200は、重複クラスタ数を算出する(S404)。例えば、クラスタサーバ200は、他コンテナグループについて、選択済みのコンテナグループのコンテナと同じクラスタに配備されるクラスタの数である重複クラスタ数を計数する。
その後、クラスタサーバ200は、重複クラスタ数によりフェイルオーバ先を決定する(S405)。例えば、クラスタサーバ200は、重複クラスタ数が最も多い他コンテナグループを、選択済みのコンテナグループのフェイルオーバの依頼を行う候補(フェイルオーバ先候補)として特定する。
なお、クラスタサーバ200は、未処理のコンテナグループがある場合(S406:Yes)、S401以降を繰り返し、未処理のコンテナグループがない場合(S406:No)、処理を終了する。
(非重複クラスタ数による決定手法)
図18は、非重複クラスタ数によるフェイルオーバ先の特定処理の流れを示すフローチャートである。この処理は、例えば、図17の手法により複数の候補が選択されたときに、その複数の候補について実行して最終的に決定することができる。また、図18の手法により複数の候補が選択されたときに、その複数の候補について図17を実行して最終的に決定することができる。
図18に示すように、クラスタサーバ200は、コンテナグループを1つ選択し(S501)、選択したコンテナグループのコンテナが動作するクラスタを特定し(S502)、選択したコンテナグルーブ以外の他コンテナグループのコンテナが動作するクラスタを特定する(S503)。
そして、クラスタサーバ200は、非重複クラスタ数を算出する(S504)。例えば、クラスタサーバ200は、他コンテナグループについて、選択済みのコンテナグループのコンテナが配備されていないクラスタの数である非重複クラスタ数を計数する。
その後、クラスタサーバ200は、非重複クラスタ数によりフェイルオーバ先を決定する(S505)。例えば、クラスタサーバ200は、非重複クラスタ数が最も多い他コンテナグループを、選択済みのコンテナグループのフェイルオーバの依頼を行う候補(フェイルオーバ先候補)として特定する。
なお、クラスタサーバ200は、未処理のコンテナグループがある場合(S506:Yes)、S501以降を繰り返し、未処理のコンテナグループがない場合(S506:No)、処理を終了する。
(通信遅延量による決定手法による決定手法)
図19は、通信遅延量によるフェイルオーバ先の特定処理の流れを示すフローチャートである。この処理は、例えば、図17や図18の手法、人手等により複数の候補が選択されたときに、その複数の候補について実行して最終的に決定することができる。また、図19の手法により複数の候補が選択されたときに、その複数の候補について図17や図18を実行して最終的に決定することができる。
図19に示すように、クラスタサーバ200は、フェイルオーバ先候補のコンテナグループを1つ選択(S601)、選択したコンテナグループのコンテナが動作するクラスタを特定し(S602)、選択したコンテナグルーブ以外の他コンテナグループのコンテナが動作するクラスタを特定する(S603)。
そして、クラスタサーバ200は、各クラスタ間の通信遅延量を測定する(S604)。例えば、クラスタサーバ200は、移行元の各コンテナと移行先の各コンテナとの通信遅延を測定し、コンテナ間の通信遅延を用いてクラスタ間の平均遅延量を算出する。
その後、クラスタサーバ200は、通信遅延量が最も少ないクラスタをフェイルオーバ先に決定する(S605)。なお、クラスタサーバ200は、未処理のコンテナグループがある場合(S606:Yes)、S601以降を繰り返し、未処理のコンテナグループがない場合(S606:No)、処理を終了する。
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
[数値等]
上記実施例で用いたクラスタ数、コンテナ数、クラスタリング技術、障害内容、性能劣化の検出手法、数値例、閾値等は、あくまで一例であり、任意に変更することができる。
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
[ハードウェア]
次に、上記実施例で説明した各装置のハードウェア構成例を説明する。なお、各装置は、同様のハードウェア構成を有するので、ここでは、クラスタサーバ200を例にして説明する。図20は、ハードウェア構成例を説明する図である。図20に示すように、クラスタサーバ200は、通信装置200a、HDD(Hard Disk Drive)200b、メモリ200c、プロセッサ200dを有する。また、図20に示した各部は、バス等で相互に接続される。
通信装置200aは、ネットワークインタフェースカードなどであり、他のサーバとの通信を行う。HDD200bは、図5等に示した機能を動作させるプログラムやDBを記憶する。
プロセッサ200dは、図5等に示した各処理部と同様の処理を実行するプログラムをHDD200b等から読み出してメモリ200cに展開することで、図5等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、クラスタサーバ200が有する各処理部と同様の機能を実行する。具体的には、プロセッサ200dは、クラスタ実行部211、スケジュール実行部212、コンテナ実行部213等と同様の機能を有するプログラムをHDD200b等から読み出す。そして、プロセッサ200dは、クラスタ実行部211、スケジュール実行部212、コンテナ実行部213等と同様の処理を実行するプロセスを実行する。
このように、クラスタサーバ200は、プログラムを読み出して実行することで各種処理方法を実行する情報処理装置として動作する。また、クラスタサーバ200は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、クラスタサーバ200によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本発明を同様に適用することができる。
このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
100 マスタサーバ
101 通信部
102 記憶部
103 イメージファイルDB
104 稼働情報管理DB
110 制御部
111 クラスタ実行部
112 スケジュール実行部
113 コンテナ実行部
200 クラスタサーバ
201 通信部
202 記憶部
203 イメージファイルDB
204 フェイルオーバ先DB
210 制御部
211 クラスタ実行部
212 スケジュール実行部
213 コンテナ実行部

Claims (8)

  1. コンテナが複数のクラスタに分散されているコンテナシステムで実行されるコンテナ管理方法において、
    第一のクラスタ内に配備されている第一のコンテナが、
    前記第一のクラスタとは異なる第二のクラスタに配備されている第二のコンテナの状態監視を実行し、
    前記状態監視の結果に応じて、前記第二のクラスタとは異なる第三のクラスタに、前記第二のコンテナのフェイルオーバの実行を指示する、
    ことを特徴とするコンテナ管理方法。
  2. 前記第一のコンテナは、同じサービスを提供するコンテナグループに属する他コンテナとの間で生死確認を行うことを特徴とする請求項1に記載のコンテナ管理方法。
  3. 前記第一のコンテナが、
    前記第一のコンテナおよび前記第二のコンテナが属する第一のコンテナグループのフェイルオーバ先として、
    前記コンテナシステム内の複数のコンテナグループのうち、前記第一のコンテナグループのコンテナと同じクラスタに配備される重複クラスタ数が閾値以上であるコンテナグループを選択することを特徴とする請求項1または2に記載のコンテナ管理方法。
  4. 前記第一のコンテナが、
    前記第一のコンテナおよび前記第二のコンテナが属する第一のコンテナグループのフェイルオーバ先として、
    前記コンテナシステム内の複数のコンテナグループのうち、前記第一のコンテナグループのコンテナが配備されていないクラスタに配備される非重複クラスタ数が閾値以上であるコンテナグループを選択することを特徴とする請求項1から3のいずれか一つに記載のコンテナ管理方法。
  5. 前記第一のコンテナが、
    移行先として選択された移行先のコンテナグループに属する各コンテナと、移行元である前記第一のコンテナグループに属する各コンテナとの通信遅延量が最小となるコンテナが配備されるクラスタを前記フェイルオーバによる移行先に決定することを特徴とする請求項3または4に記載のコンテナ管理方法。
  6. 前記第三のクラスタが、
    前記第二のコンテナをフェイルオーバさせた第四のコンテナを実行し、
    前記第四のコンテナを実行後に、前記第三のクラスタの性能状態を監視し、
    前記第三のクラスタの性能劣化を検出した場合に、前記第四のコンテナを削除して、前記第二のコンテナが属する前記第一のコンテナグループの縮退運転を実行する、ことを特徴とする請求項3から5のいずれか一つに記載のコンテナ管理方法。
  7. 前記コンテナシステム内の第四のクラスタが、
    前記第一のコンテナグループの縮退運転後に、前記第一のコンテナグループの性能劣化を検出した場合に、フェイルオーバ元の前記第二のコンテナに対応する第五のコンテナを、前記第四のクラスタ内に配備したスケールアウトを実行する、ことを特徴とする請求項5に記載のコンテナ管理方法。
  8. コンテナが複数のクラスタに分散されているコンテナシステムで実行されるコンテナ管理プログラムにおいて、
    第一のクラスタ内に配備されている第一のコンテナが、
    前記第一のクラスタとは異なる第二のクラスタに配備されている第二のコンテナの状態監視を実行し、
    前記状態監視の結果に応じて、前記第二のクラスタとは異なる第三のクラスタに、前記第二のコンテナのフェイルオーバの実行を指示する、
    処理をコンピュータに実行させることを特徴とするコンテナ管理プログラム。
JP2021029244A 2021-02-25 2021-02-25 コンテナ管理方法およびコンテナ管理プログラム Pending JP2022130200A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021029244A JP2022130200A (ja) 2021-02-25 2021-02-25 コンテナ管理方法およびコンテナ管理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021029244A JP2022130200A (ja) 2021-02-25 2021-02-25 コンテナ管理方法およびコンテナ管理プログラム

Publications (1)

Publication Number Publication Date
JP2022130200A true JP2022130200A (ja) 2022-09-06

Family

ID=83150870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021029244A Pending JP2022130200A (ja) 2021-02-25 2021-02-25 コンテナ管理方法およびコンテナ管理プログラム

Country Status (1)

Country Link
JP (1) JP2022130200A (ja)

Similar Documents

Publication Publication Date Title
JP5851503B2 (ja) 高可用性仮想機械環境におけるアプリケーションの高可用性の提供
JP4611922B2 (ja) 制御プログラム、制御方法および制御装置
JP5353712B2 (ja) 冗長構成管理システムおよび方法
US7137040B2 (en) Scalable method of continuous monitoring the remotely accessible resources against the node failures for very large clusters
JP5368907B2 (ja) サーバ管理システム、サーバ管理方法、及びプログラム
WO2017067484A1 (zh) 一种虚拟化数据中心调度系统和方法
JP5526784B2 (ja) 縮退構成設計システムおよび方法
CN108347339B (zh) 一种业务恢复方法及装置
US20080288812A1 (en) Cluster system and an error recovery method thereof
US20160036654A1 (en) Cluster system
CN111835685B (zh) 一种监控Nginx网络隔离空间的运行状态的方法和服务器
US20090164565A1 (en) Redundant systems management frameworks for network environments
CN113872997B (zh) 基于容器集群服务的容器组pod重建方法及相关设备
US20210120097A1 (en) Scheduling solution configuration method and apparatus, computer readable storage medium thereof, and computer device
CN113596152A (zh) 负载均衡实现方法、系统及装置
JP4796086B2 (ja) クラスタシステム及び同システムにおいてマスタノードを選択する方法
JP2011209811A (ja) 仮想マシンシステムおよび仮想マシン配置方法
JP2022130200A (ja) コンテナ管理方法およびコンテナ管理プログラム
JP2009003537A (ja) 計算機
JP6561766B2 (ja) 情報処理装置、クラスタシステム、クラスタリング方法、及びプログラム
US20240028611A1 (en) Granular Replica Healing for Distributed Databases
Moazzeni et al. Improving the reliability of Byzantine fault‐tolerant distributed software‐defined networks
WO2016046951A1 (ja) 計算機システム及びそのファイル管理方法
JP5601587B2 (ja) プロセス再起動装置、プロセス再起動方法およびプロセス再起動プログラム
CN111385352A (zh) 一种实例的控制方法、节点、终端和分布式存储系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231109