JP2023065176A - プログラム、情報処理方法および情報処理装置 - Google Patents
プログラム、情報処理方法および情報処理装置 Download PDFInfo
- Publication number
- JP2023065176A JP2023065176A JP2021175835A JP2021175835A JP2023065176A JP 2023065176 A JP2023065176 A JP 2023065176A JP 2021175835 A JP2021175835 A JP 2021175835A JP 2021175835 A JP2021175835 A JP 2021175835A JP 2023065176 A JP2023065176 A JP 2023065176A
- Authority
- JP
- Japan
- Prior art keywords
- container
- delay time
- container group
- proxy
- type
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
【課題】複数の種類のプロキシコンテナが混在する環境で適切な通信方法を利用する。【解決手段】コンテナグループ20は種類Xのプロキシコンテナ22を有する。コンテナグループ40は種類Yのプロキシコンテナ42を有する。処理部12は、プロキシコンテナ22より宛先にリクエストを送信する際の基準遅延時間を取得する。処理部12は、コンテナグループ20のリクエストが異種プロキシ間の通信を中継するコンテナグループ50を経由してコンテナグループ40に到達する場合の遅延時間を当該リクエストの数を基に計算する。処理部12は、遅延時間が基準遅延時間より小さい場合、プロキシコンテナ22を介してコンテナグループ50へリクエストを送信する設定を行い、遅延時間が基準遅延時間以上の場合、種類Yのプロキシコンテナ23をコンテナグループ20に追加し、プロキシコンテナ23を介してコンテナグループ40へリクエストを送信する設定を行う。【選択図】図1
Description
本発明はプログラム、情報処理方法および情報処理装置に関する。
コンピュータにおける仮想化技術の1つにコンテナ型仮想化と呼ばれる技術がある。コンテナ型仮想化では、アプリケーションの起動に用いるライブラリなどの資源を纏めたコンテナが、ソフトウェアの実行環境として定義される。例えば、コンピュータにより実現されるノードがコンテナエンジンを実行することで、ノード上にコンテナを形成することができる。ノードは、CPU(Central Processing Unit)やRAM(Random Access Memory)などのリソースを有する物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。
コンテナは、マイクロサービスと呼ばれる手法により開発されたアプリケーションの実行に用いられることがある。マイクロサービスでは、アプリケーションが機能ごとのサービスに分けて開発される。ノードは、複数のサービスを複数のコンテナにより動作させ、サービス間の連携によりアプリケーションを実行する。サービス間の連携に用いられるネットワーク基盤はサービスメッシュと呼ばれる。サービスメッシュには、サービスごとに配置されるプロキシが用いられる。プロキシもコンテナにより実現される。ノードは、あるサービスのデータを、プロキシを経由して他のサービスに送信することで、サービス間の通信を制御する。例えば、サービスのコンテナとプロキシとして機能するプロキシコンテナとを含むコンテナのグループであるコンテナグループが、ノードへの配備の一単位として用いられることがある。
なお、オーバーレイネットワークに属するオーバーレイノードによる通信経路決定方法が提案されている。当該通信経路決定方法では、オーバーレイノードは、自ノードから着信先ノードへの通信品質を測定しておき、その一方で中継候補ノードから着信先ノードへの通信品質測定結果を中継候補ノードから取得する。オーバーレイノードは、両者の通信品質を比較し、前者の方がよい場合、中継ノードは用いずに着信先ノードへ直接転送する経路を自ノードから着信先ノードへの通信経路とする。オーバーレイノードは、後者がよい場合、最も高品質を提供する中継候補ノードを中継ノードとする通信経路とする。
また、オーバーレイノードが取得する通信品質として、遅延時間とパケット損失率などの複数のQoS(Quality of Service)を考慮する方法も提案されている。
プロキシコンテナには複数の種類が存在する。あるサービスに対して使用されるプロキシコンテナの種類は、例えばサービスの開発に用いられる開発フレームワークに応じて選択される。
このため、あるコンテナグループと他のコンテナグループとで、使用するプロキシコンテナの種類が異なることがある。プロキシコンテナの種類が異なると、通信に用いられるプロトコルが異なり、両コンテナグループ間で通信を行えなくなる。そこで、複数の種類のプロキシコンテナが混在するシステムでサービスメッシュを実現するため、例えば次の方法が考えられる。
第1の方法は、ゲートウェイとして機能するコンテナグループを別途設ける方法である。ゲートウェイは、一方の種類のプロキシコンテナで使用されるプロトコルを、他方の種類のプロキシコンテナで使用されるプロトコルに変換することで、異種のプロキシコンテナ間の通信を中継する。
第2の方法は、サービスのコンテナを含むコンテナグループに、複数の種類のプロキシコンテナを共存させる方法である。この場合、リクエストの送信元のコンテナグループは、宛先のコンテナグループで使用されるプロキシコンテナの種類に応じて、自身が有する複数の種類のプロキシコンテナを使い分ける。
しかし、第1の方法では、第2の方法に比べて消費リソース量を抑えられるが、ゲートウェイでの中継処理により通信の遅延が増大する可能性があるという問題がある。一方、第2の方法では、ゲートウェイを介さないため第1の方法に比べて通信の遅延が抑制されるが、1つのコンテナグループ当たりの消費リソースが増し、配備されるコンテナグループの数の増加に応じて、消費リソース量が過大になり得るという問題がある。
1つの側面では、本発明は、複数の種類のプロキシコンテナが混在する環境において適切な通信方法を利用可能にすることを目的とする。
1つの態様では、プログラムが提供される。このプログラムは、他のコンテナグループとの通信に用いられるプロキシコンテナを含む複数のコンテナが属するコンテナグループであって、第1の種類のプロキシコンテナを有する第1コンテナグループと第2の種類の第1プロキシコンテナを有する第2コンテナグループとを含む複数のコンテナグループを実行する情報処理システムについて、第1コンテナグループから第1の種類のプロキシコンテナにより宛先のコンテナグループへリクエストを送信する際の基準の遅延時間である第1遅延時間を取得し、第1コンテナグループからのリクエストが、互いに異なる種類のプロキシコンテナ間の通信を中継する第3コンテナグループを経由して第2コンテナグループに到達する場合の第2遅延時間を、第1コンテナグループから第2コンテナグループへのリクエストの数に基づいて計算し、第2遅延時間が第1遅延時間より小さい場合に、第1コンテナグループから第2コンテナグループへのリクエストを、第1の種類のプロキシコンテナを介して第3コンテナグループへ送信する設定を行い、第2遅延時間が第1遅延時間以上の場合に、第2の種類の第2プロキシコンテナを第1コンテナグループに追加し、第1コンテナグループから第2コンテナグループへのリクエストを、第2プロキシコンテナを介して第2コンテナグループへ送信する設定を行う、処理をコンピュータに実行させる。
また、1つの態様では、情報処理方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
1つの側面では、複数の種類のプロキシコンテナが混在する環境において適切な通信方法を利用できる。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置を説明する図である。
情報処理装置10は、情報処理システム1で実行されるコンテナグループ間の通信を管理する。情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAMなどの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は複数のプロセッサの集合(マルチプロセッサ)でもよい。情報処理装置10は、情報処理システム1に含まれてもよい。
情報処理装置10は、情報処理システム1で実行されるコンテナグループ間の通信を管理する。情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAMなどの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。処理部12は、CPU、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。処理部12はプログラムを実行するプロセッサでもよい。「プロセッサ」は複数のプロセッサの集合(マルチプロセッサ)でもよい。情報処理装置10は、情報処理システム1に含まれてもよい。
情報処理システム1は、マイクロサービスの手法により開発されたアプリケーションを実行する。情報処理システム1は、1以上のノードを有し、1以上のノード上で複数のコンテナを動作させる。図1ではノードは省略されている。ノードは、物理マシンでもよいし、物理マシン上で動作する仮想マシンでもよい。情報処理システム1は、複数のコンテナにより複数のサービスを実行する。情報処理システム1は、複数のサービスを、プロキシコンテナを介して連携させることで、アプリケーションを実行する。情報処理システム1におけるノードへのサービスの配備の単位は、サービスを実行するコンテナとプロキシコンテナとを含むコンテナグループとなる。
ここで、情報処理システム1では、コンテナの統合管理を行うコンテナオーケストレーションツールが使用される。コンテナオーケストレーションツールは、コンテナの作成および削除やコンテナのクラスタ管理およびコンテナの配備先ノードの決定などのスケジューリングなどを行うソフトウェアである。コンテナオーケストレーションツールの一例には、Kubernetes(登録商標)がある。KubernetesはK8sと略記される。例えば、K8sでは、ポッド(Pod)と呼ばれるコンテナグループがノードへの配備単位となる。ただし、情報処理システム1は、コンテナオーケストレーションツールとして、K8s以外のものを用いてもよい。また、プロキシコンテナは、サイドカー(Sidecar)コンテナまたは単にサイドカーと呼ばれることがある。情報処理システム1は、コンテナグループ20,30,40を実行する。
コンテナグループ20は、コンテナ21およびプロキシコンテナ22を有する。コンテナ21は、第1サービスを実行する。プロキシコンテナ22の種類はXである。
コンテナグループ30は、コンテナ31およびプロキシコンテナ32を有する。コンテナ31は、第2サービスを実行する。プロキシコンテナ32の種類はXである。
コンテナグループ30は、コンテナ31およびプロキシコンテナ32を有する。コンテナ31は、第2サービスを実行する。プロキシコンテナ32の種類はXである。
コンテナグループ40は、コンテナ41およびプロキシコンテナ42を有する。コンテナ41は、第3サービスを実行する。プロキシコンテナ42の種類はYである。
このように、情報処理システム1では、複数の種類のプロキシコンテナが混在する。例えば、K8s上の複数の種類のプロキシコンテナとしては、IstioのEnvoyサイドカー、LinkerdサイドカーおよびDaprサイドカーなどが挙げられる。
このように、情報処理システム1では、複数の種類のプロキシコンテナが混在する。例えば、K8s上の複数の種類のプロキシコンテナとしては、IstioのEnvoyサイドカー、LinkerdサイドカーおよびDaprサイドカーなどが挙げられる。
2つのプロキシコンテナは、同種のもの同士であれば、直接通信が可能である。2つのプロキシコンテナは、互いに異なる種類のもの同士であると、直接通信が不可能である。通信に使用される、暗号化などのプロトコルが異なるためである。上記の例の場合、プロキシコンテナ22,32は、両方とも種類Xである。このため、プロキシコンテナ22,32は、直接通信が可能である。
一方、プロキシコンテナ22は種類Xであるが、プロキシコンテナ42は種類Yであり、種類が異なる。このため、プロキシコンテナ22,42は直接通信が不可能である。コンテナグループ20,40の連携を実現するため、処理部12は次の方法を用い得る。
第1の方法は、ゲートウェイとして機能するコンテナグループ50を情報処理システム1に設ける方法である。コンテナグループ50は、プロキシコンテナ51,52を有する。プロキシコンテナ51の種類はXである。プロキシコンテナ52の種類はYである。コンテナグループ50は、プロキシコンテナ22からのリクエストをプロキシコンテナ51で受信する。コンテナグループ50は、当該リクエストをプロキシコンテナ52からプロキシコンテナ42へ転送する。
第2の方法は、コンテナグループ20に、種類Yのプロキシコンテナ23を設け、種類Xのプロキシコンテナ22と共存させる方法である。コンテナグループ20は、プロキシコンテナ23により、コンテナグループ40のプロキシコンテナ42と直接通信可能である。
第1の方法では、第2の方法に比べて消費リソース量を抑えられるが、ゲートウェイによる中継処理のために通信が遅延し得る。一方、第2の方法では、第1の方法に比べて通信の遅延は低減するが、1つのコンテナグループ当たりの消費リソースが増し、配備されるコンテナグループの数の増加に応じて、消費リソース量が過大になり得る。
そこで、処理部12は、次のように、第1の方法と第2の方法とを使い分ける。処理部12は、コンテナグループ20または他のコンテナグループが新たに配備されるタイミングや、所定の周期で、下記の処理を行う。なお、コンテナグループ20が新たに配備される場合、情報処理システム1では、コンテナグループ20と同じサービスを実行するコンテナグループが既に実行されていてもよい。この場合、実行済のコンテナグループの負荷の一部が新たに配備されるコンテナグループ20に振り分けられる。また、既存のコンテナグループ20と同じサービスを実行する他のコンテナグループが新たに配備される場合、実行済のコンテナグループ20の負荷の一部が新たに配備される他のコンテナグループに振り分けられる。
処理部12は、コンテナグループ20からプロキシコンテナ22を用いて宛先のコンテナグループへリクエストを送信する際の基準の遅延時間である第1遅延時間を取得する。処理部12は、第1遅延時間を記憶部11に格納する。
例えば、処理部12は、ユーザによる第1遅延時間の入力を受け付けることで、第1遅延時間を取得してもよい。また、プロキシコンテナによる通信の遅延時間は、プロキシコンテナが単位時間当たりに送信するリクエスト数に比例して変わる。そこで、処理部12は、種類Xのプロキシコンテナに対して公開されている、単位時間当たりに送信する所定のリクエスト数Aに対する遅延時間Tに基づいて、第1遅延時間を計算してもよい。
より具体的には、まず、処理部12は、プロキシコンテナ22が単位時間当たりに送信するリクエスト総数Bを取得する。処理部12は、コンテナグループ20が送信した直近の所定期間のリクエスト数を基にリクエスト総数Bを計算してもよい。なお、処理部12は、各プロキシコンテナから宛先のプロキシコンテナに送信されたリクエスト数を既存の分散トレーシングの技術を用いて取得可能である。例えば、分散トレーシングを提供するツールには、JaegerやZipkinなどが挙げられる。
また、処理部12は、コンテナグループ20と同じサービスを実行する他のコンテナグループを新たに配備する場合、コンテナグループ20のリクエスト数の一部が他のコンテナグループに振り分けられることを考慮してリクエスト総数Bを計算する。一例では、処理部12は、コンテナグループ20と新たに配備する他のコンテナグループとで、コンテナグループ20における直近の所定期間のリクエスト数を按分することでリクエスト総数Bを計算し得る。また、コンテナグループ20を新たに配備する場合、処理部12は、コンテナグループ20と同じサービスを実行する既存のコンテナグループに属するプロキシコンテナが送信した直近の所定期間のリクエスト数を基にリクエスト総数Bを計算してもよい。
処理部12は、リクエスト総数Bに基づいて、プロキシコンテナ22から種類Xのプロキシコンテナへ直接リクエスト送信を行うとした場合の遅延時間τを、τ=(B/A)*Tと計算する。処理部12は、遅延時間τを第1遅延時間としてもよい。または、処理部12は、遅延時間τに所定の係数αを乗じた値を、第1遅延時間としてもよい。例えば、係数αは、1より大きい値でもよい。
次に、処理部12は、プロキシコンテナ22からのリクエストがコンテナグループ50を経由してコンテナグループ40へ到達する場合の第2遅延時間を、コンテナグループ20からコンテナグループ40へのリクエストの数に基づいて計算する。前述のように、種類Xのプロキシコンテナにおける、単位時間当たりの所定のリクエスト数に応じた遅延時間や種類Yのプロキシコンテナにおける、単位時間当たりの所定のリクエスト数に応じた遅延時間は公開されている。そこで、処理部12は、コンテナグループ20からコンテナグループ40を宛先とするリクエスト数と、プロキシコンテナ22,51,52に対して公開されている遅延時間とに基づいて、プロキシコンテナ22,51,52それぞれで生じる遅延時間を計算する。処理部12は、プロキシコンテナ22,51,52それぞれで生じる遅延時間の合計を第2遅延時間とする。処理部12は、リクエスト数に基づいて遅延時間を計算することで、各プロキシコンテナ内での処理に応じた遅延時間を直接計測することが難しい場合でも、当該遅延時間を適切に得ることができる。
そして、処理部12は、第1遅延時間と第2遅延時間とを比較し、比較の結果に応じて、上記の第1の方法を用いるか第2の方法を用いるかを選択する。具体的には、処理部12は、第2遅延時間が第1遅延時間より小さい場合に、コンテナグループ20からコンテナグループ40へのリクエストを、プロキシコンテナ22を介してコンテナグループ50へ送信する設定を情報処理システム1に対して行う。
すなわち、処理部12は、第2遅延時間が第1遅延時間より小さい場合には、コンテナグループ20からコンテナグループ40へのリクエストをゲートウェイ経由で送信する第1の方法を選択し、第1の方法を利用するためのルーティング設定を行う。一例では、処理部12は、コンテナグループ40を宛先とするリクエストの転送先をプロキシコンテナ51とするルールを、プロキシコンテナ22が有する、転送先の情報を保持する所定のテーブルに追加する。これにより、コンテナグループ20からコンテナグループ40へのリクエストは、コンテナグループ50を介して、コンテナグループ40へ到達する。
なお、コンテナグループ20にプロキシコンテナ23が既に存在していることがある。この場合、処理部12は、コンテナグループ20からプロキシコンテナ23を削除する。すなわち、処理部12は、プロキシコンテナ23の削除後のコンテナグループ20を配備し直す。また、ゲートウェイとして用いるコンテナグループ50が配備されていない場合、処理部12は、コンテナグループ50を新たに配備する。
一方、処理部12は、第2遅延時間が第1遅延時間以上の場合に、コンテナグループ20にプロキシコンテナ23を追加する。具体的には、処理部12は、プロキシコンテナ23の追加後のコンテナグループ20を配備し直す。そして、処理部12は、コンテナグループ20からコンテナグループ40へのリクエストを、プロキシコンテナ23を介してコンテナグループ40へ送信する設定を情報処理システム1に対して行う。
すなわち、処理部12は、第2遅延時間が第1遅延時間以上の場合には、コンテナグループ20からコンテナグループ40へのリクエストを種類Yのプロキシコンテナ23を用いて直接送信する第2の方法を選択する。そして、処理部12は、第2の方法を利用するためのルーティング設定を行う。一例では、処理部12は、コンテナグループ40を宛先とするリクエストの転送先をプロキシコンテナ42とするルールを、プロキシコンテナ23が有する、転送先の情報を保持する所定のテーブルに追加する。また、処理部12は、コンテナグループ40を宛先とするリクエストの、コンテナ21からの転送先をプロキシコンテナ23とするルールを、コンテナグループ20が有するiptablesなどのルーティング設定情報に追加する。これにより、コンテナグループ20からコンテナグループ40へのリクエストは、コンテナグループ50を介さずに、直接、コンテナグループ40へ到達する。
情報処理装置10によれば、情報処理システム1について、第1コンテナグループから第1の種類のプロキシコンテナを用いて宛先のコンテナグループへリクエストを送信する際の基準の遅延時間である第1遅延時間が取得される。第1遅延時間は、記憶部11に記憶される。第1コンテナグループからの当該リクエストが第3コンテナグループを経由して第2コンテナグループに到達する場合の第2遅延時間が、第1コンテナグループから第2コンテナグループへのリクエストの数に基づいて計算される。第3コンテナグループは、互いに異なる種類のプロキシコンテナ間の通信を中継するゲートウェイとして機能する。第2遅延時間が第1遅延時間より小さい場合に、第1コンテナグループから第2コンテナグループへのリクエストを、第1の種類のプロキシコンテナを介して第3コンテナグループへ送信する設定が行われる。第2遅延時間が第1遅延時間以上の場合に、第2の種類の第2プロキシコンテナが第1コンテナグループに追加される。更に、第1コンテナグループから第2コンテナグループへのリクエストが、第2プロキシコンテナを介して第2コンテナグループへ送信する設定が行われる。なお、コンテナグループ20は、第1コンテナグループの一例である。コンテナグループ40は、第2コンテナグループの一例である。コンテナグループ50は、第3コンテナグループの一例である。
これにより、情報処理装置10は、複数の種類のプロキシコンテナが混在する環境において適切な通信方法を利用できる。具体的には次の通りである。
第2遅延時間が、基準となる第1遅延時間よりも小さい場合、ゲートウェイ経由で通信したとしても、情報処理システム1に対して期待される通信品質は満たされることになる。したがって、この場合、処理部12は、コンテナグループ20からコンテナグループ40へのリクエストを、ゲートウェイ、すなわち、コンテナグループ50経由とすることで、消費リソース量の抑制を図れる。
第2遅延時間が、基準となる第1遅延時間よりも小さい場合、ゲートウェイ経由で通信したとしても、情報処理システム1に対して期待される通信品質は満たされることになる。したがって、この場合、処理部12は、コンテナグループ20からコンテナグループ40へのリクエストを、ゲートウェイ、すなわち、コンテナグループ50経由とすることで、消費リソース量の抑制を図れる。
一方、第2遅延時間が、基準となる第1遅延時間以上の場合、ゲートウェイ経由での通信では、情報処理システム1に対して期待される通信品質は満たされないことになる。したがって、この場合、処理部12は、コンテナグループ20からコンテナグループ40へのリクエストをゲートウェイ、すなわち、コンテナグループ50を経由せずに、直接送信とすることで、遅延時間の抑制を図れる。
こうして、処理部12は、第1遅延時間と第2遅延時間との比較により異種のプロキシコンテナ宛のリクエストをゲートウェイ経由とするか、または、直接送信とするかを選択することで、遅延時間の抑制と消費リソース量の抑制とを両立することができる。
以下では、より具体的な例を用いて、情報処理装置10の機能を更に詳細に説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムのハードウェア例を示す図である。
情報処理システム2は、マイクロサービスの手法を用いて開発されたアプリケーションを実行する。情報処理システム2は、アプリケーションにおける複数のサービスを実現する複数のコンテナを実行する。例えば、情報処理システム2は、コンテナオーケストレーションツールとしてK8sを実行する。情報処理システム2は、Apache Mesos(Apacheは登録商標)などの他のコンテナオーケストレーションツールを用いてもよい。
情報処理システム2は、マイクロサービスの手法を用いて開発されたアプリケーションを実行する。情報処理システム2は、アプリケーションにおける複数のサービスを実現する複数のコンテナを実行する。例えば、情報処理システム2は、コンテナオーケストレーションツールとしてK8sを実行する。情報処理システム2は、Apache Mesos(Apacheは登録商標)などの他のコンテナオーケストレーションツールを用いてもよい。
情報処理システム2は、管理サーバ100、マスターノード200およびワーカーノード300,400,500を有する。管理サーバ100、マスターノード200およびワーカーノード300,400,500は、ネットワーク60に接続されている。ネットワーク60は、例えば、LAN(Local Area Network)である。例えば、ネットワーク60は、WAN(Wide Area Network)やインターネットなどの外部ネットワークに接続されてもよい。情報処理システム2は、情報処理システム2が実行するアプリケーションを、外部ネットワークを介して、図示を省略しているクライアントコンピュータにより利用可能としてもよい。
管理サーバ100は、各ワーカーノードで動作する、異種のサイドカーをもつポッド間の通信方法を管理するサーバコンピュータである。サイドカーは、プロキシコンテナの一例である。ポッドは、ワーカーノードに対するコンテナ配備の一単位であり、コンテナグループの一例である。なお、個々のポッド上のコンテナにより実現されるアプリケーションのサービスが「マイクロサービス」と呼ばれてもよい。管理サーバ100は、第1の実施の形態の情報処理装置10の一例である。
マスターノード200は、コンテナのクラスタ管理、各ワーカーノードと連携するためのAPI(Application Programming Interface)提供、各ワーカーノードへのコンテナ配備のスケジューリング、DB(DataBase)管理などを行うサーバコンピュータである。
ワーカーノード300,400,500は、コンテナを実行するサーバコンピュータである。ワーカーノード300,400,500は、マスターノード200と通信し、コンテナの制御を行う。
図3は、管理サーバのハードウェア例を示す図である。
管理サーバ100は、CPU101、RAM102、HDD103、GPU(Graphics Processing Unit)104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
管理サーバ100は、CPU101、RAM102、HDD103、GPU(Graphics Processing Unit)104、入力インタフェース105、媒体リーダ106およびNIC(Network Interface Card)107を有する。なお、CPU101は、第1の実施の形態の処理部12の一例である。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、管理サーバ100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、管理サーバ100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、管理サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
GPU104は、CPU101からの命令に従って、管理サーバ100に接続されたディスプレイ61に画像を出力する。ディスプレイ61としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力インタフェース105は、管理サーバ100に接続された入力デバイス62から入力信号を取得し、CPU101に出力する。入力デバイス62としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理サーバ100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体63に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体63として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体63から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体63は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体63やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
NIC107は、ネットワーク60に接続され、ネットワーク60を介して他のコンピュータと通信を行うインタフェースである。NIC107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
マスターノード200およびワーカーノード300,400,500も、管理サーバ100と同様のハードウェアにより実現される。ただし、管理サーバ100、マスターノード200およびワーカーノード300,400,500は、CPUおよびRAMを有する1以上の物理マシン上で動作する複数の仮想マシンにより実現されてもよい。
図4は、マスターノードによるワーカーノードの制御例を示す図である。
マスターノード200は、管理データ記憶部210およびサービス制御部220を有する。管理データ記憶部210には、マスターノード200のRAMやHDDなどの記憶領域が用いられる。サービス制御部220は、マスターノード200のCPUがマスターノード200のRAMに記憶されたプログラムを実行することで実現される。
マスターノード200は、管理データ記憶部210およびサービス制御部220を有する。管理データ記憶部210には、マスターノード200のRAMやHDDなどの記憶領域が用いられる。サービス制御部220は、マスターノード200のCPUがマスターノード200のRAMに記憶されたプログラムを実行することで実現される。
ワーカーノード300は、エージェント310およびポッド600を有する。エージェント310およびポッド600は、ワーカーノード300のCPUがワーカーノード300のRAMに記憶されたプログラムを実行することで実現される。
ワーカーノード400は、エージェント410およびポッド700を有する。エージェント410およびポッド700は、ワーカーノード400のCPUがワーカーノード400のRAMに記憶されたプログラムを実行することで実現される。
エージェント310,410は、マスターノード200の指示に従って、自ノードでポッドを起動する。また、エージェント310,410は、自ノードのステータスを監視し、マスターノード200に通知する。エージェント310,410は、kubeletと呼ばれる。
図示を省略しているが、ワーカーノード500も、ワーカーノード300,400と同様に、エージェントおよびポッドを実行する。ワーカーノード300,400,500それぞれは、複数のポッドを実行し得る。
サービス制御部220は、エージェント310と通信し、ワーカーノード300上へのポッド600の配備および起動を指示する。また、サービス制御部220は、エージェント310と通信し、ワーカーノード300上で動作するポッド600の停止や削除を指示することもある。なお、ワーカーノードへのポッドの配備はデプロイと言われることがある。また、ワーカーノードからのポッドの削除はアンデプロイと言われることがある。
サービス制御部220は、エージェント410と通信し、ワーカーノード400上へのポッド700の配備や起動を指示する。また、サービス制御部220は、エージェント410と通信し、ワーカーノード400上で動作するポッド700の停止や削除を指示することもある。
ここで、ポッド600は、コンテナ610およびサイドカー620を有する。ポッド700は、コンテナ710およびサイドカー720を有する。
コンテナ610,710は、アプリケーションのプログラムやライブラリなどを1つにまとめたコンポーネントである。コンテナ610,710それぞれが1つのサービスを実現する。
コンテナ610,710は、アプリケーションのプログラムやライブラリなどを1つにまとめたコンポーネントである。コンテナ610,710それぞれが1つのサービスを実現する。
サイドカー620は、ポッド600と他のポッドとの通信を行うプロキシとして機能するコンポーネントである。サイドカー620も、コンテナとして実現される。サイドカー720も、サイドカー620と同様に、他のポッドとの通信を行うプロキシとして機能する。
また、サービス制御部220は、既存の分散トレーシングの技術を用いて、各サイドカーから宛先のサイドカー毎に送信された単位時間当たりのリクエスト数の平均値を取得し、管理データ記憶部210に格納する。情報処理システム2で実行される分散トレーシングのツールには、例えばJaegerやZipkinなどがある。
管理サーバ100は、マスターノード200にコマンドを入力することで、ワーカーノード300,400,500におけるポッドの配備や起動などを指示したり、管理データ記憶部210に保持される情報を取得したりする。例えば、管理データ記憶部210は、サービス制御部220が各ワーカーノードから取得した、サイドカー間のリクエスト数の計測値などの情報を保持する。管理サーバ100からマスターノードに入力されるコマンドには、例えばkubectlコマンドが用いられる。
図5は、ポッド間の通信の例を示す図である。
例えば、ポッド600は、サイドカー620を用いて、ポッド600xと通信する。ポッド600xは、コンテナ610xおよびサイドカー620xを有する。例えば、コンテナ610からコンテナ610xへリクエストを送信する場合、コンテナ610は、リクエストをサイドカー620に転送する。サイドカー620は、リクエストの宛先、すなわち、サイドカー620xのIP(Internet Protocol)アドレスを特定し、当該IPアドレスに基づいて、サイドカー620xへリクエストを送信する。サイドカー620xは、受信したリクエストをコンテナ610xへ転送する。
例えば、ポッド600は、サイドカー620を用いて、ポッド600xと通信する。ポッド600xは、コンテナ610xおよびサイドカー620xを有する。例えば、コンテナ610からコンテナ610xへリクエストを送信する場合、コンテナ610は、リクエストをサイドカー620に転送する。サイドカー620は、リクエストの宛先、すなわち、サイドカー620xのIP(Internet Protocol)アドレスを特定し、当該IPアドレスに基づいて、サイドカー620xへリクエストを送信する。サイドカー620xは、受信したリクエストをコンテナ610xへ転送する。
サイドカー620,620xによるリクエストの宛先に応じた転送先の情報(例えば、転送先のIPアドレス)は、コントロールプレーン70からサイドカー620,620xに提供される。コントロールプレーン70は、コンテナにより実現され、ワーカーノード300,400,500それぞれで動作する。
コントロールプレーン70に対して、サイドカー620,620xのレイヤは、データプレーン71と呼ばれる。コントロールプレーン70およびデータプレーン71により、サービスメッシュが実現される。サービスメッシュは、例えばmTLS(mutual-TLS)による暗号化、ロードバランシングおよび分散トレーシングなどの、サービス間の通信制御を行う。
K8s上でサービスメッシュを提供するソフトウェアには、例えば、Istio、LinkerdおよびDaprなどがある。また、K8s上でサービスメッシュを提供するクラウドサービスには、AWS(登録商標) App MeshやGCP Anthos(登録商標)などがある。GCPはGoogle Cloud Platformの略である。Googleは登録商標である。
サービスメッシュのタイプ、すなわち、サイドカーの種類として、何れのものが用いられるかは、サービスの開発に用いられる開発フレームワークに応じて選択される。このため、情報処理システム2では、異なる種類のサイドカーが共存し得る。
図6は、サイドカーの種類に応じた通信可否の例を示す図である。
例えば、コンテナ610のサービス名をApp1とする。サイドカー620は、Istioサイドカー、すなわち、Envoyサイドカーであるとする。また、コンテナ710のサービス名をApp2とする。サイドカー720は、Daprサイドカーであるとする。この場合、サイドカー620に対するコントロールプレーン70は、Istioのコントロールプレーンである。Daprのサイドカー720に対しては、Daprのコントロールプレーンが各ノードで実行される。
例えば、コンテナ610のサービス名をApp1とする。サイドカー620は、Istioサイドカー、すなわち、Envoyサイドカーであるとする。また、コンテナ710のサービス名をApp2とする。サイドカー720は、Daprサイドカーであるとする。この場合、サイドカー620に対するコントロールプレーン70は、Istioのコントロールプレーンである。Daprのサイドカー720に対しては、Daprのコントロールプレーンが各ノードで実行される。
また、情報処理システム2で動作するポッド800は、コンテナ810およびサイドカー820を有する。コンテナ810のサービス名をApp3とする。サイドカー820は、Istioサイドカーである。
同種のサイドカー同士は、直接の通信が可能である。例えば、サイドカー620,820は、何れもIstioサイドカーであり、同種のサイドカー同士である。したがって、サイドカー620,820は、直接の通信が可能である。
一方、異種のサイドカー同士は、直接の通信が不可能である。暗号化などの通信のためのプロトコルが異なるためである。例えば、サイドカー620はIstioサイドカーであるが、サイドカー720は、Daprサイドカーである。すなわち、サイドカー620,720は、異種のサイドカー同士である。したがって、サイドカー620,720は、直接の通信が不可能である。
直接の通信を行えないポッド間の連携を可能にするため、次のような2つの通信方法が考えられる。第1の方法は、異種のサイドカーの間の通信を中継するゲートウェイ(GW:Gateway)として機能するポッドを設け、GW経由で異種のサイドカーの間の通信を行う方法である。第2の方法は、リクエストの送信元のポッドに、元のサイドカーとは異なる種類のサイドカーを共存させ、異なる種類のサイドカー宛のリクエスト送信に用いる方法である。
図7は、GW経由の通信の例を示す図である。
ゲートウェイ900は、ポッド600,700の通信を中継する。ゲートウェイ900は、サイドカー910,920を有する。サイドカー910はIstioサイドカーである。サイドカー920は、Daprサイドカーである。ゲートウェイ900は、サイドカー910で受信したリクエストをサイドカー920から送信することで、Istioサイドカーの通信プロトコルを、Daprサイドカーの通信プロトコルに変換する。あるいは、ゲートウェイ900は、サイドカー920で受信したリクエストをサイドカー910から送信することで、Daprサイドカーの通信プロトコルを、Istioサイドカーの通信プロトコルに変換する。リクエストの宛先に応じたリクエストの転送先の情報(例えば、転送先のIPアドレス)は、ゲートウェイ900を動作させるワーカーノードのコントロールプレーンにより、ゲートウェイ900に提供される。ゲートウェイ900は、Daprサイドカーの通信プロトコルを、Istioサイドカーの通信プロトコルに変換する処理を行うコンテナを更に有してもよい。
ゲートウェイ900は、ポッド600,700の通信を中継する。ゲートウェイ900は、サイドカー910,920を有する。サイドカー910はIstioサイドカーである。サイドカー920は、Daprサイドカーである。ゲートウェイ900は、サイドカー910で受信したリクエストをサイドカー920から送信することで、Istioサイドカーの通信プロトコルを、Daprサイドカーの通信プロトコルに変換する。あるいは、ゲートウェイ900は、サイドカー920で受信したリクエストをサイドカー910から送信することで、Daprサイドカーの通信プロトコルを、Istioサイドカーの通信プロトコルに変換する。リクエストの宛先に応じたリクエストの転送先の情報(例えば、転送先のIPアドレス)は、ゲートウェイ900を動作させるワーカーノードのコントロールプレーンにより、ゲートウェイ900に提供される。ゲートウェイ900は、Daprサイドカーの通信プロトコルを、Istioサイドカーの通信プロトコルに変換する処理を行うコンテナを更に有してもよい。
サイドカー620は、ポッド700宛のリクエストをゲートウェイ900に送信することで、ポッド600にDaprサイドカーを設けなくても、ポッド700と通信できる。
なお、サイドカー620は、ポッド800宛のリクエストについては、サイドカー820に直接送信する。
なお、サイドカー620は、ポッド800宛のリクエストについては、サイドカー820に直接送信する。
図8は、異なる種類のサイドカーの共存による通信の例を示す図である。
例えば、ポッド600に、コンテナ610およびサイドカー620に加えて、サイドカー630を設ける。サイドカー630は、Daprサイドカーである。したがって、サイドカー630,720は直接通信が可能である。この場合、コンテナ610は、ポッド700宛のリクエストをサイドカー630に転送することで、当該リクエストをポッド700に送信させることができる。コンテナ610は、ポッド800宛のリクエストについては、サイドカー620に転送することで、当該リクエストをポッド800に送信させることができる。
例えば、ポッド600に、コンテナ610およびサイドカー620に加えて、サイドカー630を設ける。サイドカー630は、Daprサイドカーである。したがって、サイドカー630,720は直接通信が可能である。この場合、コンテナ610は、ポッド700宛のリクエストをサイドカー630に転送することで、当該リクエストをポッド700に送信させることができる。コンテナ610は、ポッド800宛のリクエストについては、サイドカー620に転送することで、当該リクエストをポッド800に送信させることができる。
このように、上記の2つの通信方法により異なる種類のサイドカーを有するポッド同士の通信を可能にすることが考えられる。しかし、GW経由の通信方法では、異種サイドカーを共存させる通信方法に比べて消費リソース量を抑えられるが、ゲートウェイ900による中継処理のために通信が遅延する可能性がある。一方、異種サイドカーを共存させる通信方法では、GW経由の通信方法に比べて通信の遅延は低減するが、1つのコンテナグループ当たりの消費リソースが増し、配備されるコンテナグループの数の増加に応じて、消費リソース量が過大になり得る。また、コントロールプレーン70も、制御対象のサイドカーの数に応じて、消費リソース量が増大する。例えば、1000個のサービスおよび2000個のサイドカーの実行に対するコントロールプレーン70の消費リソース量は、1CPUおよびメモリ1.5GB程度である。なお、各ポッドやコントロールプレーン70に割り当てられるCPUは、仮想CPU(vCPU:virtual CPU)でもよい。
そこで、管理サーバ100は、GW経由の通信方法と異種サイドカーを共存させる通信方法とを使い分ける機能を提供する。
図9は、管理サーバの機能例を示す図である。
図9は、管理サーバの機能例を示す図である。
管理サーバ100は、記憶部110、基準遅延時間計算部120、遅延時間計算部130および設定変更処理部140を有する。記憶部110には、RAM102やHDD103の記憶領域が用いられる。基準遅延時間計算部120、遅延時間計算部130および設定変更処理部140は、RAM102に記憶されたプログラムをCPU101が実行することで実現される。
記憶部110は、各種のサイドカーの処理による遅延時間に関して、当該サイドカーの提供元などにより公開されている性能情報を記憶する。性能情報は、各種のサイドカーについて、単位時間当たりの所定のリクエスト数に応じた遅延時間の情報を含む。性能情報は、例えば該当のサイドカーの提供元ベンダなどのWebページから取得可能である。本例では、単位時間を1秒とする。記憶部110は、当該性能情報を基に、基準遅延時間計算部120により計算された基準遅延時間の情報を記憶する。また、記憶部110は、現状のリクエスト数に対して各サイドカーに対して計算された遅延時間の情報を記憶する。
基準遅延時間計算部120は、性能情報に含まれる、所定のリクエスト数/sに応じた遅延時間の情報に基づいて、各ポッドのリクエスト送信に係る基準遅延時間を計算する。なお、リクエスト数/sは、1秒当たりのリクエスト数を示す。サイドカーによる通信の遅延時間は、送信するリクエスト数/sに比例して大きくなる。基準遅延時間計算部120は、あるポッドに関し、本来の単一のサイドカーを用いて、現状のリクエスト数/sで送信する場合の遅延時間を、当該ポッドに対する基準遅延時間として計算する。
遅延時間計算部130は、各ポッドが異種のサイドカー宛に送信するリクエストの数/sを基に、当該リクエストをGW経由で送信する場合の遅延時間を計算する。リクエストをGW経由で送信する場合、遅延時間計算部130は、リクエスト送信元のポッドのサイドカーにおける遅延時間と、ゲートウェイ900のサイドカー910,920それぞれにおける遅延時間とを加算することで、GW経由の場合の遅延時間を計算する。
設定変更処理部140は、各ポッドについて、基準遅延時間計算部120が計算した基準遅延時間と、遅延時間計算部130が計算した遅延時間とを比較し、該当のポッドから異種のサイドカー宛のリクエストの送信に用いる通信方法を選択する。GW経由の場合の遅延時間が基準遅延時間より小さい場合、設定変更処理部140は、GW経由の通信方法を選択する。一方、GW経由の場合の遅延時間が基準遅延時間以上の場合、設定変更処理部140は、異種サイドカーを共存させる通信方法を選択する。設定変更処理部140は、選択した通信方法に応じて、マスターノード200にポッドの構成変更を指示する。後述されるように、ポッドの構成変更は、新たなサイドカーの追加や既存のサイドカーの削除を伴う。例えば、設定変更処理部140は、ポッド600に対する新たなサイドカーの追加や既存のサイドカーの削除に応じて、マスターノード200が保持する、ポッド600に対応するイメージデータを変更する。当該イメージデータは、マスターノード200によりポッド600の配備に用いられる。
また、ポッド600からポッド700宛のリクエストの送信のためにGW経由を選択した場合、設定変更処理部140は、当該リクエストをゲートウェイ900に送信するルーティング設定をポッド600に行う。なお、後述されるように、設定変更処理部140は、ポッド600の中に、GW経由でリクエストを送信するためのIstioサイドカーを、サイドカー620とは別個に設けてもよい。
また、ポッド600からポッド700宛のリクエストの送信のために、異種サイドカーの共存を選択した場合、設定変更処理部140は、サイドカー630をポッド600に追加する。そして、設定変更処理部140は、ポッド600からポッド700宛のリクエストを、サイドカー630を用いて送信するルーティング設定をポッド600に行う。
例えば、設定変更処理部140は、ワーカーノード上に新規のポッドが追加される場合または所定の周期で、新規のポッドが用いる通信方法の設定や、既存のポッドが用いる通信方法の再設定を行う。所定の周期は、例えば、1時間または1日などである。通信方法の再設定により、既存のポッドについて、GW経由の通信方法から異種サイドカーを共存させる通信方法に変更されることもあるし、逆に、異種サイドカーを共存させる通信方法からGW経由の通信方法に変更されることもある。
なお、GW経由および異種サイドカーの共存の選択に応じて通信方法を変更する場合、ポッドにサイドカーを追加したり、ポッドからサイドカーを削除したりする構成変更を伴う。この場合、設定変更処理部140は、ポッドの再配備、すなわち、ポッドのアンデプロイ、および、構成変更後のポッドのデプロイといった手順を、マスターノード200に指示する。例えば、設定変更処理部140は、同じサービスを実行する複数のポッドが存在する場合、ローリングアップデートやブルーグリーンデプロイメントを行うことで、サービスを停止させずに、ポッドの再配備を行ってもよい。
図10は、サイドカー情報テーブルの例を示す図である。
サイドカー情報テーブル111は、記憶部110に予め格納される。サイドカー情報テーブル111は、各種のサイドカーの提供元により公開される性能情報である。サイドカー情報テーブル111は、サイドカータイプ、項目名および値の項目を含む。サイドカータイプの項目には、サイドカーの種類が登録される。項目名の項目には、性能の項目名が登録される。値の項目には、性能値が登録される。
サイドカー情報テーブル111は、記憶部110に予め格納される。サイドカー情報テーブル111は、各種のサイドカーの提供元により公開される性能情報である。サイドカー情報テーブル111は、サイドカータイプ、項目名および値の項目を含む。サイドカータイプの項目には、サイドカーの種類が登録される。項目名の項目には、性能の項目名が登録される。値の項目には、性能値が登録される。
例えば、サイドカー情報テーブル111は、サイドカータイプ「Istio」、項目名「1000req/s時の使用リソース」、値「CPU:0.35、メモリ:40MB」のレコードを有する。当該レコードは、Istioサイドカーでは、1秒当たりに送信するリクエスト数が1000の場合、CPUを0.35個、メモリ(RAM)を40MB(Mega Bytes)使用することを示す。
また、サイドカー情報テーブル111は、サイドカータイプ「Istio」、項目名「1000req/s時の遅延時間」、値「2.65ms」のレコードを有する。当該レコードは、Istioサイドカーでは、1秒当たりに送信するリクエスト数が1000の場合、2.65ms(ミリ秒)の遅延が発生することを示す。
また、サイドカー情報テーブル111は、サイドカータイプ「Dapr」、項目名「1000req/s時の使用リソース」、値「CPU:0.48、メモリ:23MB」のレコードを有する。当該レコードは、Daprサイドカーでは、1秒当たりに送信するリクエスト数が1000の場合、CPUを0.48個、メモリを23MB使用することを示す。
また、サイドカー情報テーブル111は、サイドカータイプ「Dapr」、項目名「1000req/s時の遅延時間」、値「1.40ms」のレコードを有する。当該レコードは、Daprサイドカーでは、1秒当たりに送信するリクエスト数が1000の場合、1.40msの遅延が発生することを示す。
サイドカー情報テーブル111にはIstioやDapr以外の種類のサイドカーについても当該サイドカーの提供元により公開されている使用リソースや遅延時間の情報が登録され得る。
図11は、リクエスト数テーブルの例を示す図である。
リクエスト数テーブル112は、送信元のサービスから宛先のサービスに送信された単位時間当たりのリクエスト数の平均値(リクエスト数/s)が記録された情報である。リクエスト数テーブル112の情報は、基準遅延時間計算部120によりマスターノード200から取得され、記憶部110に格納される。
リクエスト数テーブル112は、送信元のサービスから宛先のサービスに送信された単位時間当たりのリクエスト数の平均値(リクエスト数/s)が記録された情報である。リクエスト数テーブル112の情報は、基準遅延時間計算部120によりマスターノード200から取得され、記憶部110に格納される。
リクエスト数テーブル112は、送信元、宛先およびリクエスト数/sの項目を含む。送信元の項目には、送信元のポッドの識別情報として、送信元のポッドにおけるサービスの識別名が登録される。宛先の項目には、宛先のポッドにおけるサービスの識別名が登録される。リクエスト数/sの項目には、送信元から宛先に対して1秒当たりに送信されるリクエスト数の平均値が登録される。当該平均値は、例えば、直近の所定期間に送信元から宛先に対して送信されたリクエストの数に基づいて取得される。
例えば、リクエスト数テーブル112は、送信元「App1」、宛先「App2」、リクエスト数/s「300」のレコードを有する。当該レコードは、ポッド600からポッド700に対して、毎秒300個のリクエストが送信されることを示す。
また、リクエスト数テーブル112は、送信元「App1」、宛先「App3」、リクエスト数/s「700」のレコードを有する。当該レコードは、ポッド600からポッド800に対して、毎秒700個のリクエストが送信されることを示す。
リクエスト数テーブル112には、送信元および宛先の他の組に対してもリクエスト数/sが登録され得る。
図12は、基準遅延時間テーブルの例を示す図である。
図12は、基準遅延時間テーブルの例を示す図である。
基準遅延時間テーブル113は、基準遅延時間計算部120によりリクエスト数テーブル112に基づいて生成され、記憶部110に格納される。基準遅延時間テーブル113は、送信元、タイプおよび基準遅延時間の項目を含む。送信元の項目には、送信元のポッドにおけるサービスの識別名が登録される。タイプの項目には、当該ポッドで動作するサイドカーの種類が登録される。基準遅延時間の項目には、当該ポッドから宛先のポッドへリクエストを送信する場合の基準遅延時間が登録される。
例えば、基準遅延時間テーブル113は、送信元「App1」、タイプ「Istio」、基準遅延時間「2.65ms」のレコードを有する。当該レコードは、ポッド600のサイドカーの種類が「Istio」であり、基準遅延時間が2.65msであることを示す。
ここで、基準遅延時間計算部120は、リクエスト数テーブル112に基づいて、次のようにポッド600に対する基準遅延時間を計算する。まず、基準遅延時間計算部120は、リクエスト数テーブル112に基づいて、ポッド600が単位時間当たりに送信する総リクエスト数を計算する。具体的には、基準遅延時間計算部120は、ポッド600が送信する総リクエスト数/s=300+700=1000個/sと計算する。
そして、基準遅延時間計算部120は、サイドカー情報テーブル111に基づき、ポッド600が元々有する単一のサイドカー620を用いて当該総リクエスト数/sで送信する場合の遅延時間を、基準遅延時間として計算する。具体的には、サイドカーの遅延時間は、送信するリクエスト数/sに比例して大きくなる。サイドカー620の種類はIstioである。サイドカー情報テーブル111によれば、Istioサイドカーの「1000req/s時の遅延時間」は2.65msである。ここで、サイドカー情報テーブル111の「1000req/s時の遅延時間」における「1000req/s」をAと表記し、ポッド600に対して基準遅延時間計算部120が計算した総リクエスト数/sをBと表記する。基準遅延時間計算部120は、ポッド600に対する基準遅延時間を、(B/A)*2.65=(1000/1000)*2.65=2.65msと計算する。
基準遅延時間テーブル113には、他のポッドに対しても、基準遅延時間が登録され得る。
図13は、サービスメッシュタイプテーブルの例を示す図である。
図13は、サービスメッシュタイプテーブルの例を示す図である。
サービスメッシュタイプテーブル114は、基準遅延時間計算部120によりマスターノード200から取得され、記憶部110に格納される。サービスメッシュタイプテーブル114は、ポッドおよびタイプの項目を含む。ポッドの項目には、ポッドにおけるサービスの識別名が登録される。タイプの項目には、当該ポッドで使用されるサービスメッシュタイプ、すなわち、サービスメッシュに使用されるサイドカーの種類が登録される。
例えば、サービスメッシュタイプテーブル114は、ポッド「App1」、タイプ「Istio」のレコードを有する。当該レコードは、ポッド600のサイドカーの種類が「Istio」であることを示す。
サービスメッシュタイプテーブル114には、ポッド700のサイドカーの種類が「Dapr」であることを示すレコードや、ポッド800のサイドカーの種類が「Istio」であることを示すレコードも登録される。
図14は、サービスメッシュタイプ別リクエスト数テーブルの例を示す図である。
サービスメッシュタイプ別リクエスト数テーブル115は、遅延時間計算部130により、リクエスト数テーブル112およびサービスメッシュタイプテーブル114に基づいて生成され、記憶部110に格納される。サービスメッシュタイプ別リクエスト数テーブル115は、送信元、送信元タイプ、宛先タイプおよびリクエスト数/sの項目を含む。
サービスメッシュタイプ別リクエスト数テーブル115は、遅延時間計算部130により、リクエスト数テーブル112およびサービスメッシュタイプテーブル114に基づいて生成され、記憶部110に格納される。サービスメッシュタイプ別リクエスト数テーブル115は、送信元、送信元タイプ、宛先タイプおよびリクエスト数/sの項目を含む。
送信元の項目には、送信元のポッドにおけるサービスの識別名が登録される。送信元タイプの項目には、送信元のポッドにおけるサイドカーの種類が登録される。宛先タイプの項目には、宛先のポッドにおけるサイドカーの種類が登録される。リクエスト数/sの項目には、送信元のポッドから宛先のポッドへ送信される1秒あたりのリクエスト数が登録される。
例えば、サービスメッシュタイプ別リクエスト数テーブル115は、送信元「App1」、送信元タイプ「Istio」、宛先タイプ「Dapr」、リクエスト数/s「300」のレコードを有する。当該レコードは、ポッド600から宛先タイプがDaprのサイドカーを有するポッド700へ300個/sのリクエストが送信されることを示す。
また、サービスメッシュタイプ別リクエスト数テーブル115は、送信元「App1」、送信元タイプ「Istio」、宛先タイプ「Istio」、リクエスト数/s「700」のレコードを有する。当該レコードは、ポッド600から宛先タイプがIstioのサイドカーを有するポッド800へ700個/sのリクエストが送信されることを示す。
サービスメッシュタイプ別リクエスト数テーブル115には、送信元の他のポッドに対しても、宛先タイプ毎に、単位時間当たりのリクエスト数が登録され得る。
図15は、GW経由遅延時間テーブルの例を示す図である。
図15は、GW経由遅延時間テーブルの例を示す図である。
GW経由遅延時間テーブル116は、遅延時間計算部130によりサービスメッシュタイプ別リクエスト数テーブル115に基づいて生成され、記憶部110に格納される。GW経由遅延時間テーブル116は、ポッド、送信元タイプ、宛先タイプおよび遅延時間の項目を含む。
ポッドの項目には、送信元のポッドにおけるサービスの識別名が登録される。送信元タイプの項目には、送信元のポッドにおけるサイドカーの種類が登録される。宛先タイプの項目には、宛先のポッドにおけるサイドカーの種類が登録される。遅延時間の項目には、送信元のポッドから宛先のポッドへ、ゲートウェイ900を経由してリクエストを送信する場合の遅延時間が登録される。
例えば、GW経由遅延時間テーブル116は、ポッド「App1」、送信元タイプ「Istio」、宛先タイプ「Dapr」、遅延時間「2.01ms」のレコードを有する。当該レコードは、ポッド600からポッド700へのリクエストを、ゲートウェイ900を経由して送信する場合の遅延時間が2.01msであることを示す。
ここで、遅延時間計算部130は、ポッド600からポッド700へGW経由でリクエストを送信する場合の遅延時間を次のように計算する。
まず、遅延時間計算部130は、サービスメッシュタイプ別リクエスト数テーブル115に基づいて、ポッド600のサイドカーの種類「Istio」に対して、宛先のサイドカーの種類「Dapr」が存在することを特定する。したがって、遅延時間計算部130は、GW経由のリクエスト送信では、IstioサイドカーおよびDaprサイドカーを有するゲートウェイを経由すると特定する。また、遅延時間計算部130は、サービスメッシュタイプ別リクエスト数テーブル115に基づいて、ポッド600からDaprサイドカーへのリクエスト数が300個/sであることを特定する。
まず、遅延時間計算部130は、サービスメッシュタイプ別リクエスト数テーブル115に基づいて、ポッド600のサイドカーの種類「Istio」に対して、宛先のサイドカーの種類「Dapr」が存在することを特定する。したがって、遅延時間計算部130は、GW経由のリクエスト送信では、IstioサイドカーおよびDaprサイドカーを有するゲートウェイを経由すると特定する。また、遅延時間計算部130は、サービスメッシュタイプ別リクエスト数テーブル115に基づいて、ポッド600からDaprサイドカーへのリクエスト数が300個/sであることを特定する。
この場合、ポッド600からDaprサイドカーをもつポッドへ送信されたリクエストは、ポッド600のIstioサイドカー、ゲートウェイのIstioサイドカーおよびゲートウェイのDaprサイドカーを経由して、宛先のポッドに到達する。したがって、遅延時間計算部130は、サイドカー情報テーブル111に基づき、(300/1000)*2.65+(300/1000)*2.65+(300/1000)*1.40=2.01msを、GW経由の遅延時間として計算する。
なお、上記の計算例では、1つのゲートウェイが1つの送信元のポッドからのリクエストを中継する場合を示しているが、1つのゲートウェイは、複数の送信元のポッドからのリクエストを中継し得る。1つのゲートウェイが複数の送信元のポッドからのリクエストを中継する場合、遅延時間計算部130は、上記の計算式において、ゲートウェイのサイドカーに係る遅延時間の項では、当該ゲートウェイが中継する総リクエスト数を用いる。
GW経由遅延時間テーブル116には、他のポッドに対しても、異種のサイドカーを有する宛先のポッドにリクエストを送信する場合のGW経由の遅延時間が登録され得る。
図16は、IPアドレステーブルの例を示す図である。
図16は、IPアドレステーブルの例を示す図である。
IPアドレステーブル117は、各ポッドのIPアドレスを示す情報である。IPアドレステーブル117は、設定変更処理部140により生成される。設定変更処理部140は、マスターノード200から各ポッドのIPアドレスを取得し、IPアドレステーブル117に登録する。IPアドレステーブル117は、ポッドおよびIPアドレスの項目を含む。ポッドの項目には、ポッドにおけるサービスの識別名が登録される。IPアドレスの項目には、IPアドレスが登録される。
例えば、IPアドレステーブル117は、ポッド「App1」、IPアドレス「10.0.0.2」のレコードを有する。当該レコードは、ポッド600のIPアドレスが10.0.0.2であることを示す。IPアドレステーブル117は、ポッド700のIPアドレスが10.0.0.3であることを示すレコードや、ポッド800のIPアドレスが10.0.0.4であることを示すレコードも有する。
図17は、通信方法管理テーブルの例を示す図である。
通信方法管理テーブル118は、あるポッドから宛先のポッドへリクエストを送信する場合の通信方法の管理に用いられる情報である。通信方法管理テーブル118は、ポッド、宛先タイプおよび通信方法の項目を含む。
通信方法管理テーブル118は、あるポッドから宛先のポッドへリクエストを送信する場合の通信方法の管理に用いられる情報である。通信方法管理テーブル118は、ポッド、宛先タイプおよび通信方法の項目を含む。
ポッドの項目には、ポッドにおけるサービスの識別名が登録される。宛先タイプの項目には、宛先のポッドがもつサイドカーの種類が登録される。通信方法の項目には、該当のポッドから宛先のポッドへのリクエストの送信に用いる通信方法が登録される。通信方法は、「GW」および「直接」がある。「GW」は、GW経由でリクエストを送信することを示す。「直接」は、GW経由ではなく、送信元のポッドのサイドカーから宛先のポッドのサイドカーへリクエストを直接送信することを示す。
例えば、通信方法管理テーブル118は、ポッド「App1」、宛先タイプ「Dapr」、通信方法「GW」のレコードを有する。当該レコードは、ポッド600からDaprサイドカーを有するポッド700へのリクエストをGW経由で送信することを示す。
また、通信方法管理テーブル118は、ポッド「App1」、宛先タイプ「Istio」、通信方法「直接」のレコードを有する。当該レコードは、ポッド600からIstioサイドカーを有するポッド800へのリクエストを直接送信することを示す。
なお、ポッド600にDaprのサイドカー630を設け、サイドカー630を用いてポッド700と直接通信する場合、ポッド「App1」、宛先タイプ「Dapr」に対応する通信方法は「直接」となる。
通信方法管理テーブル118には、他のポッドについても、宛先タイプ毎の通信方法が登録され得る。
図18は、GW経由およびサイドカー共存それぞれの通信経路の例を示す図である。
図18は、GW経由およびサイドカー共存それぞれの通信経路の例を示す図である。
例えば、ポッド600とポッド700とがGW経由で通信する場合、ゲートウェイ900がポッド600,700の間を中継する。ポッド600,800の間は同種のサイドカー620,820により直接通信が可能である。
また、ポッド600に対し、サイドカー620とは別個に、異なる種類のサイドカー630を追加してポッド700との通信に用いるサイドカー共存の場合、ポッド600,700の間は同種のサイドカー630,720により直接通信が可能である。また、ポッド600,800の間は同種のサイドカー620,820により直接通信が可能である。
設定変更処理部140は、ポッド600からポッド700宛の単位時間当たりのリクエスト数に応じたGW経由の場合の遅延時間と、基準遅延時間との比較に応じて、ポッド600,700の通信をGW経由とするか、異種のサイドカー共存により行うかを選択する。コンテナ610には、複数の種類のサイドカーと連携するためのライブラリやAPI呼び出しのロジックなどが予め搭載される。
なお、設定変更処理部140は、GW経由を用いる場合、ポッド700宛のリクエストをゲートウェイ900に送信するサイドカー620aを、サイドカー620とは別個に、ポッド600に設ける。サイドカー620aは、Istioサイドカーである。サイドカー620は、前述のように、ポッド800宛のリクエストを、サイドカー820に対して、直接送信する。このように、ゲートウェイ900宛のリクエストを送信するサイドカー620aを別個に設けることで、サイドカー620のみを用いてリクエストを転送するよりも、通信の遅延時間を低減できる。特に、設定変更処理部140は、サイドカー620とは別個にサイドカー620aを設けることで、サイドカー共存での運用中にGW経由の場合として事前に計算された遅延時間と、その後実際にGW経由とした時の遅延時間との乖離を抑制できる。
ここで、サイドカーの消費リソース量は、単位時間に処理するリクエストの数が多いほど大きくなる。サイドカー620aをサイドカー620とは別個に設けたとしても、サイドカー620,620aそれぞれでリクエストを分担することになる。このため、サイドカー620,620aの両方を動作させるためのポッド600の消費リソース量は、サイドカー620単体とする場合よりやや増える程度に抑えられ、サイドカー620と異種のサイドカー630とを共存させる場合のリソース量よりも少なくなる。
なお、ポッド600に、GW宛のサイドカー620aを設けずに、サイドカー620単体により、GW宛およびポッド800宛のリクエストの転送先を決定することも考えられる。この場合、例えば基準遅延時間計算部120は、図12で説明した方法により計算した基準遅延時間(例えば、2.65msという値)に1より大きい係数を乗じた値を、該当のポッドに対する基準遅延時間として決定する。また、遅延時間計算部130は、GW経由の場合の遅延時間を計算する際、ポッド600が送信する総リクエスト数を用いて、サイドカー620による遅延時間を計算し、ゲートウェイ900での遅延時間と合計して、GW経由の場合の遅延時間を求める。このように、管理サーバ100は、サイドカー620aを設けないようにすることもできる。また、ポッド600において、サイドカー620単体により、GW宛とポッド800宛の直接通信とを切り替える場合、設定変更処理部140は、リクエストの宛先に応じたリクエストの転送先の情報を、Istioのコントロールプレーンを介して、サイドカー620に設定してもよい。
設定変更処理部140は、GW経由からサイドカー共存の方法に変更することもできるし、サイドカー共存の方法からGW経由の方法に変更することもできる。例えば、GW経由の方法からサイドカー共存の方法に変更する場合、設定変更処理部140は、ポッド600に追加するサイドカー630に対し、Daprのコントロールプレーンを介してポッド700宛のリクエストの転送先の情報を設定してもよい。また、サイドカー共存の方法からGW経由の方法に変更する場合、設定変更処理部140は、ポッド600に追加するサイドカー620aに対し、Istioのコントロールプレーンを介して、ポッド700宛のリクエストの転送先の情報を設定してもよい。更に、サイドカー共存の方法からGW経由の方法に変更する場合、設定変更処理部140は、サイドカー920に対し、Daprのコントロールプレーンを介して、ポッド700宛のリクエストの転送先の情報を設定してもよい。
次に、設定変更処理部140によるポッド600内のルーティング設定を説明する。まず、サイドカー620aを介してGW経由でポッド700へのリクエストを送信する場合のルーティング設定を説明する。
図19は、GW経由時のルーティング設定の例を示す図である。
設定変更処理部140は、ポッド600が保持するiptablesの転送先テーブル640に、宛先IP毎の転送先のサイドカーを示す情報を登録する。転送先テーブル640は、コンテナ610によるリクエストの転送先の決定に用いられる。転送先テーブル640は、宛先IPおよび転送先の項目を含む。
設定変更処理部140は、ポッド600が保持するiptablesの転送先テーブル640に、宛先IP毎の転送先のサイドカーを示す情報を登録する。転送先テーブル640は、コンテナ610によるリクエストの転送先の決定に用いられる。転送先テーブル640は、宛先IPおよび転送先の項目を含む。
宛先IPの項目には、リクエストの宛先となるポッドのIPアドレスが登録される。転送先の項目には、当該宛先に応じたリクエストの転送先のサイドカーを示す情報が登録される。ここで、転送先のサイドカーを示す情報は、ローカルホストアドレス「127.0.0.1」と、ポート番号との組となる。すなわち、ポッド600内に存在するサイドカー620,620aは、コンテナ610からは当該ポート番号によって区別される。一例では、サイドカー620aに対応するポート番号は「9000」である。サイドカー620に対応するポート番号は「9001」である。
例えば、設定変更処理部140は、IPアドレステーブル117に基づいて、Daprサイドカーを有する宛先のポッド700のIPアドレス「10.0.0.3」を取得する。そして、設定変更処理部140は、転送先テーブル640の宛先IPの項目に「10.0.0.3」を設定し、当該宛先IPに対する転送先の項目に「127.0.0.1:9000」を設定する。サイドカー620aは、コントロールプレーン70の制御により、コンテナ610から転送されたリクエストをゲートウェイ900へ送信する。例えば、設定変更処理部140は、コントロールプレーン70を介して、コンテナ610からのリクエストの転送先をゲートウェイ900とするルール情報をサイドカー620aに設定してもよい。
また、設定変更処理部140は、転送先テーブル640の宛先IPの項目にデフォルトルート「0.0.0.0」を設定し、当該デフォルトルートに対する転送先の項目に「127.0.0.1:9001」を設定する。これにより、宛先IPアドレスが「10.0.0.3」以外のリクエストは、コンテナ610からサイドカー620に転送される。
次に、サイドカー630を介してポッド700へリクエストを直接送信する場合のルーティング設定を説明する。
図20は、異なる種類のサイドカー共存時のルーティング設定の例を示す図である。
図20は、異なる種類のサイドカー共存時のルーティング設定の例を示す図である。
本例では、サイドカー630に対応するポート番号は「9002」である。この場合、設定変更処理部140は、転送先テーブル640の宛先IP「10.0.0.3」に対して、転送先「127.0.0.1:9002」を設定する。サイドカー630は、Daprのコントロールプレーンの制御により、コンテナ610から転送されたリクエストをポッド700へ送信する。例えば、設定変更処理部140は、Daprのコントロールプレーンを介して、コンテナ610からのリクエストの転送先をポッド700とするルール情報をサイドカー630に設定してもよい。設定変更処理部140は、デフォルトルート「0.0.0.0」に対しては、図19と同様に転送先「127.0.0.1:9001」を設定する。
このように、設定変更処理部140は、GW経由とするか、または、異なる種類のサイドカー共存による直接送信とするかに応じて転送先テーブル640の設定変更を行うことで、コンテナ610によるリクエストの送信ルートを制御することができる。
なお、設定変更処理部140は、図19,20で例示したポッド600に対する設定変更を、マスターノード200を介して行うことができる。
次に、管理サーバ100の処理手順を説明する。
次に、管理サーバ100の処理手順を説明する。
図21は、管理サーバの処理例を示すフローチャートである。
(S10)基準遅延時間計算部120は、サービスメッシュ構成設計依頼を受信する。サービスメッシュ構成設計依頼は、新たなポッドが何れかのワーカーノードに配備される場合や、所定の周期で管理サーバ100に入力される。
(S10)基準遅延時間計算部120は、サービスメッシュ構成設計依頼を受信する。サービスメッシュ構成設計依頼は、新たなポッドが何れかのワーカーノードに配備される場合や、所定の周期で管理サーバ100に入力される。
(S11)基準遅延時間計算部120は、処理対象のポッドを1つ選択する。処理対象のポッドの選択候補は、既に動作中のポッドを含む。処理対象のポッドの選択候補は、新規ポッドが配備される場合、当該新規ポッドを含む。ステップS11で選択された処理対象のポッドは、下記のステップにおいて該当ポッドと表記される。
(S12)基準遅延時間計算部120は、該当ポッドが送信する宛先ごとのリクエスト数/sをマスターノード200から取得し、リクエスト数テーブル112に登録する。基準遅延時間計算部120は、該当ポッドの宛先毎の送信リクエスト数/sを合算した総リクエスト数/sを計算する。
なお、基準遅延時間計算部120は、該当ポッドが新規ポッドの場合は、新規ポッドと同じサービスを実行する既存ポッドのリクエスト数の一部を新規ポッドに割り振るように新規ポッドが送信する宛先毎のリクエスト数/sを求めることが考えられる。例えば、あるサービスを実行する既存ポッドがm個で、新規ポッドの追加により、同サービスを実行するポッド数がm+1個になる場合がある。この場合、基準遅延時間計算部120は、各既存ポッドの宛先毎のリクエスト数/sの和を(m+1)等分して既存ポッドおよび新規ポッドそれぞれの宛先毎のリクエスト数/sを求めてもよい。これにより、基準遅延時間計算部120は、新規ポッドおよび既存ポッドそれぞれに対し、新規ポッド追加後の宛先毎のリクエスト数/sを求めることができる。
また、該当ポッドが新規ポッドの場合で、新規ポッドと同じサービスを実行する既存ポッドが存在しない場合、基準遅延時間計算部120は、該当ポッドの宛先毎のリクエスト数/sを0とすることが考えられる。
(S13)基準遅延時間計算部120は、ステップS12で計算した総リクエスト数/sと、サイドカー情報テーブル111とに基づいて、該当ポッド内のサイドカーを経由する基準遅延時間を計算する。基準遅延時間の計算の対象となるサイドカーは、該当ポッドが元々利用する種類のサイドカー(デフォルトの種類のサイドカー)である。基準遅延時間計算部120は、計算した基準遅延時間を、基準遅延時間テーブル113に登録する。なお、ステップS13において、基準遅延時間計算部120は、マスターノード200から該当ポッドおよび宛先ポッドのサイドカーの種類を取得し、サービスメッシュタイプテーブル114に登録する。基準遅延時間計算部120は、サービスメッシュタイプテーブル114から該当ポッドのデフォルトの種類のサイドカーを特定し得る。
(S14)遅延時間計算部130は、サービスメッシュタイプテーブル114に基づいて、宛先ポッドのサービスメッシュタイプ、すなわち、宛先ポッドのサイドカーの種類を取得する。遅延時間計算部130は、該当ポッドに関し、リクエスト数テーブル112に基づいて、宛先ポッドのサイドカーの種類ごとのリクエスト数を計算し、サービスメッシュタイプ別リクエスト数テーブル115に登録する。
(S15)遅延時間計算部130は、サービスメッシュタイプ別リクエスト数テーブル115から該当ポッドに対する宛先ポッドを1つ選択し、宛先ポッドのサイドカーの種類が、該当ポッドと同一であるか否かを判定する。同一である場合、遅延時間計算部130は、ステップS16に処理を進める。同一でない場合、遅延時間計算部130は、図22のステップS19に処理を進める。なお、宛先ポッドのサービスメッシュタイプは、サービスメッシュタイプ別リクエスト数テーブル115の宛先タイプに相当する。
(S16)設定変更処理部140は、該当ポッドのiptablesにおける転送先テーブルにおいて、サービスを実行するコンテナによるデフォルトルートの転送先を自身のサービスメッシュ用サイドカーに設定する。自身のサービスメッシュ用サイドカーは、該当ポッドにおけるデフォルトの種類のサイドカーに相当する。
(S17)設定変更処理部140は、該当ポッドの宛先の全サービスメッシュタイプに対し、構成設計、すなわち、ステップS15以降の処理が完了したか否かを判定する。未処理のサービスメッシュタイプがある場合、設定変更処理部140は、ステップS15に処理を進める。該当ポッドの宛先の全サービスメッシュタイプについて構成設計が完了した場合、設定変更処理部140は、ステップS18に処理を進める。
(S18)設定変更処理部140は、処理対象候補の全ポッドに対して、構成設計の処理が完了したか否かを判定する。全ポッドに対して構成設計の処理を完了した場合、設定変更処理部140は当該処理を終了する。未処理のポッドがある場合、設定変更処理部140は、ステップS11に処理を進める。
図22は、管理サーバの続きの処理例を示すフローチャートである。
(S19)遅延時間計算部130は、サイドカー情報テーブル111およびサービスメッシュタイプ別リクエスト数テーブル115に基づいて、該当ポッドから宛先ポッドに対するGW経由の場合の遅延時間を計算する。遅延時間計算部130は、計算した遅延時間を、GW経由遅延時間テーブル116に登録する。
(S19)遅延時間計算部130は、サイドカー情報テーブル111およびサービスメッシュタイプ別リクエスト数テーブル115に基づいて、該当ポッドから宛先ポッドに対するGW経由の場合の遅延時間を計算する。遅延時間計算部130は、計算した遅延時間を、GW経由遅延時間テーブル116に登録する。
(S20)設定変更処理部140は、基準遅延時間テーブル113およびGW経由遅延時間テーブル116に基づいて、該当ポッドから宛先ポッドに対するGW経由の場合の遅延時間が、該当ポッドの基準遅延時間より小さいか否かを判定する。GW経由の場合の遅延時間が、該当ポッドの基準遅延時間より小さい場合、設定変更処理部140は、図23のステップS27に処理を進める。GW経由の場合の遅延時間が、該当ポッドの基準遅延時間以上の場合、設定変更処理部140は、ステップS21に処理を進める。
(S21)設定変更処理部140は、宛先ポッドのサービスメッシュタイプ用のサイドカーが該当ポッドに既に存在するか否かを判定する。宛先ポッドのサービスメッシュタイプ用のサイドカーが該当ポッドに既に存在する場合、設定変更処理部140は、ステップS25に処理を進める。宛先ポッドのサービスメッシュタイプ用のサイドカーが該当ポッドに存在しない場合、設定変更処理部140は、ステップS22に処理を進める。
なお、設定変更処理部140は、該当ポッドに存在するサイドカーと当該サイドカーの種類とを示す情報を、マスターノード200に問い合わせることで取得することができる。また、設定変更処理部140は、通信方法管理テーブル118に該当ポッドのレコードが登録済の場合、当該レコードに基づいて、該当ポッドに存在するサイドカーと当該サイドカーの種類とを取得してもよい。
(S22)設定変更処理部140は、該当ポッドにGW宛サイドカーが既に存在するか否かを判定する。該当ポッドにGW宛サイドカーが既に存在する場合、設定変更処理部140は、ステップS23に処理を進める。該当ポッドにGW宛サイドカーが存在しない場合、設定変更処理部140は、ステップS24に処理を進める。
(S23)設定変更処理部140は、該当ポッドに対して、宛先ポッドのサービスメッシュタイプ用のサイドカーの作成およびGW宛サイドカーの削除を行う。すなわち、設定変更処理部140は、マスターノード200に該当ポッドのアンデプロイを指示し、宛先ポッドのサービスメッシュタイプ用のサイドカーの作成およびGW宛サイドカーの削除後の該当ポッドのデプロイを、マスターノード200に指示する。これにより、何れかのワーカーノードに、該当ポッドが再配備され、該当ポッドが起動する。そして、設定変更処理部140は、ステップS25に処理を進める。
(S24)設定変更処理部140は、該当ポッドに対して、宛先ポッドのサービスメッシュタイプ用のサイドカーの作成を行う。すなわち、設定変更処理部140は、マスターノード200に該当ポッドのアンデプロイを指示し、宛先ポッドのサービスメッシュタイプ用のサイドカーの作成後の該当ポッドのデプロイを、マスターノード200に指示する。これにより、何れかのワーカーノードに、該当ポッドが再配備され、該当ポッドが起動する。そして、設定変更処理部140は、ステップS25に処理を進める。
(S25)設定変更処理部140は、該当ポッドに対応する宛先ポッドのIPアドレスをマスターノード200から取得し、IPアドレステーブル117に登録する。
(S26)設定変更処理部140は、IPアドレステーブル117に基づいて、宛先ポッドのIPアドレスの転送先を、宛先ポッドのサービスメッシュタイプ用サイドカーに設定する。すなわち、設定変更処理部140は、該当ポッドのサービスを実行するコンテナから宛先ポッドのIPアドレスへのリクエストを、当該コンテナから宛先ポッドのサービスメッシュタイプ用サイドカーへ転送する設定を、該当ポッドのiptablesに設定する。また、設定変更処理部140は、通信方法管理テーブル118に該当ポッドの通信方法のレコードを登録する。そして、設定変更処理部140は、図21のステップS17に処理を進める。
(S26)設定変更処理部140は、IPアドレステーブル117に基づいて、宛先ポッドのIPアドレスの転送先を、宛先ポッドのサービスメッシュタイプ用サイドカーに設定する。すなわち、設定変更処理部140は、該当ポッドのサービスを実行するコンテナから宛先ポッドのIPアドレスへのリクエストを、当該コンテナから宛先ポッドのサービスメッシュタイプ用サイドカーへ転送する設定を、該当ポッドのiptablesに設定する。また、設定変更処理部140は、通信方法管理テーブル118に該当ポッドの通信方法のレコードを登録する。そして、設定変更処理部140は、図21のステップS17に処理を進める。
図23は、管理サーバの続きの処理例を示すフローチャートである。
(S27)設定変更処理部140は、該当ポッドから宛先ポッドのサービスメッシュタイプへのリクエストを中継するゲートウェイ(GW)が既に存在するか否かを判定する。当該ゲートウェイが既に存在する場合、設定変更処理部140は、ステップS29に処理を進める。当該ゲートウェイが存在しない場合、設定変更処理部140は、ステップS28に処理を進める。
(S27)設定変更処理部140は、該当ポッドから宛先ポッドのサービスメッシュタイプへのリクエストを中継するゲートウェイ(GW)が既に存在するか否かを判定する。当該ゲートウェイが既に存在する場合、設定変更処理部140は、ステップS29に処理を進める。当該ゲートウェイが存在しない場合、設定変更処理部140は、ステップS28に処理を進める。
(S28)設定変更処理部140は、ゲートウェイの作成を行う。具体的には、設定変更処理部140は、該当ポッドのサービスメッシュタイプから宛先ポッドのサービスメッシュタイプへのリクエストを中継するゲートウェイとして機能するポッドの配備を、マスターノード200に指示する。これにより、何れかのワーカーノードにゲートウェイのポッドが配備され、起動する。
(S29)設定変更処理部140は、宛先ポッドのIPアドレスをマスターノード200から取得し、IPアドレステーブル117に登録する。
(S30)設定変更処理部140は、該当ポッドにGW宛サイドカーが既に存在するか否かを判定する。該当ポッドにGW宛サイドカーが既に存在する場合、設定変更処理部140は、ステップS34に処理を進める。該当ポッドにGW宛サイドカーが存在しない場合、設定変更処理部140は、ステップS31に処理を進める。
(S30)設定変更処理部140は、該当ポッドにGW宛サイドカーが既に存在するか否かを判定する。該当ポッドにGW宛サイドカーが既に存在する場合、設定変更処理部140は、ステップS34に処理を進める。該当ポッドにGW宛サイドカーが存在しない場合、設定変更処理部140は、ステップS31に処理を進める。
(S31)設定変更処理部140は、宛先ポッドのサービスメッシュタイプ用のサイドカーが該当ポッドに既に存在するか否かを判定する。宛先ポッドのサービスメッシュタイプ用のサイドカーが該当ポッドに既に存在する場合、設定変更処理部140は、ステップS32に処理を進める。宛先ポッドのサービスメッシュタイプ用のサイドカーが該当ポッドに存在しない場合、設定変更処理部140は、ステップS33に処理を進める。
(S32)設定変更処理部140は、該当ポッドに対して、GW宛サイドカーの作成および宛先ポッドのサービスメッシュタイプ用のサイドカーの削除を行う。すなわち、設定変更処理部140は、マスターノード200に該当ポッドのアンデプロイを指示し、GW宛サイドカーの作成および宛先ポッドのサービスメッシュタイプ用のサイドカーの削除後の該当ポッドのデプロイを、マスターノード200に指示する。これにより、何れかのワーカーノードに、該当ポッドが再配備され、該当ポッドが起動する。そして、設定変更処理部140は、ステップS34に処理を進める。
(S33)設定変更処理部140は、該当ポッドに対して、GW宛サイドカーの作成を行う。すなわち、設定変更処理部140は、マスターノード200に該当ポッドのアンデプロイを指示し、GW宛サイドカーの作成後の該当ポッドのデプロイを、マスターノード200に指示する。これにより、何れかのワーカーノードに、該当ポッドが再配備され、該当ポッドが起動する。そして、設定変更処理部140は、ステップS34に処理を進める。
(S34)設定変更処理部140は、IPアドレステーブル117に基づいて、宛先ポッドのIPアドレスの転送先を、GW宛サイドカーに設定する。すなわち、設定変更処理部140は、該当ポッドのサービスを実行するコンテナから宛先ポッドのIPアドレスへのリクエストを、GW宛サイドカーへ転送する設定を、該当ポッドのiptablesに設定する。また、設定変更処理部140は、通信方法管理テーブル118に該当ポッドの通信方法のレコードを登録する。そして、設定変更処理部140は、図21のステップS17に処理を進める。
なお、上記の手順を行った結果、例えば、ゲートウェイ900が何れのリクエストの中継にも用いられなくなることもある。この場合、設定変更処理部140は、ゲートウェイ900のアンデプロイをマスターノード200に指示し、ゲートウェイ900をアンデプロイさせてもよい。また、設定変更処理部140は、ステップS23,S24,S32,S33の該当ポッドの再配備の際には、再配備前後で、該当ポッドのiptablesの設定情報が保持されるように制御する。
また、設定変更処理部140は、1つのポッドについて、ステップS15から、図22,23の手順を含むステップS17までの処理を繰り返し行う場合がある。この場合、設定変更処理部140は、当該繰り返しの中でポッドの再配備を行わず、当該繰り返しが全て完了してから、すなわち、ステップS17 YESの直後に当該ポッドの再配備を1回行って、サイドカーに関する構成変更の全てを該当ポッドに反映させてもよい。そして、その後、設定変更処理部140は、宛先ポッドのIPアドレス毎の転送先のサイドカーを、該当ポッドのiptablesに設定してもよい。
このようにして、管理サーバ100は、あるポッドから異なる種類のサイドカーをもつ他のポッドへのリクエストを、GW経由で送信する方法と、送信元ポッドに宛先と同じ種類のサイドカーを設けて当該サイドカーを用いて直接送信する方法とを使い分ける。管理サーバ100は、基準遅延時間と該当ポッドからGW経由で送信する場合の遅延時間との比較により異種のプロキシコンテナ宛のリクエストをGW経由とするか、直接送信とするかを選択することで、遅延時間の抑制と消費リソース量の抑制とを両立できる。
なお、各ポッドに対して、当該ポッドに対して許容される最大割当リソース量が予め定められていることがある。この場合、設定変更処理部140は、各ポッドの最大割当リソース量に基づいて、GW経由の送信とするか否かを決定してもよい。
図24は、最大割当リソース量テーブルの例を示す図である。
最大割当リソース量テーブル119は、記憶部110に予め格納される。最大割当リソース量テーブル119は、ポッド、CPUおよびメモリの項目を含む。ポッドの項目には、該当のポッドにおけるサービスの識別名が登録される。CPUの項目には、該当のポッドに対するCPUの最大割当量が登録される。メモリの項目には、該当のポッドに対するメモリの最大割当量が登録される。
最大割当リソース量テーブル119は、記憶部110に予め格納される。最大割当リソース量テーブル119は、ポッド、CPUおよびメモリの項目を含む。ポッドの項目には、該当のポッドにおけるサービスの識別名が登録される。CPUの項目には、該当のポッドに対するCPUの最大割当量が登録される。メモリの項目には、該当のポッドに対するメモリの最大割当量が登録される。
例えば、最大割当リソース量テーブル119は、ポッド「App1」、CPU「3」、メモリ「200MB」のレコードを有する。当該レコードは、ポッド600に対する最大割当リソース量がCPU3個、メモリ200MBであることを示す。最大割当リソース量テーブル119には他のポッドに対する最大割当リソース量も登録され得る。
図25は、最大割当リソース量に応じた通信方法の選択例を示す図である。
設定変更処理部140は、GW経由の場合の遅延時間が基準遅延時間より小さい場合でも、異種サイドカーをポッド600に共存させた場合のポッド600の総割当リソース量が、最大割当リソース量以下であれば、ポッド600に異種サイドカーを共存させる。
設定変更処理部140は、GW経由の場合の遅延時間が基準遅延時間より小さい場合でも、異種サイドカーをポッド600に共存させた場合のポッド600の総割当リソース量が、最大割当リソース量以下であれば、ポッド600に異種サイドカーを共存させる。
例えば、ポッド600におけるコンテナ610の消費リソース量はCPU2個であり、メモリ100MBである。また、サイドカー620の消費リソース量はCPU0.35個であり、メモリ40MBである。更に、サイドカー630の消費リソース量はCPU0.48個であり、メモリ23MBである。したがって、ポッド600の総割当リソース量は、これらの合計であり、CPU2.83個、メモリ163MBである。
設定変更処理部140は、最大割当リソース量テーブル119におけるポッド600の最大割当リソース量と、総割当リソース量とを、CPUおよびメモリ毎に比較する。そして、CPUおよびメモリの両方について、総割当リソース量が最大割当リソース量以下の場合、設定変更処理部140は、GW経由ではなく、サイドカー共存による直接送信を選択する。CPUおよびメモリの少なくとも一方について、総割当リソース量が最大割当リソース量より大きい場合、設定変更処理部140は、GW経由の場合の遅延時間と基準遅延時間との比較に応じて、GW経由かサイドカー共存による直接送信かを選択する。
設定変更処理部140は、図25の処理を行う場合、ステップS19の直前に、該当ポッドについて総割当リソース量と最大割当リソース量との比較を行う。そして、総割当リソース量が最大割当リソース量以下の場合、設定変更処理部140は、ステップS21に処理を進める。また、総割当リソース量が最大割当リソース量より大きい場合、設定変更処理部140は、ステップS20に処理を進める。なお、設定変更処理部140は、GW経由の場合の遅延時間が基準遅延時間以上のとき、該当ポッドにサイドカーを共存させることになるが、その場合は、該当ポッドの総割当リソース量が最大割当リソース量を超えることを許容する。
このように、管理サーバ100は、該当ポッドに対して許容されている割当リソース量に余裕がある場合には、GW経由ではなく、サイドカー共存によるリクエスト送信を選択することで、ポッド間の通信の遅延時間の低減を図ってもよい。
以上説明したように、管理サーバ100は、例えば次の処理を実行する。
情報処理システム2は、第1の種類のプロキシコンテナを有する第1コンテナグループと第2の種類の第1プロキシコンテナを有する第2コンテナグループとを含む複数のコンテナグループを実行する。1つのコンテナグループには、サービスのコンテナと他のコンテナグループとの通信に用いられるプロキシコンテナとを含む複数のコンテナが属する。基準遅延時間計算部120は、第1コンテナグループから第1の種類のプロキシコンテナにより宛先のコンテナグループにリクエストを送信する際の基準の遅延時間である第1遅延時間を取得する。遅延時間計算部130は、第1コンテナグループから第2コンテナグループへのリクエストの数に基づいて第2遅延時間を計算する。第2遅延時間は、第1コンテナグループからのリクエストが互いに異なる種類のプロキシコンテナ間の通信を中継する第3コンテナグループを経由して第2コンテナグループに到達する場合の遅延時間である。設定変更処理部140は、第2遅延時間が第1遅延時間より小さい場合に、第1コンテナグループから第2コンテナグループへのリクエストを、第1の種類のプロキシコンテナを介して第3コンテナグループへ送信する設定を行う。設定変更処理部140は、第2遅延時間が第1遅延時間以上の場合に、第2の種類の第2プロキシコンテナを第1コンテナグループに追加する。また、設定変更処理部140は、第1コンテナグループから第2コンテナグループへのリクエストを、第2プロキシコンテナを介して第2コンテナグループへ送信する設定を行う。
情報処理システム2は、第1の種類のプロキシコンテナを有する第1コンテナグループと第2の種類の第1プロキシコンテナを有する第2コンテナグループとを含む複数のコンテナグループを実行する。1つのコンテナグループには、サービスのコンテナと他のコンテナグループとの通信に用いられるプロキシコンテナとを含む複数のコンテナが属する。基準遅延時間計算部120は、第1コンテナグループから第1の種類のプロキシコンテナにより宛先のコンテナグループにリクエストを送信する際の基準の遅延時間である第1遅延時間を取得する。遅延時間計算部130は、第1コンテナグループから第2コンテナグループへのリクエストの数に基づいて第2遅延時間を計算する。第2遅延時間は、第1コンテナグループからのリクエストが互いに異なる種類のプロキシコンテナ間の通信を中継する第3コンテナグループを経由して第2コンテナグループに到達する場合の遅延時間である。設定変更処理部140は、第2遅延時間が第1遅延時間より小さい場合に、第1コンテナグループから第2コンテナグループへのリクエストを、第1の種類のプロキシコンテナを介して第3コンテナグループへ送信する設定を行う。設定変更処理部140は、第2遅延時間が第1遅延時間以上の場合に、第2の種類の第2プロキシコンテナを第1コンテナグループに追加する。また、設定変更処理部140は、第1コンテナグループから第2コンテナグループへのリクエストを、第2プロキシコンテナを介して第2コンテナグループへ送信する設定を行う。
これにより、管理サーバ100は、複数の種類のプロキシコンテナが混在する環境において適切な通信方法を利用できる。また、基準遅延時間計算部120や遅延時間計算部130は、リクエスト数に基づいて遅延時間を計算することで、各プロキシコンテナ内での処理に応じた遅延時間の計測が難しい場合でも、当該遅延時間を適切に得ることができる。
第2遅延時間が第1遅延時間よりも小さい場合、GW経由で通信したとしても、情報処理システム2に対して期待される通信品質は満たされることになる。したがって、この場合、設定変更処理部140は、第1コンテナグループから第2コンテナグループへのリクエストを、ゲートウェイ、すなわち、第3コンテナグループ経由とすることで、消費リソース量の抑制を図れる。
一方、第2遅延時間が第1遅延時間以上の場合、GW経由での通信では、情報処理システム2に対して期待される通信品質は満たされないことになる。したがって、この場合、設定変更処理部140は、第1コンテナグループから第2コンテナグループへのリクエストをゲートウェイ、すなわち、第3コンテナグループを経由せずに、直接送信とすることで、遅延時間の抑制を図れる。
こうして、管理サーバ100は、第1遅延時間と第2遅延時間との比較により異種のプロキシコンテナ宛のリクエストをゲートウェイ経由とするか、または、直接送信とするかを選択することで、遅延時間の抑制と消費リソース量の抑制とを両立することができる。
なお、ポッド600は、第1コンテナグループの一例である。ポッド700は、第2コンテナグループの一例である。ゲートウェイ900は、第3コンテナグループの一例である。サイドカー620,620aは、第1の種類のプロキシコンテナの一例である。サイドカー720は、第2の種類の第1プロキシコンテナの一例である。サイドカー630は、第2の種類の第2プロキシコンテナの一例である。
例えば、設定変更処理部140は、第2遅延時間が第1遅延時間より小さく、かつ、第1コンテナグループに第2プロキシコンテナが存在する場合、第2プロキシコンテナを第1コンテナグループから削除する。
これにより、管理サーバ100は、不要なプロキシコンテナを第1コンテナグループから削除でき、第1コンテナグループによる消費リソース量を低減できる。
また、設定変更処理部140は、第2遅延時間が第1遅延時間より小さい場合に、リクエストを第3コンテナグループへ送信する第1の種類のプロキシコンテナを第1コンテナグループに追加する。そして、設定変更処理部140は、第2遅延時間が第1遅延時間以上であり、かつ、追加された第1の種類のプロキシコンテナが第1コンテナグループに存在する場合、追加された第1の種類のプロキシコンテナを第1コンテナグループから削除する。
また、設定変更処理部140は、第2遅延時間が第1遅延時間より小さい場合に、リクエストを第3コンテナグループへ送信する第1の種類のプロキシコンテナを第1コンテナグループに追加する。そして、設定変更処理部140は、第2遅延時間が第1遅延時間以上であり、かつ、追加された第1の種類のプロキシコンテナが第1コンテナグループに存在する場合、追加された第1の種類のプロキシコンテナを第1コンテナグループから削除する。
これにより、管理サーバ100は、第1コンテナグループから第3コンテナグループ経由のリクエスト送信の遅延時間を低減できる。また、管理サーバ100は、不要なプロキシコンテナを第1コンテナグループから削除でき、第1コンテナグループによる消費リソース量を低減できる。なお、サイドカー620aは、リクエストを第3コンテナグループへ送信する第1の種類のプロキシコンテナとして追加されたプロキシコンテナの一例である。
基準遅延時間計算部120は、第1遅延時間の取得では、第1コンテナグループから単位時間に送信される全てのリクエストの数に基づいて、第1遅延時間を計算する。例えば、基準遅延時間計算部120は、当該全てのリクエストを第1の種類のプロキシコンテナを用いて第3コンテナグループを経由せずに送信する場合に第1の種類のプロキシコンテナで発生する遅延時間を、第1遅延時間として計算してもよい。
これにより、管理サーバ100は、第1の種類のプロキシコンテナを単体で用いてリクエストを直接送信する場合に生じる遅延時間よりも小さくなるように、コンテナグループ間の通信を制御できる。管理サーバ100は、例えば第1の種類のプロキシコンテナで発生する遅延時間を、当該プロキシコンテナの提供元により公開されている、単位時間当たりの所定リクエスト数に応じた遅延時間から求めることができる。
また、第3コンテナグループは、第1の種類のプロキシコンテナと第2の種類のプロキシコンテナとを有する。第3コンテナグループは、第3コンテナグループに属する第1の種類のプロキシコンテナを用いて第1コンテナグループからリクエストを受信する。第3コンテナグループは、第3コンテナグループに属する第2の種類のプロキシコンテナを用いて第2コンテナグループに当該リクエストを転送する。
これにより、管理サーバ100は、各種のプロキシコンテナを用いて、ゲートウェイとして機能する第3コンテナグループを容易に作成し、情報処理システム2に追加することができる。
遅延時間計算部130は、第2遅延時間の計算では、第1コンテナグループから第2コンテナグループへ単位時間に送信されるリクエストの数に基づいて、第2遅延時間を計算する。すなわち、遅延時間計算部130は、第1コンテナグループに属する第1の種類のプロキシコンテナ、第3コンテナグループに属する第1の種類のプロキシコンテナおよび第3コンテナグループに属する第2の種類のプロキシコンテナそれぞれで発生する遅延時間を計算する。遅延時間計算部130は、計算した各遅延時間の和を、第2遅延時間とする。
これにより、管理サーバ100は、ゲートウェイとして機能する第3コンテナグループを経由する場合の遅延時間を適切に計算できる。管理サーバ100は、例えば各プロキシコンテナで発生する遅延時間を、該当のプロキシコンテナの提供元により公開されている、単位時間当たりの所定リクエスト数に応じた遅延時間から求めることができる。
また、設定変更処理部140は、第1コンテナグループに対する最大割当リソース量を示す情報に基づいて、第1コンテナグループに第2の種類の第2プロキシコンテナを追加したときの第1コンテナグループの総割当リソース量と最大割当リソース量とを比較する。設定変更処理部140は、総割当リソース量が最大割当リソース量以下の場合は、第2遅延時間が第1遅延時間より小さい場合でも、第1コンテナグループに第2プロキシコンテナを追加する。そして、設定変更処理部140は、第1コンテナグループから第2コンテナグループへのリクエストを、第2プロキシコンテナを介して第2コンテナグループへ送信する設定を行う。
これにより、管理サーバ100は、第1コンテナグループに割当可能なリソース量に余裕がある場合には、遅延時間の一層の低減を図れる。なお、最大割当リソース量テーブル119は、第1コンテナグループに対する最大割当リソース量を示す情報の一例である。
また、設定変更処理部140は、第2遅延時間が第1遅延時間より小さく、かつ、第3コンテナグループが情報処理システム2にない場合、第3コンテナグループを情報処理システム2に追加する。
これにより、管理サーバ100は、ゲートウェイとして機能する第3コンテナグループを用いた通信経路を情報処理システム2に適切に設けることができる。
ここで、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体63に記録できる。
ここで、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体63に記録できる。
例えば、プログラムを記録した記録媒体63を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体63に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
1 情報処理システム
10 情報処理装置
11 記憶部
12 処理部
20,30,40,50 コンテナグループ
21,31,41 コンテナ
22,32,42,51,52 プロキシコンテナ
10 情報処理装置
11 記憶部
12 処理部
20,30,40,50 コンテナグループ
21,31,41 コンテナ
22,32,42,51,52 プロキシコンテナ
Claims (10)
- 他のコンテナグループとの通信に用いられるプロキシコンテナを含む複数のコンテナが属するコンテナグループであって、第1の種類のプロキシコンテナを有する第1コンテナグループと第2の種類の第1プロキシコンテナを有する第2コンテナグループとを含む複数のコンテナグループを実行する情報処理システムについて、第1コンテナグループから前記第1の種類のプロキシコンテナにより宛先のコンテナグループへリクエストを送信する際の基準の遅延時間である第1遅延時間を取得し、
前記第1コンテナグループからの前記リクエストが、互いに異なる種類のプロキシコンテナ間の通信を中継する第3コンテナグループを経由して前記第2コンテナグループに到達する場合の第2遅延時間を、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストの数に基づいて計算し、
前記第2遅延時間が前記第1遅延時間より小さい場合に、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第1の種類のプロキシコンテナを介して前記第3コンテナグループへ送信する設定を行い、前記第2遅延時間が前記第1遅延時間以上の場合に、前記第2の種類の第2プロキシコンテナを前記第1コンテナグループに追加し、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第2プロキシコンテナを介して前記第2コンテナグループへ送信する設定を行う、
処理をコンピュータに実行させるプログラム。 - 前記第2遅延時間が前記第1遅延時間より小さく、かつ、前記第1コンテナグループに前記第2プロキシコンテナが存在する場合、前記第2プロキシコンテナを前記第1コンテナグループから削除する、
処理を前記コンピュータに更に実行させる請求項1記載のプログラム。 - 前記第2遅延時間が前記第1遅延時間より小さい場合に、前記リクエストを前記第3コンテナグループへ送信する前記第1の種類のプロキシコンテナを前記第1コンテナグループに追加し、
前記第2遅延時間が前記第1遅延時間以上であり、かつ、追加された前記第1の種類のプロキシコンテナが前記第1コンテナグループに存在する場合、追加された前記第1の種類のプロキシコンテナを前記第1コンテナグループから削除する、
処理を前記コンピュータに更に実行させる請求項1記載のプログラム。 - 前記第1遅延時間の取得では、前記第1コンテナグループから単位時間に送信される全てのリクエストの数に基づいて、前記全てのリクエストを前記第1の種類のプロキシコンテナを用いて前記第3コンテナグループを経由せずに送信する場合に前記第1の種類のプロキシコンテナで発生する遅延時間を、前記第1遅延時間として計算する、
処理を前記コンピュータに実行させる請求項1記載のプログラム。 - 前記第3コンテナグループは、
前記第1の種類のプロキシコンテナと前記第2の種類のプロキシコンテナとを有し、
前記第3コンテナグループに属する前記第1の種類のプロキシコンテナを用いて前記第1コンテナグループから前記リクエストを受信し、前記第3コンテナグループに属する前記第2の種類のプロキシコンテナを用いて前記第2コンテナグループに前記リクエストを転送する、
請求項1記載のプログラム。 - 前記第2遅延時間の計算では、前記第1コンテナグループから前記第2コンテナグループへ単位時間に送信される前記リクエストの数に基づいて、前記第1コンテナグループに属する前記第1の種類のプロキシコンテナ、前記第3コンテナグループに属する前記第1の種類のプロキシコンテナおよび前記第3コンテナグループに属する前記第2の種類のプロキシコンテナそれぞれで発生する遅延時間を計算し、計算した各遅延時間の和を、前記第2遅延時間とする、
処理を前記コンピュータに実行させる請求項5記載のプログラム。 - 前記第1コンテナグループに対する最大割当リソース量を示す情報に基づいて、前記第1コンテナグループに前記第2プロキシコンテナを追加したときの前記第1コンテナグループの総割当リソース量と前記最大割当リソース量とを比較し、
前記総割当リソース量が前記最大割当リソース量以下の場合は、前記第2遅延時間が前記第1遅延時間より小さい場合でも、前記第1コンテナグループに前記第2プロキシコンテナを追加し、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第2プロキシコンテナを介して前記第2コンテナグループへ送信する設定を行う、
処理を前記コンピュータに更に実行させる請求項1記載のプログラム。 - 前記第2遅延時間が前記第1遅延時間より小さく、かつ、前記第3コンテナグループが前記情報処理システムにない場合、前記第3コンテナグループを前記情報処理システムに追加する、
処理を前記コンピュータに更に実行させる請求項1記載のプログラム。 - コンピュータが、
他のコンテナグループとの通信に用いられるプロキシコンテナを含む複数のコンテナが属するコンテナグループであって、第1の種類のプロキシコンテナを有する第1コンテナグループと第2の種類の第1プロキシコンテナを有する第2コンテナグループとを含む複数のコンテナグループを実行する情報処理システムについて、第1コンテナグループから前記第1の種類のプロキシコンテナにより宛先のコンテナグループへリクエストを送信する際の基準の遅延時間である第1遅延時間を取得し、
前記第1コンテナグループからの前記リクエストが、互いに異なる種類のプロキシコンテナ間の通信を中継する第3コンテナグループを経由して前記第2コンテナグループに到達する場合の第2遅延時間を、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストの数に基づいて計算し、
前記第2遅延時間が前記第1遅延時間より小さい場合に、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第1の種類のプロキシコンテナを介して前記第3コンテナグループへ送信する設定を行い、前記第2遅延時間が前記第1遅延時間以上の場合に、前記第2の種類の第2プロキシコンテナを前記第1コンテナグループに追加し、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第2プロキシコンテナを介して前記第2コンテナグループへ送信する設定を行う、
情報処理方法。 - 他のコンテナグループとの通信に用いられるプロキシコンテナを含む複数のコンテナが属するコンテナグループであって、第1の種類のプロキシコンテナを有する第1コンテナグループと第2の種類の第1プロキシコンテナを有する第2コンテナグループとを含む複数のコンテナグループを実行する情報処理システムについて、第1コンテナグループから前記第1の種類のプロキシコンテナにより宛先のコンテナグループへリクエストを送信する際の基準の遅延時間である第1遅延時間を記憶する記憶部と、
前記第1コンテナグループからの前記リクエストが、互いに異なる種類のプロキシコンテナ間の通信を中継する第3コンテナグループを経由して前記第2コンテナグループに到達する場合の第2遅延時間を、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストの数に基づいて計算し、
前記第2遅延時間が前記第1遅延時間より小さい場合に、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第1の種類のプロキシコンテナを介して前記第3コンテナグループへ送信する設定を行い、前記第2遅延時間が前記第1遅延時間以上の場合に、前記第2の種類の第2プロキシコンテナを前記第1コンテナグループに追加し、前記第1コンテナグループから前記第2コンテナグループへの前記リクエストを、前記第2プロキシコンテナを介して前記第2コンテナグループへ送信する設定を行う、処理部と、
を有する情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021175835A JP2023065176A (ja) | 2021-10-27 | 2021-10-27 | プログラム、情報処理方法および情報処理装置 |
US17/861,610 US20230125847A1 (en) | 2021-10-27 | 2022-07-11 | Computer-readable recording medium storing program, information processing method, and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021175835A JP2023065176A (ja) | 2021-10-27 | 2021-10-27 | プログラム、情報処理方法および情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023065176A true JP2023065176A (ja) | 2023-05-12 |
Family
ID=86056136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021175835A Pending JP2023065176A (ja) | 2021-10-27 | 2021-10-27 | プログラム、情報処理方法および情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230125847A1 (ja) |
JP (1) | JP2023065176A (ja) |
-
2021
- 2021-10-27 JP JP2021175835A patent/JP2023065176A/ja active Pending
-
2022
- 2022-07-11 US US17/861,610 patent/US20230125847A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230125847A1 (en) | 2023-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4049435B1 (en) | Dynamic resource movement in heterogeneous computing environments including cloud edge locations | |
US11337227B2 (en) | Distributed network connectivity monitoring of provider network edge location resources from cellular networks | |
US10887276B1 (en) | DNS-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks | |
WO2020135800A1 (zh) | 一种域名服务器的分配方法和装置 | |
US11418995B2 (en) | Mobility of cloud compute instances hosted within communications service provider networks | |
US11095534B1 (en) | API-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks | |
EP4049139B1 (en) | Latency-based placement of cloud compute instances within communications service provider networks | |
US10397132B2 (en) | System and method for granting virtualized network function life cycle management | |
JP5671297B2 (ja) | Imsネットワークを介してマルチメディア・サービスを最適化するための方法及びシステム | |
US9172657B2 (en) | Technique for resource creation in a cloud computing system | |
JP5132770B2 (ja) | 最善のdhcpサーバを見出すためのルータの動的な構成 | |
CN108737271B (zh) | 一种报文路由方法、装置及系统 | |
RU2653292C2 (ru) | Перенос служб через границы кластеров | |
JP2017520823A (ja) | エンタープライズ・ベース・ネットワーク及びマルチテナント・ネットワーク間でのアプリケーションの移行 | |
US11463377B2 (en) | Using edge-optimized compute instances to execute user workloads at provider substrate extensions | |
US11425054B1 (en) | User-configured multi-location service deployment and scaling | |
US11219034B1 (en) | Distributed network connectivity monitoring of provider network edge location resources from cellular networks | |
WO2016155023A1 (zh) | 一种网络管理系统、设备及方法 | |
US11743325B1 (en) | Centralized load balancing of resources in cloud edge locations embedded in telecommunications networks | |
US11765244B1 (en) | Latency-based service discovery and routing for multi-location service-oriented applications | |
WO2019001140A1 (zh) | 一种管理vnf实例化的方法和设备 | |
JP2023065176A (ja) | プログラム、情報処理方法および情報処理装置 | |
US11363113B1 (en) | Dynamic micro-region formation for service provider network independent edge locations | |
KR20220076826A (ko) | Ndn 기반의 인-네트워크 처리 방법 및 시스템 | |
WO2022052898A1 (zh) | 一种计算机系统、容器管理方法及装置 |