JP2022092156A - アプリ間通信制御方法およびアプリ間通信制御プログラム - Google Patents

アプリ間通信制御方法およびアプリ間通信制御プログラム Download PDF

Info

Publication number
JP2022092156A
JP2022092156A JP2020204781A JP2020204781A JP2022092156A JP 2022092156 A JP2022092156 A JP 2022092156A JP 2020204781 A JP2020204781 A JP 2020204781A JP 2020204781 A JP2020204781 A JP 2020204781A JP 2022092156 A JP2022092156 A JP 2022092156A
Authority
JP
Japan
Prior art keywords
node
application
cloud
pod
distribution table
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
JP2020204781A
Other languages
English (en)
Inventor
昌浩 佐藤
Masahiro Sato
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 JP2020204781A priority Critical patent/JP2022092156A/ja
Publication of JP2022092156A publication Critical patent/JP2022092156A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Figure 2022092156000001
【課題】オーケストレーションソフトにおいて、アプリに対するメッセージの転送要求が発生した際に、不要な通信を抑止する。
【解決手段】各ノードにアプリが分散配置され、各ノードが、メッセージの転送先となるノードを示す宛先情報を記憶した振り分けテーブルを備え、コンテナオーケストレーションソフトが、各ノードに配置されたアプリの情報に基づいて、振り分けテーブルを設定するシステムにおいて、通信制御サーバ1は、第1のノードの振り分けテーブルに、第1のノードを示す宛先情報と、第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、第2のノードを示す宛先情報を削除する。
【選択図】図4D

Description

本発明は、アプリ間通信制御方法などに関する。
コンテナのオーケストレーションを行うOSS(Open Source Software)がある。例えば、かかるOSSには、一例として、kubernetes(k8s)(登録商標)が挙げられる。コンテナオーケストレーションとは、コンテナの作成および削除、コンテナのクラスタ構成の管理、コンテナのオートスケール、コンテナのオートヒーリング、コンテナの配備先のスケジューリングなどの機能のことをいう。k8sは、クラウドのコンテナサービスの基盤としても利用される。
ここで、k8sの構成の参考例を、図16を参照して説明する。図16は、k8sの構成の参考例を示す図である。図16に示すように、k8sは、Masterと、Workerとを有する。Masterは、k8sの制御を行うノードである。かかる制御には、API(Application Programming Interface)、スケジューリングやDB(DataBase)管理の制御がある。Workerは、コンテナが実際に稼働するノードである。コンテナは、Podに内包される。Workerは、Masterに定期的に問い合わせて、自身に配備されたコンテナの制御を行う。
図17は、k8sにおけるコンテナ宛て通信の仕組みの参考例を示す図である。図17に示すように、Podは、k8s内で管理されるコンテナの構成単位である。Pod毎に、IPアドレスが付与され、Podが配備されるWorker毎にサブネットが異なる。各Node内のkube-proxyが同じアプリが動くPodを纏めて管理し、サービス(アプリ)宛てのメッセージを各Podに振り分ける。すなわち、kube-proxyは、同じアプリが動く各PodのIPアドレスを纏めて管理する振り分けテーブルを参照して、アプリ宛てのメッセージをいずれかのPodに振り分ける処理を行う。
特開2020-96357号公報 特開2020-52730号公報
しかしながら、k8sのようなオーケストレーションソフトは、自ノードに配備されたPodにアプリを有していても、振り分けテーブルを参照して、他ノードに配備されたPodの同一アプリにメッセージを振り分けてしまう場合がある。かかる場合には、不要な通信が発生してしまうという問題がある。
1つの側面では、オーケストレーションソフトにおいて、アプリに対するメッセージの転送要求が発生した際に、不要な通信を抑止することを目的とする。
1つの態様では、アプリ間通信制御方法は、各ノードにアプリが分散配置され、前記各ノードが、メッセージの転送先となるノードを示す宛先情報を記憶した振り分けテーブルを備え、コンテナオーケストレーションソフトが、前記各ノードに配置されたアプリの情報に基づいて、前記振り分けテーブルを設定するシステムにおけるアプリ間通信制御方法であって、第1のノードの振り分けテーブルに、前記第1のノードを示す宛先情報と、前記第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、前記第2のノードを示す宛先情報を削除する、処理をコンピュータが実行する。
1つの態様によれば、オーケストレーションソフトにおいて、アプリに対するメッセージの転送要求が発生した際に、不要な通信を抑止することが可能となる。
図1は、実施例1に係るシステムの構成を示す機能ブロック図である。 図2は、実施例1に係る通信制御サーバの構成を示す機能ブロック図である。 図3は、振り分けテーブル情報のデータ構造の一例を示す図である。 図4Aは、実施例1に係る振り分けテーブル設定処理の一例を示す図(1)である。 図4Bは、実施例1に係る振り分けテーブル設定処理の一例を示す図(2)である。 図4Cは、実施例1に係る振り分けテーブル設定処理の一例を示す図(3)である。 図4Dは、実施例1に係る振り分けテーブル設定処理の一例を示す図(4)である。 図4Eは、実施例1に係る振り分けテーブル設定処理の一例を示す図(5)である。 図5は、実施例1に係る振り分けテーブル設定処理のフローチャートの一例を示す図である。 図6は、実施例2に係るシステムの構成を示す機能ブロック図である。 図7は、実施例2に係る通信制御サーバの構成を示す機能ブロック図である。 図8は、Pod性能情報のデータ構造の一例を示す図である。 図9は、Pod配備情報のデータ構造の一例を示す図である。 図10は、実施例2に係るコンテナ増減処理のフローチャートの一例を示す図(1)である。 図11は、実施例2に係るコンテナ増減処理のフローチャートの一例を示す図(2)である。 図12は、実施例2に係るコンテナ増減処理のフローチャートの一例を示す図(3)である。 図13は、実施例2に係るPod配備情報収集処理のフローチャートの一例を示す図である。 図14は、実施例2に係るPod性能情報収集処理のフローチャートの一例を示す図である。 図15は、アプリ間通信制御プログラムを実行するコンピュータの一例を示す図である。 図16は、k8sの構成の参考例を示す図である。 図17は、k8sにおけるコンテナ宛て通信の仕組みの参考例を示す図である。 図18は、複数環境に跨ったk8s適用時における問題を説明する図である。 図19は、k8sクラスタを分離させる場合の参考例を示す図である。 図20は、k8sクラスタを分離させる場合の問題を説明する図である。
以下に、本願の開示するアプリ間通信制御方法およびアプリ間通信制御プログラムの実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
まず、コンテナのオーケストレーションソフトを適用時における問題を説明する。なお、以降では、コンテナのオーケストレーションソフトをkubernetes(k8s)として説明する。k8sは、各ノードの振り分けテーブルを自動設定する。振り分けテーブルは、クラスタの中のコンテナ化されたアプリが動くPodのIPアドレスを管理するためのテーブルであり、同じアプリが動く各PodのIPアドレスを纏めて管理する。振り分けテーブルは、各Workerに持つ。これにより、k8sは、自ノードがアプリを有している場合であっても、他ノードの有する同一アプリへメッセージを振り分けて(転送)してしまい、不要な通信が発生してしまう場合がある。アプリを有するノードとして、クラウドのほか、エッジデバイス、エッジサーバやオンプレミスなどが挙げられる。
ここで、各環境(ノード)でアプリの配備構成が異なる場合がある。かかる場合には、適切な環境上のアプリにアクセスできるように制御する必要がある。図18は、複数環境に跨ったk8s適用時における問題を説明する図である。図18には、k8sのクラスタが構築されている。かかるクラスタには、稼働するアプリが異なるノードとして、エッジデバイスaと、エッジデバイスbとが適用されている。エッジデバイスaと、エッジデバイスbには、それぞれ、Workerが備わっている。また、クラウドには、k8sの制御を行うMasterおよびWorkerが備わっている。
例えば、通信の流れがアプリA→アプリB→アプリCであるとする。エッジデバイスa上のWorkerには、コンテナ化されたアプリAがPodに配備されている。エッジデバイスb上のWorkerには、コンテナ化されたアプリA、アプリB、アプリCがそれぞれのPodに配備されている。クラウド上のWorkerには、コンテナ化されたアプリA、アプリCがそれぞれのPodに配備されている。k8sクラスタ内に同じアプリが複数存在すれば、k8sが自動的に振り分けテーブルを作成し、Workerが振り分けテーブルを参照してメッセージを配信する(振り分ける)アプリの宛先をランダムに決定する。図18の例では、アプリBは、エッジデバイスbおよびクラウドに存在する。k8sは、エッジデバイスbの振り分けテーブルにクラウドのアプリBの宛先(PodのIPアドレス)を自動的に登録する。この結果、k8sは、エッジデバイスbがアプリBを有している場合であっても、他ノードであるクラウド上の同一アプリBの宛先をランダムに決定し、決定したアプリBへメッセージを配信してしまい、不要な通信が発生してしまうという問題がある。
かかる問題に対して、アプリの配備構成が同じエッジデバイス毎にk8sクラスタを分離させることが考えられる。図19は、k8sクラスタを分離させる場合の参考例を示す図である。なお、図19に示す振り分けテーブルは、説明の便宜上、アプリBについてのみ記載されている。図19に示すように、アプリAが配備されたエッジデバイスaを1つのk8sクラスタ#1に含める。k8sクラスタ#1は、クラウド上にMasterを有するとともにWorkerにアプリBおよびアプリCを配備する。また、アプリA、アプリB、アプリCが配備されたエッジデバイスbを1つのk8sクラスタ#2に含める。k8sクラスタ#2は、クラウド上にMasterを有するがWorkerを有しない。これにより、アプリの配備構成が同じエッジデバイス毎にk8sクラスタを分けることで、アプリ間の最適な通信を実現することができる。
ところが、アプリの配備構成が同じエッジデバイス毎にk8sクラスタを分離させるようにすると、クラウド側の利用コストが大きくなる。図20は、k8sクラスタを分離させる場合の問題を説明する図である。図20では、エッジデバイスが車両である場合について説明する。図20に示すように、管理するエッジデバイスが例えば500万台である場合には、アプリの配備構成が同じエッジデバイス毎にk8sクラスタを分離させようとすると、上段のアプリの配備構成では、エッジデバイスが例えば250万台に対し、k8sクラスタの数は、例えば1万個となる。下段のアプリの配置構成では、エッジデバイスが例えば250万台に対し、k8sクラスタの数は、例えば1万個となる。パブリッククラウドのマネージドk8sを利用する場合、コンテナが稼働するWorkerノード以外に、k8sクラスタ単位でMasterノードに課金が発生してしまう。例えば、上段のように、クラウド側でPodが構築されない場合でも、エッジデバイスのWorkerを管理するためだけにMasterが構築されるため、無駄なコストがかかってしまう。特に、大規模なk8sクラスタが構築される場合には、クラウド側の利用コストが大きくなってしまう。
そこで、以降の実施例では、k8sにおいて、アプリの配備構成が同じエッジデバイス毎にクラスタを分けないで、アプリ間通信の不要な通信を抑止する方法について説明する。
[システムの構成]
図1は、実施例1に係るシステムの構成を示す機能ブロック図である。実施例1に係るシステム9は、通信制御サーバ1、エッジデバイス3およびマネージドk8s5を有する。通信制御サーバ1およびマネージドk8s5は、クラウド上に有する。エッジデバイス3に、コンテナ化されたアプリが配備されている場合には、振り分けテーブル31が設定されている。マネージドk8s5は、コンテナ化されたアプリが配備されている場合には、振り分けテーブル51が設定されている。なお、システム9では、2個のk8sクラスタが存在しているが、1個のk8sクラスタが存在しても良いし、2個以上のk8sクラスタが存在しても良い。
通信制御サーバ1は、第1のノードの振り分けテーブル31に設定されているアプリの宛先情報として、第1のノードを示す宛先情報と、第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、第2のノードを示す宛先情報を削除する。これにより、k8sは、第1のノードに対象のアプリが配備されている場合には第1のノードを示す宛先を決定するので、不要な通信を抑止できる。
[通信制御サーバの構成]
実施例1に係る通信制御サーバ1の構成を、図2を参照して説明する。図2は、実施例1に係る通信制御サーバの構成を示す機能ブロック図である。図2に示すように、通信制御サーバ1は、振り分けルール実行部11および振り分けテーブル設定部12を有する。また、通信制御サーバ1は、Worker単位の振り分けテーブル情報21を有する。
振り分けテーブル情報21は、クラスタにおいて、コンテナ化されたアプリが動くPodの位置情報(IPアドレス)を管理し、同じアプリが動く各PodのIPアドレスを纏めて管理するための情報である。振り分けテーブル情報21は、Worker毎の振り分けテーブルの情報である。
ここで、振り分けテーブル情報21のデータ構造を、図3を参照して説明する。図3は、振り分けテーブル情報のデータ構造の一例を示す図である。図3に示すように、振り分けテーブル情報21内のWorker単位の振り分けテーブルは、ServiceとPod IPとを対応付けて記憶する。Serviceは、アプリで実行されるサービスの名称である。Pod IPは、アプリが動くPodのIPアドレスである。
一例として、あるWorkerの振り分けテーブルについて、Serviceが「appb-svc」である場合に、Pod IPとして「10.0.0.2」と記憶している。Serviceが「appc-svc」である場合に、Pod IPとして「10.0.0.3」と記憶している。
振り分けルール実行部11は、k8sクラスタ内の各Workerに対して、各アプリへメッセージを振り分ける際にアプリの宛先を指定するための振り分けルールを実行する。例えば、振り分けルール実行部11は、k8sクラスタ内のWorkerを順次選択する。振り分けルール実行部11は、選択したWorker上にアプリが動作するPodが存在する場合には、振り分けテーブル情報21に、アプリの宛先として当該Worker上のPodのIPアドレスを更新する。また、振り分けルール実行部11は、選択したWorker上にアプリが動作するPodが存在しない場合には、当該Workerがエッジデバイスであれば、振り分けテーブル情報21に、アプリの宛先としてクラウド上のPodのIPアドレスを更新する。
なお、振り分けルール実行部11は、エッジデバイスのWorker上にアプリが動作するPodが存在する場合には、振り分けテーブル情報21に、このアプリの宛先として当該Worker上のPodのIPアドレスを更新すると説明した。そして、振り分けルール実行部11は、エッジデバイスのWorker上にこのアプリが動作するPodが存在しない場合には、クラスタ上のPodのIPアドレスを更新すると説明した。しかしながら、振り分けルール実行部11は、これに限定されず、k8sの従来技術により振り分けテーブル情報21を設定し、振り分けテーブル情報21に含まれる対象のノードの振り分けテーブルにアプリの宛先としてこのノードを示す宛先と他のノードを示す宛先が設定されている場合には、対象のノードを優先して、他のノードを示す宛先を削除するようにしても良い。また、振り分けルール実行部11は、振り分けテーブル情報21に含まれる対象のノードの振り分けテーブルにアプリの宛先としてクラウドを示す宛先と、対象のノードと異なる他のノードを示す宛先が設定されている場合に、クラウドを優先して、他のノードを示す宛先を削除するようにしても良い。また、振り分けルール実行部11は、クラウドのWorkerノードの振り分けテーブルには、クラウド内に配備されたPodの宛先のみを登録すれば良い。
振り分けテーブル設定部12は、k8sクラスタ内の各Workerに対して、振り分けテーブル情報21への更新を反映する。例えば、振り分けテーブル設定部12は、振り分けテーブル情報21を参照して、選択したWorkerに関し、既存の振り分けテーブルに変更がある場合には、選択したWorker上の振り分けテーブル31、51に更新を反映する。
[振り分けテーブル設定処理の一例]
図4A~図4Eは、実施例1に係る振り分けテーブル設定処理の一例を示す図である。
図4Aでは、初期状態として、エッジデバイスbのみがk8sクラスタ内のWorkerノードとして管理されているとする。振り分けルール実行部11は、k8sにより、アプリについてPodのIPアドレスを振り分けテーブル情報21に更新する。なお、図4Aで示す振り分けテーブルは、振り分けテーブル情報21に含まれるエッジデバイスbのWorker用の振り分けテーブルであるとする。以降、図4B~図4Eで示す振り分けテーブルも、振り分けテーブル情報21の中のそれぞれのWorker用の振り分けテーブルであるとする。ここでは、エッジデバイスbのWorker用の振り分けテーブルには、アプリA、アプリB、アプリCについて、エッジデバイスb上のPodのIPアドレスが設定されている。
図4Bでは、エッジデバイスaが追加直後の状態である。振り分けルール実行部11は、k8sにより、アプリについてPodのIPアドレスを振り分けテーブル情報21に更新する。ここでは、エッジデバイスaのWorker用の振り分けテーブルには、k8sによりエッジデバイスb上のPodが振り分け先として設定されている。
図4Cでは、エッジデバイスaおよびクラウド上にPodが配備された状態である。エッジデバイスaには、アプリAのPodのみが配備されている。クラウド上には、アプリBのPodおよびアプリCのPodがそれぞれ配備されている。振り分けルール実行部11は、新たなPodが配備され、k8sにより、各Worker上の振り分けテーブルのPodの宛先に全Podの情報を設定する。ここでは、エッジデバイスaのWorker用の振り分けテーブルには、自身のWorkerに配備されたアプリAのPodのIPアドレス(10.0.1.1)の他、クラウド上のWorkerに配備されたアプリBのPodのIPアドレス(10.0.0.2)およびアプリCのPodのIPアドレス(10.0.0.3)が追加される。すなわち、エッジデバイスaのWorker用の振り分けテーブルには、k8sクラスタ内の全PodのIPアドレスの情報が設定される。同様に、クラウド上のWorker用の振り分けテーブルにも、k8sクラスタ内の全PodのIPアドレスの情報が設定される。同様に、エッジデバイスbのWorker用の振り分けテーブルにも、k8sクラスタ内の全PodのIPアドレスの情報が設定される。
図4Dでは、各Worker上の振り分けテーブルが、以下のように更新される。振り分けルール実行部11は、振り分けテーブル情報21に含まれる振り分けテーブルにアプリの宛先として自身のノードを示す宛先と他のノードを示す宛先が設定されている場合には、他のノードを示す宛先を削除する。
ここでは、エッジデバイスaでは、振り分けルール実行部11は、アプリAについて、振り分けテーブルに宛先として自身のノードを示す宛先と他のノードを示す宛先が設定されているので、他のノードを示す宛先(10.0.1.9)を削除する。また、振り分けルール実行部11は、アプリB、アプリCについて、振り分けテーブルに宛先として自身のノードを示す宛先が設定されていないので、クラウド上のノードを示す宛先を残し、他のノードを示す宛先(10.0.1.10)、(10.0.1.11)を削除する。つまり、アプリAは、自身のエッジデバイスaのWorker上で稼働するPodを宛先とし、アプリBおよびアプリCは、クラウド上のPodを宛先とする。
エッジデバイスbでは、振り分けルール実行部11は、アプリA,B,Cについて、振り分けテーブルに宛先として自身のノードを示す宛先と他のノードを示す宛先が設定されているので、他のノードを示す宛先を削除する。つまり、アプリA,B,Cは、自身のエッジデバイスbのWorker上で稼働するPodを宛先とする。
クラウドでは、振り分けルール実行部11は、アプリB,Cについて、振り分けテーブルに宛先として自身のノードを示す宛先と他のノードを示す宛先が設定されているので、他のノードを示す宛先(10.0.1.10)、(10.0.1.11)を削除する。また、振り分けルール実行部11は、アプリAについて、振り分けテーブルに宛先として自身のノードを示す宛先が設定されていないので、他のノードを示す宛先(10.0.1.9)、(10.0.1.1)を削除する。つまり、アプリB,Cは、自身のクラスタのWorker上で稼働するPodを宛先とする。アプリAは、クラウド上にPodが配備されていないので、宛先として削除される。
図4Eに示すように、各Worker上の更新された振り分けテーブルが、表わされている。振り分けテーブル設定部12は、k8sクラスタ内の各Workerに対して、振り分けテーブル情報21への更新を反映する。エッジデバイスbでは、k8sは、振り分けテーブル31を参照して、メッセージを配信する、アプリA,B,Cの宛先を、エッジデバイスb上の宛先に決定する。エッジデバイスaでは、k8sは、振り分けテーブル31を参照して、メッセージを配信する、アプリAの宛先を、エッジデバイスa上の宛先に決定する。また、k8sは、振り分けテーブル31を参照して、メッセージを配信する、アプリB,Cの宛先を、クラウド上の宛先に決定する。
これにより、通信制御サーバ1は、エッジデバイス毎に振り分けルールに基づいて振り分けテーブル31を制御することで、通信の最適化を実現できる。すなわち、通信制御サーバ1は、不要な通信を抑止することが可能となる。例えばエッジデバイスbは、k8sがアプリBの宛先として設定したクラウドのPod IDが削除されることで、デバイス間の通信が必要ない自装置内のアプリBを宛先とすることが可能となる。そして、通信制御サーバ1は、k8sクラスタ内でPodの構成が異なるエッジデバイスを管理することにより、k8sクラスタ数を減らし、クラウドの利用コストを抑制することが可能となる。
また、クラウドシステムでは、セキュリティの観点で、エッジデバイス間のクラウドを経由した通信を禁止していることがある。この場合、図4Cのようにk8sがエッジデバイスbの振り分けテーブル31にエッジデバイスaのPodを示す宛先(10.0.1.1)を追加すると、エッジデバイスbにおいてアプリAへの通信が発生した際に、エッジデバイスaのアプリAにメッセージが送信されることが発生する。しかし、エッジデバイスbからエッジデバイスaへの通信は禁止されているため、当該メッセージがエッジデバイスaへ送達されることはない。仮に送達された場合、再送する等の無駄な処理を行う必要が生じるが、上述のような削除処理を実行することで、このような無駄な処理を抑止することが可能となる。
なお、k8sは、デバイスの負荷に応じてPodを他のデバイスに複製することで、負荷分散を実現する機能(オートスケーリング機能)を有する。この機能は、有効/無効をシステムの管理者が設定することが可能となっている。ここで、オートスケーリング機能が有効となっているシステムにおいて、k8sが例えばエッジデバイスbの負荷が高くなったことを検知して、アプリBのPodをクラウド上に複製することがある。この複製処理に伴って、k8sはエッジデバイスbの振り分けテーブル31に、クラウドに複製されたPodを示す宛先を追加する。これにより、エッジデバイスbのアプリAからのメッセージは、エッジデバイスb上のアプリAとクラウド上のアプリAの二つに振り分けられるため、エッジデバイスbの負荷分散が実現される。
しかし、上述のような削除処理を実行した場合、負荷分散のためにエッジデバイスbの振り分けテーブル31に追加されたクラウドのPodを示す宛先が削除されてしまい、負荷分散効果が得られなくなることが考えられる。
このような状況が生じることを防ぐため、オートスケーリング機能の設定が有効になっているか無効になっているかを判断し、無効となっていると判断された場合に、上述の削除処理を実行することが考えられる。すなわち、このような判断を行うことで、オートスケーリング機能を使用していないシステムでのみ、削除処理を行うように制御することが可能となる。
[振り分けテーブル設定処理のフローチャート]
図5は、実施例1に係る振り分けテーブル設定処理のフローチャートの一例を示す図である。なお、図5では、k8sが設定した振り分けテーブル情報21から不要な通信が発生する設定を削除する処理について説明する。図5に示すように、振り分けルール実行部11は、振り分けテーブル情報21に設定するアプリの設定依頼を受信する(ステップS11)。振り分けルール実行部11は、全Workerの探索を完了したか否かを判定する(ステップS12)。全Workerの探索を完了したと判定した場合には(ステップS12;Yes)、振り分けルール実行部11は、振り分けテーブル設定処理を終了する。
一方、全Workerの探索を完了していないと判定した場合には(ステップS12;No)、振り分けルール実行部11は、Workerを選択する(ステップS12A)。振り分けルール実行部11は、選択したWorker上にアプリが存在するか否かを判定する(ステップS13)。選択したWorker上にアプリが存在しないと判定した場合には(ステップS13;No)、振り分けルール実行部11は、次のWorkerを探索すべく、ステップS12に移行する。
一方、選択したWorker上にアプリが存在すると判定した場合には(ステップS13;Yes)、振り分けルール実行部11は、k8sクラスタ上の設定アプリの探索を完了するか否かを判定する(ステップS14)。設定アプリの探索を完了しないと判定した場合には(ステップS14;No)、振り分けルール実行部11は、選択したWorker上に設定アプリのPodが存在するか否かを判定する(ステップS16)。
選択したWorker上に設定アプリのPodが存在すると判定した場合には(ステップS16;Yes)、振り分けルール実行部11は、振り分けテーブル情報21に対して、アプリの宛先として選択したWorker上のPodのIPアドレスを指定する(ステップS17)。すなわち、振り分けルール実行部11は、振り分けテーブル情報21に含まれる選択Workerの振り分けテーブルに他のWorkerを示すIPアドレスが設定されている場合には、選択Workerを優先して、他のWorkerを示すIPアドレスを削除する。そして、振り分けルール実行部11は、設定アプリの次の探索をすべく、ステップS14に移行する。
選択したWorker上に設定アプリのPodが存在しないと判定した場合には(ステップS16;No)、振り分けルール実行部11は、選択したWorkerがエッジデバイスまたはオンプレ上で稼働しているか否かを判定する(ステップS18)。選択したWorkerがエッジデバイスまたはオンプレ上で稼働していると判定した場合には(ステップS18;Yes)、振り分けルール実行部11は、振り分けテーブル情報21に対して、アプリの宛先としてクラウド上のPodのIPアドレスを指定する(ステップS19)。すなわち、振り分けルール実行部11は、振り分けテーブル情報21に含まれる選択Workerと異なる他のWorkerを示すIPアドレスが設定されている場合には、クラウドを優先して、他のWorkerを示すIPアドレスを削除する。そして、振り分けルール実行部11は、設定アプリの次の探索をすべく、ステップS14に移行する。
選択したWorkerがエッジデバイスまたはオンプレ上で稼働していないと判定した場合には(ステップS18;No)、振り分けルール実行部11は、以下の処理を行う。すなわち、振り分けルール実行部11は、選択したWorkerがクラウド上で稼働しているので、アプリの宛先を未指定とする(ステップS20)。そして、振り分けルール実行部11は、設定アプリの次の探索をすべく、ステップS14に移行する。
ステップS14において、設定アプリの探索を完了したと判定した場合には(ステップS14;Yes)、振り分けテーブル設定部12は、選択したWorkerについて、既存の振り分けテーブル31に変更が有るか否かを判定する(ステップS21)。既存の振り分けテーブル31に変更が有ると判定した場合には(ステップS21;Yes)、振り分けテーブル設定部12は、選択したWorker上の振り分けテーブル31に設定を反映する(ステップS22)。そして、振り分けテーブル設定部12は、次のWorkerを選択すべく、ステップS12に移行する。
一方、既存の振り分けテーブル31に変更が無いと判定した場合には(ステップS21;No)、振り分けテーブル設定部12は、何もしないで、次のWorkerを選択すべく、ステップS12に移行する。
[実施例1の効果]
このようにして、上記実施例1では、コンテナオーケストレーションソフトが、各ノードに配置されたアプリの情報に基づいて、振り分けテーブル31を設定する。振り分けルール実行部11は、第1のノードの振り分けテーブルに、第1のノードを示す宛先情報と、第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、第2のノードを示す宛先情報を削除する。かかる構成によれば、振り分けルール実行部11は、第1のノードに対してメッセージの第1のアプリへの転送の依頼を受け取ると、振り分けテーブル31を参照して第1のノードを示す宛先情報の第1のアプリへメッセージを転送することで不要な通信を抑止できる。言い換えれば、振り分けルール実行部11は、第2のノードを示す宛先情報を削除することで、第1のノードを示す宛先情報を利用することとなり、第1のノードと異なる第2のノードを示す宛先情報を利用した場合の不要な通信を抑止することが可能となる。
また、上記実施例1では、振り分けルール実行部11は、コンテナオーケストレーションソフトにおいて、オートスケーリング機能が無効と設定されている場合に、第2のノードを示す宛先情報を削除する。かかる構成によれば、振り分けルール実行部11は、オートスケーリング機能を使用していないシステムでのみ、削除処理を行うように制御することが可能となる。
また、上記実施例1では、振り分けルール実行部11は、第1のノードの振り分けテーブルに、クラウドを示す宛先情報と、第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、第2のノードを示す宛先情報を削除する。かかる構成によれば、振り分けルール実行部11は、第1のノードに対してメッセージの第1のアプリへの転送の依頼を受け取ると、第1のアプリが第1のノードになくても、クラウド上の第1のアプリへメッセージを転送することで、不要な通信を抑止できる。
ところで、実施例1では、振り分けルール実行部11は、第1のノードの振り分けテーブル31に、第1のアプリの宛先情報として、第1のノードを示す宛先情報と、第2のノードを示す宛先情報が設定されている場合、第2のノードを示す宛先情報を削除する。実施例2では、これに限定されず、さらに、Worker上のアプリが動作するPodのリソースの負荷に応じて、Podの配備を増減するようにしても良い。これにより、アプリ間の通信遅延を抑制することができる。なお、以降、Podの配備の増減は、Podに内包されるコンテナの配備の増減という場合がある。
そこで、実施例2に係る通信制御サーバ1は、Worker上のアプリが動作するPodのリソースの負荷に応じて、Podの配備を増減する場合を説明する。なお、実施例2では、高負荷とは、リソースの使用率が第1の割合を超える場合のことをいい、第1の割合は、変更することができる。ここでいう低負荷とは、リソースの使用率が、第1の割合より小さい第2の割合を超えない場合のことをいい、第2の割合は、変更することができる。
[システムの構成]
図6は、実施例2に係るシステムの構成を示す機能ブロック図である。なお、実施例1の図1に示すシステム9と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、通信制御サーバ1を通信制御サーバ1Aに変更した点である。また、実施例1と実施例2とが異なるところは、クラスタ内のマネージドk8s5に監視ツール52を追加した点である。
監視ツール52は、k8sクラスタ内のPodを監視し、性能情報などを収集する。監視ツール52には、一例として、プロメテウス(Prometheus(登録商標))などが挙げられるが、これに限定されない。
[通信制御サーバの構成]
図7は、実施例2に係る通信制御サーバの構成を示す機能ブロック図である。なお、実施例1の図2に示す通信制御サーバ1と同一の構成については同一符号を付すことで、その重複する構成および動作の説明については省略する。実施例1と実施例2とが異なるところは、振り分けルール実行部11を振り分けルール実行部11Aに変更した点である。また、実施例1と実施例2とが異なるところは、Pod性能情報収集部13、Pod配備情報収集部14、Pod配備制御部15を追加した点である。また、実施例1と実施例2とが異なるところは、Pod性能情報22、Pod配備情報23を追加した点である。
Pod性能情報22は、Pod毎の性能情報である。性能情報には、CPUやメモリなどのリソースの使用率が挙げられる。なお、Pod性能情報22は、例えば、Pod性能情報収集部13によって定期的に登録される。
ここで、Pod性能情報22のデータ構造を、図8を参照して説明する。図8は、Pod性能情報のデータ構造の一例を示す図である。図8に示すように、Pod性能情報22は、Pod名、CPU使用率およびMem使用率を対応付けた情報である。Pod名は、Podを一意に識別できる名称である。CPU使用率は、リソースの1つとしてのCPUを使用している割合であり、CPUの性能情報を示す。Mem使用率は、リソースの1つとしてのメモリを使用している割合であり、メモリの性能情報を示す。一例として、Pod名が「App A1」である場合、CPU使用率として「10%」、Mem使用率として「30%」を記憶している。
図7に戻って、Pod配備情報23は、Podの配備情報である。なお、Pod配備情報23は、例えば、Pod配備情報収集部14によって定期的に登録される。
ここで、Pod配備情報23のデータ構造を、図9を参照して説明する。図9は、Pod配備情報のデータ構造の一例を示す図である。図9に示すように、Pod配備情報23は、Pod名、WorkerノードおよびIPを対応付けた情報である。Pod名は、Podを一意に識別できる名称である。Workerノードは、Workerを識別する情報である。IPは、IPアドレスを示す。一例として、Pod名が「App A1」である場合、Workerノードとして「エッジデバイス#1」、IPとして「10.0.1.10/29」と記憶している。
図7に戻って、振り分けルール実行部11Aは、k8sクラスタ内の各Workerに対して、振り分けテーブルを設定するために振り分けルールを実行する。例えば、振り分けルール実行部11Aは、アプリの初期配備時に、Worker毎に、以下の処理を行う。振り分けルール実行部11Aは、対象のWorker上にアプリが動作するPodが存在する場合には、振り分けテーブル情報21に、アプリの宛先として当該Worker上のPodのIPアドレスを更新する。また、振り分けルール実行部11Aは、対象のWorker上にアプリが動作するPodが存在しない場合には、対象のWorkerがエッジデバイスであれば、振り分けテーブル情報21に、アプリの宛先としてクラウド上のPodのIPアドレスを更新する。つまり、振り分けルール実行部11Aは、k8sの従来技術により振り分けテーブル情報21を設定し、振り分けテーブル情報21に含まれる対象のノードの振り分けテーブルにアプリの宛先としてこのノードを示す宛先と他のノードを示す宛先が設定されている場合には、他のノードを示す宛先を削除する。
また、振り分けルール実行部11Aは、Worker毎に、Pod性能情報22に基づいてコンテナ(Pod)の増減処理を実行し、振り分けテーブルを設定するために振り分けルールを実行する。なお、コンテナ増減処理は、例えば、定期的に実行されれば良い。
例えば、振り分けルール実行部11Aは、Worker毎に、以下の処理を行う。
一例として、振り分けルール実行部11Aは、対象のWorkerがエッジデバイス3上で実行されている場合には、以下の処理を行う。振り分けルール実行部11Aは、Pod性能情報22を参照して、エッジデバイス3上のアプリのPodのリソースの使用率が高負荷になった場合には、クラウド上の同一アプリのコンテナリソースを利用するようにする。一例として、振り分けルール実行部11Aは、クラウド上に対象のアプリのPodが存在する場合には、振り分けテーブル情報21に、対象のアプリの宛先として、実行中のWorker上のPodとクラウド上のPodのIPアドレスを指定する。振り分けルール実行部11Aは、クラウド上に対象のアプリのPodが存在しない場合には、クラウド上に対象のアプリのPodを配備(構築)するようにPod配備制御部15に指示する。これは、アプリの性能を向上させるためである。性能を向上させるためにPodの台数を増やすことを「スケールアウト」という。そして、振り分けルール実行部11Aは、振り分けテーブル情報21に、対象のアプリの宛先として、実行中のWorker上のPodとクラウド上のPodのIPアドレスを指定する。
なお、対象のアプリの通信先のアプリが存在する場合には、振り分けルール実行部11Aは、以下の処理を行なえば良い。すなわち、振り分けルール実行部11Aは、クラウド上に対象のアプリのPodおよび通信先のアプリのPodが存在する場合には、振り分けテーブル情報21に、対象のアプリおよび通信先のアプリの宛先として、実行中のWorker上のPodとクラウド上のPodのIPアドレスを指定すれば良い。振り分けルール実行部11Aは、クラウド上に対象のアプリのPodおよび通信先のアプリのPodが存在しない場合には、クラウド上に対象のアプリのPodおよび通信先のアプリのPodを配備(構築)するようにPod配備制御部15に指示する。すなわち、振り分けルール実行部11Aは、対象のアプリのPodおよび通信先のアプリのPodをスケールアウトする。そして、振り分けルール実行部11Aは、振り分けテーブル情報21に、対象のアプリの宛先として、実行中のWorker上のPodとクラウド上のPodのIPアドレスを指定すれば良い。
また、対象のWorkerがエッジデバイス3上で実行されている場合の別の例として、振り分けルール実行部11Aは、Pod性能情報22を参照して、エッジデバイス3上のアプリのPodのリソースの使用率が低負荷になった場合には、以下の処理を行う。振り分けルール実行部11Aは、クラウド上のアプリのPodのリソースを利用している場合にはこの利用を停止するようにする。一例として、振り分けルール実行部11Aは、振り分けテーブル情報21のエッジデバイス3のWorkerの情報から、クラウド上の対象のアプリのPodのIPアドレスを削除する。
また、別の例として、振り分けルール実行部11Aは、対象のWorkerがクラウド上で実行されている場合には、以下の処理を行う。振り分けルール実行部11Aは、Pod性能情報22を参照して、クラウド上のアプリのPodのリソースの使用率が高負荷になった場合には、クラウド上のアプリのPodをスケールアウトするようにPod配備制御部15に指示する。一例として、振り分けルール実行部11Aは、スケールアウトにより新規に構築されたPodのIPアドレスを、振り分けテーブル情報21のクラウドのWorkerの情報に追加する。
また、対象のWorkerがエッジデバイス3上で実行されている場合の別の例として、振り分けルール実行部11Aは、Pod性能情報22を参照して、クラウド上のアプリのPodのリソースの使用率が低負荷になった場合には、以下の処理を行う。振り分けルール実行部11Aは、クラウド上のアプリのPodを減らすようにPod配備制御部15に指示する。Podの台数を減らすことを「スケールイン」という。一例として、振り分けルール実行部11Aは、振り分けテーブル情報21の、スケールインにより削除されたPodのアプリを利用しているエッジデバイス3やクラウドのWorkerの情報から、削除されたPodのIPアドレスを削除する。
Pod性能情報収集部13は、各Podの性能情報を定期的に収集する。例えば、Pod性能情報収集部13は、監視ツール52に対して、各Podの性能情報を問い合わせる。そして、Pod性能情報収集部13は、監視ツール52から取得した各Podの性能情報をPod性能情報22に保持する。
Pod配備情報収集部14は、各Podの配備情報を定期的に収集する。例えば、Pod配備情報収集部14は、Masterに対して、各Podの配備情報を問い合わせる。そして、Pod配備情報収集部14は、Masterから取得した各Podの配備情報をPod配備情報23に保持する。
Pod配備制御部15は、振り分けルール実行部11Aからの指示に応じて、クラウド上にアプリのPodを増や(新規配備)したり、減らしたりする。
[コンテナ増減処理のフローチャート]
図10~図12は、実施例2に係るコンテナ増減処理のフローチャートの一例を示す図である。なお、コンテナ増減処理は、Worker毎に、例えば定期的に実行される。以降のフローチャートは、あるWorkerの処理について記載する。
図10に示すように、振り分けルール実行部11Aは、所定のタイミングでコンテナ増減処理を開始する(ステップS31)。振り分けルール実行部11Aは、k8sクラスタ上の全アプリの探索を完了したか否かを判定する(ステップS32)。k8sクラスタ上の全アプリの探索を完了していないと判定した場合には(ステップS32;No)、振り分けルール実行部11Aは、未だ探索が完了していないアプリを選択する(ステップS33)。
そして、振り分けルール実行部11Aは、Worker上に選択したアプリのPodが存在するか否かを判定する(ステップS34)。Worker上に選択したアプリのPodが存在しないと判定した場合には(ステップS34;No)、振り分けルール実行部11Aは、ステップS51に移行する。
一方、Worker上に選択したアプリのPodが存在すると判定した場合には(ステップS34;Yes)、振り分けルール実行部11Aは、Workerはエッジ/オンプレ上で稼働しているか否かを判定する(ステップS35)。Workerはエッジ/オンプレ上で稼働していないと判定した場合には(ステップS35;No)、振り分けルール実行部11Aは、ステップS51に移行する。
一方、Workerはエッジ/オンプレ上で稼働していると判定した場合には(ステップS35;Yes)、振り分けルール実行部11Aは、ステップS36に移行する。ステップS36において、振り分けルール実行部11Aは、Podのリソース使用率が高負荷であるか否かを判定する(ステップS36)。Podのリソース使用率が高負荷であると判定した場合には(ステップS36;Yes)、振り分けルール実行部11Aは、クラウド上に利用可能な、選択したアプリのPodと通信先アプリのPodとが存在するか否かを判定する(ステップS37)。
クラウド上に利用可能な、選択したアプリのPodと通信先アプリのPodとが存在すると判定した場合には(ステップS37;Yes)、振り分けルール実行部11Aは、アプリの宛先として実行中のWorker上のPodとクラウド上のPodのIPアドレスを指定する(ステップS38)。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
一方、クラウド上に利用可能な、選択したアプリのPodと通信先アプリのPodとが存在しないと判定した場合には(ステップS37;No)、振り分けルール実行部11Aは、クラウド上に選択アプリのPodおよび通信先アプリのPodを新規構築する(ステップS39)。すなわち、振り分けルール実行部11Aは、選択アプリのPodおよび通信先アプリのPodをスケールアウトする。
そして、振り分けルール実行部11Aは、アプリの宛先として、実行中のWorker上のPodと、新規構築したクラウド上の選択アプリのPodのIPアドレスを指定する(ステップS40)。このとき、振り分けルール実行部11Aは、クラウドのWorkerにもクラウド上のPodのIPアドレスを指定する。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
ステップS36において、Podのリソース使用率が高負荷でないと判定した場合には(ステップS36;No)、振り分けルール実行部11Aは、Podのリソース使用率が低負荷であるか否かを判定する(ステップS41)。Podのリソース使用率が低負荷であると判定した場合には(ステップS41;Yes)、振り分けルール実行部11Aは、アプリの宛先として実行中のWorker上のPodのIPアドレスを指定する(ステップS42)。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
一方、Podのリソース使用率が低負荷であると判定した場合には(ステップS41;No)、振り分けルール実行部11Aは、アプリの宛先は既存の設定から変更しない(ステップS43)。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
ステップS51において、振り分けルール実行部11Aは、クラウド上の選択したアプリのPodのリソース使用率が高負荷であるか否かを判定する(ステップS51)。クラウド上の選択したアプリのPodのリソース使用率が高負荷であると判定した場合には(ステップS51;Yes)、振り分けルール実行部11Aは、クラウド上にアプリのPodを新規構築する(ステップS52)。すなわち、振り分けルール実行部11Aは、アプリのPodをスケールアウトする。
そして、振り分けルール実行部11Aは、アプリの宛先として、既存のPodと新規構築したPodのIPアドレスを指定する(ステップS53)。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
一方、クラウド上の選択したアプリのPodのリソース使用率が高負荷でないと判定した場合には(ステップS51;No)、振り分けルール実行部11Aは、クラウド上の選択したアプリのPodのリソース使用率が低負荷であるか否かを判定する(ステップS54)。クラウド上の選択したアプリのPodのリソース使用率が低負荷でないと判定した場合には(ステップS54;No)、振り分けルール実行部11Aは、ステップS58に移行する。一方、クラウド上の選択したアプリのPodのリソース使用率が低負荷であると判定した場合には(ステップS54;Yes)、振り分けルール実行部11Aは、クラウド上に同一アプリのPodが他に存在するか否かを判定する(ステップS55)。
クラウド上に同一アプリのPodが他に存在しないと判定した場合には(ステップS55;No)、振り分けルール実行部11Aは、ステップS58に移行する。一方、クラウド上に同一アプリのPodが他に存在すると判定した場合には(ステップS55;Yes)、振り分けルール実行部11Aは、他に存在するPodを削除する(ステップS56)。すなわち、振り分けルール実行部11Aは、他Podをスケールインする。
そして、振り分けルール実行部11Aは、アプリの宛先として、削除したPod以外のアプリのPodのIPを指定する(ステップS57)。このとき、振り分けルール実行部11Aは、エッジ/オンプレ上のWorkerが削除Podを利用していた場合には、削除されたPodのIPアドレスを削除する。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
ステップS58において、振り分けルール実行部11Aは、アプリの宛先は既存の設定から変更しない(ステップS58)。そして、振り分けルール実行部11Aは、次のアプリを選択すべく、ステップS32に移行する。
[Pod配備情報収集処理のフローチャート]
図13は、実施例2に係るPod配備情報収集処理のフローチャートの一例を示す図である。なお、Pod配備情報収集処理は、例えば定期的に実行される。
図13に示すように、所定のタイミングで、Pod配備情報収集部14は、Pod配備情報をMasterに問い合わせる(ステップS61)。そして、Pod配備情報収集部14は、問い合わせた結果、受け取ったPod配備情報をPod配備情報23のDBに登録する(ステップS62)。そして、Pod配備情報収集部14は、Pod配備情報収集処理を終了する。
[Pod性能情報収集処理のフローチャート]
図14は、実施例2に係るPod性能情報収集処理のフローチャートの一例を示す図である。なお、Pod性能情報収集処理は、例えば定期的に実行される。
図14に示すように、所定のタイミングで、Pod性能情報収集部13は、各Podの性能情報を監視ツール52に問い合わせる(ステップS71)。そして、Pod性能情報収集部13は、問い合わせた結果、受け取った各Podの性能情報をPod性能情報22のDBに登録する(ステップS72)。そして、Pod性能情報収集部13は、Pod性能情報収集処理を終了する。
[実施例2の効果]
このようにして、上記実施例2では、通信制御サーバ1は、システムがクラウドとクラウドでないデバイスとを含み、クラウドでないデバイスの特定のノードのリソースに負荷がかかっている場合、以下の処理を行う。通信制御サーバ1は、クラウドに特定のノード上の負荷をかけているアプリと同一のアプリが存在する場合には、特定のノードの振り分けテーブルにクラウドのアプリの宛先情報を追加する。かかる構成によれば、通信制御サーバ1は、クラウドでないデバイスの特定のノードのリソースに負荷がかかっている場合であっても、クラウドのアプリを利用させるようにすることで、性能を向上させることができる。
また、上記実施例2では、通信制御サーバ1は、クラウドに特定のノード上の負荷をかけているアプリと同一のアプリが存在しない場合には、クラウドに当該アプリのコンテナを新たに構築する。そして、通信制御サーバ1は、特定のノードの振り分けテーブルにクラウドのアプリの宛先情報を追加する。かかる構成によれば、通信制御サーバ1は、クラウドでないデバイス側の特定のノードのリソースに負荷がかかっている場合であって、クラウドに該当のアプリが存在しない場合であっても、クラウドに該当のアプリのコンテナを新たに構築することで、クラウドのアプリを利用させるようにすることで、性能を向上させることができる。
また、上記実施例2では、通信制御サーバ1は、さらに、クラウドに特定のノード上の負荷をかけているアプリと同一のアプリおよび当該アプリの通信先のアプリが存在しない場合には、クラウドに当該アプリのコンテナおよび当該アプリの通信先のアプリのコンテナを新たに構築する。そして、通信制御サーバ1は、特定のノードの振り分けテーブルにクラウドのアプリの宛先情報および当該アプリの通信先のアプリの宛先情報を追加する。かかる構成によれば、通信制御サーバ1は、クラウドに該当するアプリに加えて該当するアプリの通信先のアプリが存在しない場合には、クラウドにどちらのアプリのコンテナを新たに構築することで、環境を跨る通信を抑制することができる。この結果、通信制御サーバ1は、不要な通信を抑止できる。
また、上記実施例2では、通信制御サーバ1は、クラウドのリソースに負荷がかかっている場合には、クラウドに負荷をかけているアプリのコンテナを新たに構築する。そして、通信制御サーバ1は、クラウドの振り分けテーブルに新たに構築したコンテナの宛先情報を追加する。かかる構成によれば、通信制御サーバ1は、クラウドに負荷がかかっている場合であっても、負荷をかけているアプリと同一のアプリのコンテナを新たに構築することで、構築した方のコンテナを利用させるようにすることで、性能を向上させることができる。
また、上記実施例2では、通信制御サーバ1は、さらに、クラウドのリソースの負荷が減少した場合には、クラウドに負荷が減少したアプリと同一のアプリのコンテナが他に存在する場合には、クラウドに負荷をかけているアプリのコンテナと他のコンテナのいずれかを削除する。そして、通信制御サーバ1は、クラウド側の振り分けテーブルの、削除したコンテナの宛先情報を削除する。かかる構成によれば、通信制御サーバ1は、クラウドの不要なコンテナを削除することで、クラウドのコンテナを整理することができる。
[その他]
なお、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、振り分けルール実行部11と、振り分けテーブル設定部12とを1個の部として統合しても良い。一方、振り分けルール実行部11Aを、アプリの初期配備時の実行部と、アプリを配備後の実行部とに分散しても良い。また、図示しないが振り分けテーブル情報21などを記憶する記憶部を通信制御サーバ1の外部装置としてネットワーク経由で接続するようにしても良い。
また、実施例1、2では、通信制御サーバ1が、クラウド上に設置されると説明したが、これに限定されない。通信制御サーバ1は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した各機能を搭載することによって実現することができる。
また、上記実施例1、2で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図2に示した通信制御サーバ1と同様の機能を実現するアプリ間通信制御プログラムを実行するコンピュータの一例を説明する。図15は、アプリ間通信制御プログラムを実行するコンピュータの一例を示す図である。
図15に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD(Hard Disk Drive)205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、アプリ間通信制御プログラム205aおよびアプリ間通信制御処理関連情報205bを記憶する。
CPU203は、アプリ間通信制御プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、通信制御サーバ1の各機能部に対応する。アプリ間通信制御処理関連情報205bは、振り分けテーブル情報21などに対応する。そして、例えばリムーバブルディスク211が、アプリ間通信制御プログラム205aなどの各情報を記憶する。
なお、アプリ間通信制御プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、光磁気ディスク、IC(Integrated Circuit)カードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらからアプリ間通信制御プログラム205aを読み出して実行するようにしても良い。
1、1A 通信制御サーバ
3 エッジデバイス
5 マネージドk8s
9 システム
11,11A 振り分けルール実行部
12 振り分けテーブル設定部
13 Pod性能情報収集部
14 Pod配備情報収集部
15 Pod配備制御部
21 振り分けテーブル情報
22 Pod性能情報
23 Pod配備情報
31,51 振り分けテーブル

Claims (9)

  1. 各ノードにアプリが分散配置され、
    前記各ノードが、メッセージの転送先となるノードを示す宛先情報を記憶した振り分けテーブルを備え、
    コンテナオーケストレーションソフトが、前記各ノードに配置されたアプリの情報に基づいて、前記振り分けテーブルを設定するシステムにおけるアプリ間通信制御方法であって、
    第1のノードの振り分けテーブルに、前記第1のノードを示す宛先情報と、前記第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、前記第2のノードを示す宛先情報を削除する
    処理をコンピュータが実行することを特徴とするアプリ間通信制御方法。
  2. 前記コンテナオーケストレーションソフトにおいて、オートスケーリング機能が無効と設定されている場合に、前記第2のノードを示す宛先情報を削除する
    ことを特徴とする請求項1に記載のアプリ間通信制御方法。
  3. 前記削除する処理は、第1のノードの前記振り分けテーブルに、クラウドを示す宛先情報と、前記第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、前記第2のノードを示す宛先情報を削除する
    ことを特徴とする請求項1に記載のアプリ間通信制御方法。
  4. 前記システムは、クラウドとクラウドでないデバイスとを含み、前記クラウドでないデバイスの特定のノードのリソースに負荷がかかっており、かつ前記クラウドに前記特定のノード上の負荷をかけているアプリと同一のアプリが存在する場合には、前記特定のノードの前記振り分けテーブルに前記クラウドのアプリの宛先情報を追加する
    ことを特徴とする請求項1に記載のアプリ間通信制御方法。
  5. 前記クラウドに前記特定のノード上の負荷をかけているアプリと同一のアプリが存在しない場合には、前記クラウドに当該アプリのコンテナを新たに構築し、前記特定のノードの前記振り分けテーブルに前記クラウドのアプリの宛先情報を追加する
    ことを特徴とする請求項4に記載のアプリ間通信制御方法。
  6. 前記クラウドに前記特定のノード上の負荷をかけているアプリと同一のアプリおよび当該アプリの通信先のアプリが存在しない場合には、前記クラウドに当該アプリのコンテナおよび当該アプリの通信先のアプリのコンテナを新たに構築し、前記特定のノードの前記振り分けテーブルに前記クラウド側のアプリの宛先情報および当該アプリの通信先のアプリの宛先情報を追加する
    ことを特徴とする請求項5に記載のアプリ間通信制御方法。
  7. 前記クラウドのリソースに負荷がかかっている場合には、前記クラウドに負荷をかけているアプリのコンテナを新たに構築し、前記クラウドの前記振り分けテーブルに新たに構築したコンテナの宛先情報を追加する
    ことを特徴とする請求項4に記載のアプリ間通信制御方法。
  8. 前記クラウドのリソースの負荷が減少した場合には、前記クラウドに負荷が減少したアプリと同一のアプリのコンテナが他に存在する場合には、前記クラウドに負荷をかけているアプリのコンテナと他のコンテナのいずれかを削除し、前記クラウドの前記振り分けテーブルの削除したコンテナの宛先情報を削除する
    ことを特徴とする請求項7に記載のアプリ間通信制御方法。
  9. コンテナオーケストレーションソフトが、各ノードに分散配置されたアプリの情報に基づいて、各ノードに備える振り分けテーブルであってメッセージの転送先となるノードを示す宛先情報を記憶した振り分けテーブルを設定し、
    第1のノードの振り分けテーブルに、前記第1のノードを示す宛先情報と、前記第1のノードと異なる第2のノードを示す宛先情報が設定されている場合に、前記第2のノードを示す宛先情報を削除する
    処理をコンピュータに実行させることを特徴とするアプリ間通信制御プログラム。
JP2020204781A 2020-12-10 2020-12-10 アプリ間通信制御方法およびアプリ間通信制御プログラム Pending JP2022092156A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020204781A JP2022092156A (ja) 2020-12-10 2020-12-10 アプリ間通信制御方法およびアプリ間通信制御プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020204781A JP2022092156A (ja) 2020-12-10 2020-12-10 アプリ間通信制御方法およびアプリ間通信制御プログラム

Publications (1)

Publication Number Publication Date
JP2022092156A true JP2022092156A (ja) 2022-06-22

Family

ID=82068231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020204781A Pending JP2022092156A (ja) 2020-12-10 2020-12-10 アプリ間通信制御方法およびアプリ間通信制御プログラム

Country Status (1)

Country Link
JP (1) JP2022092156A (ja)

Similar Documents

Publication Publication Date Title
JP5575641B2 (ja) 共有データセンタ災害復旧システム及び方法
EP1969476B1 (en) Peer distribution point feature for system management server
JP5513997B2 (ja) 通信システムおよび通信システム更新方法
JP6963168B2 (ja) 情報処理装置、メモリ制御方法およびメモリ制御プログラム
JP2018523932A (ja) 負荷バランシングコンピュータデバイス、システム、および方法
JP5509313B2 (ja) ライブレプリケーションのための方法及び装置
JP5352367B2 (ja) 仮想マシン起動端末および仮想マシン起動プログラム
KR20000004988A (ko) 제한된 메모리 컴퓨터 시스템에서의 클라이언트관리흐름제어를 위한 방법과 장치
JPWO2008117470A1 (ja) 仮想計算機制御プログラム、仮想計算機制御システムおよび仮想計算機移動方法
JP2007529066A (ja) アフィニティ管理のための方法およびシステム
US11966768B2 (en) Apparatus and method for multi-cloud service platform
CN112463366A (zh) 面向云原生的微服务自动扩缩容和自动熔断方法及系统
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
CN114844912B (zh) 数据链路分配方法、装置及分布式块存储系统
US9760370B2 (en) Load balancing using predictable state partitioning
JP2013186644A (ja) サービスオーダーシステム、サービスオーダー装置、サービスオーダー方法、及びサービスオーダープログラム
JP2016177324A (ja) 情報処理装置、情報処理システム、情報処理方法、及びプログラム
JP2022092156A (ja) アプリ間通信制御方法およびアプリ間通信制御プログラム
JP2008242766A (ja) プロセス制御システム
JP2019041241A (ja) 振り分けシステム
JP2024514467A (ja) 地理的に分散されたハイブリッドクラウドクラスタ
JPWO2017145971A1 (ja) 通信システム、制御装置、中継装置、制御方法およびプログラムが記憶された記憶媒体
CN107786365B (zh) 一种集群扩容方法及装置
US10148503B1 (en) Mechanism for dynamic delivery of network configuration states to protocol heads
CN110958182B (zh) 一种通信方法及相关设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230804

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240415

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240514