(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-11
(45)【発行日】2024-10-22
(54)【発明の名称】負荷分散装置、負荷分散システム、および、負荷分散方法
(51)【国際特許分類】
G06F 9/50 20060101AFI20241015BHJP
【FI】
G06F9/50 150D
(21)【出願番号】P 2022099262
(22)【出願日】2022-06-20
【審査請求日】2023-01-06
(73)【特許権者】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】宮崎 星冬
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特表2017-534107(JP,A)
【文献】国際公開第2022/103689(WO,A1)
【文献】特表2018-512087(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
(57)【特許請求の範囲】
【請求項1】
コンテナ基盤のノードにコンテナをデプロイするスケジュール機構と、
前記コンテナ基盤からCPUとメモリのリソースの情報を取得するスケール機構と、
を備え、
前記スケール機構は、
前記コンテナ基盤にデプロイするコンテナに関するCPU要求値とメモリ要求値を含む情報を取得し、
前記のCPUとメモリのリソースの情報と、取得したCPU要求値およびメモリ要求値と、に基づいて前記コンテナ基盤のリソースを判定し、前記リソースが過剰であると判定した場合に前記コンテナ基盤のノードを削除し、前記リソースが不足していると判定した場合に前記コンテナ基盤のノードを追加し、
前記スケジュール機構は、
コンテナのデプロイ要求に基づいて、前記コンテナ基盤に前記コンテナをデプロイ可能であるかどうかについて判定し、
前記コンテナをデプロイ可能であると判定した場合、前記コンテナを前記コンテナ基盤にデプロイし、
前記コンテナをデプロイ可能でないと判定した場合、コンテナの外部リソースへのデプロイの可否を判定し、前記コンテナを前記外部リソースにデプロイ可能であると判定した場合、前記コンテナを前記外部リソースにデプロイする、
ことを特徴とする負荷分散装置。
【請求項2】
請求項1に記載の負荷分散装置であって、
前記スケール機構は、
開発環境においてCI/CDパイプラインからデプロイ予定のコンテナに関する情報を取得する、
ことを特徴とする負荷分散装置。
【請求項3】
請求項2に記載の負荷分散装置であって、
前記情報は、コンテナの識別情報、コンテナの用途、処理の優先度、および、アフィニティルールをさらに含む、
ことを特徴とする負荷分散装置。
【請求項4】
請求項1に記載の負荷分散装置であって、
前記スケール機構は、
本番環境におけるリソースの需給予測、および、前記コンテナ基盤のCPUとメモリのリソースの情報に基づいて、前記コンテナ基盤のスケール判断を行い、前記需給予測に応じたリソースを準備する、
ことを特徴とする負荷分散装置。
【請求項5】
コンテナを格納するノードを複数有するコンテナ基盤と、
前記コンテナ基盤に接続され、前記コンテナ基盤のノードにコンテナをデプロイする負荷分散装置と、
を備え、
前記負荷分散装置は、
プロセッサと、記憶部と、を備え、
前記プロセッサは、
前記コンテナ基盤からCPUとメモリのリソースの情報を取得し、取得した前記のリソースの情報を前記記憶部に格納し、
前記コンテナ基盤にデプロイするコンテナに関するCPU要求値とメモリ要求値を含む情報を取得し、取得した前記情報を前記記憶部に格納し、
前記記憶部に格納された前記のCPUとメモリのリソースの情報と、取得したCPU要求値およびメモリ要求値と、に基づいて前記コンテナ基盤のリソースを判定し、前記リソースが過剰であると判定した場合に前記コンテナ基盤のノードを削除し、前記リソースが不足していると判定した場合に前記コンテナ基盤のノードを追加し、
コンテナのデプロイ要求に基づいて、前記コンテナ基盤に前記コンテナをデプロイ可能であるかどうかについて判定し、
前記コンテナをデプロイ可能であると判定した場合、前記コンテナを前記コンテナ基盤にデプロイし、
前記コンテナをデプロイ可能でないと判定した場合、コンテナの外部リソースへのデプロイの可否を判定し、前記コンテナを前記外部リソースにデプロイ可能であると判定した場合、前記コンテナを前記外部リソースにデプロイする、
ことを特徴とする負荷分散システム。
【請求項6】
プロセッサと、記憶部と、を備え、コンテナ基盤のノードにデータをデプロイする負荷分散装置を用いて行う負荷分散方法であって、
前記プロセッサは、
前記コンテナ基盤からCPUとメモリのリソースの情報を取得し、取得した前記のリソースの情報を前記記憶部に格納し、
前記コンテナ基盤にデプロイするコンテナに関するCPU要求値とメモリ要求値を含む情報を取得し、取得した前記情報を前記記憶部に格納し、
前記記憶部に格納された前記のCPUとメモリのリソースの情報と、取得したCPU要求値およびメモリ要求値と、に基づいて前記コンテナ基盤のリソースを判定し、前記リソースが過剰であると判定した場合に前記コンテナ基盤のノードを削除し、前記リソースが不足していると判定した場合に前記コンテナ基盤のノードを追加し、
コンテナのデプロイ要求に基づいて、前記コンテナ基盤に前記コンテナをデプロイ可能であるかどうかについて判定し、
前記コンテナをデプロイ可能であると判定した場合、前記コンテナを前記コンテナ基盤にデプロイし、
前記コンテナをデプロイ可能でないと判定した場合、コンテナの外部リソースへのデプロイの可否を判定し、前記コンテナを前記外部リソースにデプロイ可能であると判定した場合、前記コンテナを前記外部リソースにデプロイする、
ことを特徴とする負荷分散方法。
【請求項7】
請求項6に記載の負荷分散方法をプロセッサに実行させるプログラム。
【請求項8】
コンテナ基盤のノードにコンテナをデプロイするスケジュール機構と、
前記コンテナ基盤からCPUとメモリのリソースの情報を取得するスケール機構と、
を備え、
前記スケール機構は、
前記コンテナ基盤にデプロイするコンテナに関するCPU要求値とメモリ要求値を含む情報を取得し、
前記のCPUとメモリのリソースの情報と、取得したCPU要求値およびメモリ要求値と、に基づいて、前記コンテナ基盤のリソースを判定し、前記リソースが過剰であると判定した場合に前記コンテナ基盤のノードを削除し、前記リソースが不足していると判定した場合に前記コンテナ基盤のノードを追加し、
前記コンテナ基盤のリソースの判定では、
CP
Uについて、
ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、さらに、グループ内の各ノードについての該差の合計を計算した値(
Ac)と、
前記値(
Ac)の今回値から前回値を引くことにより計算した値(Δ
Ac)と、
デプロイするコンテナの要求値(
Bc)と
、
残す空きリソースの閾値(Hc)と、
許容する空きリソースの閾値(Pc)と、
メモリについて、
ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、さらに、グループ内の各ノードについての該差の合計を計算した値(Am)と、
前記値(Am)の今回値から前回値を引くことにより計算した値(ΔAm)と、
デプロイするコンテナの要求値(Bm)と、
残す空きリソースの閾値(Hm)と、
許容する空きリソースの閾値(Pm)と、
を用いた判定を行い、
(Ac)-(Bc)<(Hc)、(Ac)+(ΔAc)-(Bc)<(Hc)、(Am)-(Bm)<(Hm)、又は、(Am)+(ΔAm)-(Bm)<(Hm)の場合に、前記コンテナ基盤のリソースが不足していることを判定し、
(Ac)-(Bc)>(Pc)、且つ、(Ac)+(ΔAc)-(Bc)>(Pc)、又は、(Am)-(Bm)>(Pm)、且つ、(Am)+(ΔAm)-(Bm)>(Pm)の場合に、前記コンテナ基盤のリソースが過剰であることを判定する、
ことを特徴とする負荷分散装置。
【請求項9】
請求項8に記載の負荷分散装置であって、
前記スケール機構は、
開発環境においてCI/CDパイプラインからデプロイ予定のコンテナに関する情報を取得する、
ことを特徴とする負荷分散装置。
【請求項10】
請求項9に記載の負荷分散装置であって、
前記情報は、コンテナの識別情報、コンテナの用途、処理の優先度、および、アフィニティルールをさらに含む、
ことを特徴とする負荷分散装置。
【請求項11】
請求項8に記載の負荷分散装置であって、
前記スケール機構は、
本番環境におけるリソースの需給予測、および、前記コンテナ基盤のCPUとメモリのリソースの情報に基づいて、前記コンテナ基盤のスケール判断を行い、前記需給予測に応じたリソースを準備する、
ことを特徴とする負荷分散装置。
【請求項12】
請求項8に記載の負荷分散装置であって、
前記スケジュール機構は、
コンテナのデプロイ要求に基づいて、前記コンテナ基盤に前記コンテナをデプロイ可能であるかどうかについて判定し、
前記コンテナをデプロイ可能であると判定した場合、前記コンテナを前記コンテナ基盤にデプロイし、
前記コンテナをデプロイ可能でないと判定した場合、コンテナの外部リソースへのデプロイの可否を判定し、前記コンテナを前記外部リソースにデプロイ可能であると判定した場合、前記コンテナを前記外部リソースにデプロイする、
ことを特徴とする負荷分散装置。
【請求項13】
コンテナを格納するノードを複数有するコンテナ基盤と、
前記コンテナ基盤に接続され、前記コンテナ基盤のノードにコンテナをデプロイする負荷分散装置と、
を備え、
前記負荷分散装置は、
プロセッサと、記憶部と、を備え、
前記プロセッサは、
前記コンテナ基盤からCPUとメモリのリソースの情報を取得し、取得した前記のリソースの情報を前記記憶部に格納し、
前記コンテナ基盤にデプロイするコンテナに関するCPU要求値とメモリ要求値を含む情報を取得し、取得した前記情報を前記記憶部に格納し、
前記記憶部に格納された前記のCPUとメモリのリソースの情報と、取得したCPU要求値およびメモリ要求値と、に基づいて前記コンテナ基盤のリソースを判定し、前記リソースが過剰であると判定した場合に前記コンテナ基盤のノードを削除し、前記リソースが不足していると判定した場合に前記コンテナ基盤のノードを追加し、
前記コンテナ基盤のリソースの判定では、
CP
Uについて、
ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、さらに、グループ内の各ノードについての該差の合計を計算した値(
Ac)と、
前記値(
Ac)の今回値から前回値を引くことにより計算した値(Δ
Ac)と、
デプロイするコンテナの要求値(
Bc)と
、
残す空きリソースの閾値(Hc)と、
許容する空きリソースの閾値(Pc)と、
メモリについて、
ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、さらに、グループ内の各ノードについての該差の合計を計算した値(Am)と、
前記値(Am)の今回値から前回値を引くことにより計算した値(ΔAm)と、
デプロイするコンテナの要求値(Bm)と、
残す空きリソースの閾値(Hm)と、
許容する空きリソースの閾値(Pm)と、
を用いた判定を行い、
(Ac)-(Bc)<(Hc)、(Ac)+(ΔAc)-(Bc)<(Hc)、(Am)-(Bm)<(Hm)、又は、(Am)+(ΔAm)-(Bm)<(Hm)の場合に、前記コンテナ基盤のリソースが不足していることを判定し、
(Ac)-(Bc)>(Pc)、且つ、(Ac)+(ΔAc)-(Bc)>(Pc)、又は、(Am)-(Bm)>(Pm)、且つ、(Am)+(ΔAm)-(Bm)>(Pm)の場合に、前記コンテナ基盤のリソースが過剰であることを判定する、
ことを特徴とする負荷分散システム。
【請求項14】
プロセッサと、記憶部と、を備え、コンテナ基盤のノードにデータをデプロイする負荷分散装置を用いて行う負荷分散方法であって、
前記プロセッサは、
前記コンテナ基盤からCPUとメモリのリソースの情報を取得し、取得した前記のリソースの情報を前記記憶部に格納し、
前記コンテナ基盤にデプロイするコンテナに関するCPU要求値とメモリ要求値を含む情報を取得し、取得した前記情報を前記記憶部に格納し、
前記記憶部に格納された前記のCPUとメモリのリソースの情報と、取得したCPU要求値およびメモリ要求値と、に基づいて前記コンテナ基盤のリソースを判定し、前記リソースが過剰であると判定した場合に前記コンテナ基盤のノードを削除し、前記リソースが不足していると判定した場合に前記コンテナ基盤のノードを追加し、
前記コンテナ基盤のリソースの判定では、
CP
Uについて、
ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、さらに、グループ内の各ノードについての該差の合計を計算した値(
Ac)と、
前記値(
Ac)の今回値から前回値を引くことにより計算した値(Δ
Ac)と、
デプロイするコンテナの要求値(
Bc)と、
残す空きリソースの閾値(Hc)と、
許容する空きリソースの閾値(Pc)と、
メモリについて、
ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、さらに、グループ内の各ノードについての該差の合計を計算した値(Am)と、
前記値(Am)の今回値から前回値を引くことにより計算した値(ΔAm)と、
デプロイするコンテナの要求値(Bm)と、
残す空きリソースの閾値(Hm)と、
許容する空きリソースの閾値(Pm)と、
を用いた判定を行い、
(Ac)-(Bc)<(Hc)、(Ac)+(ΔAc)-(Bc)<(Hc)、(Am)-(Bm)<(Hm)、又は、(Am)+(ΔAm)-(Bm)<(Hm)の場合に、前記コンテナ基盤のリソースが不足していることを判定し、
(Ac)-(Bc)>(Pc)、且つ、(Ac)+(ΔAc)-(Bc)>(Pc)、又は、(Am)-(Bm)>(Pm)、且つ、(Am)+(ΔAm)-(Bm)>(Pm)の場合に、前記コンテナ基盤のリソースが過剰であることを判定する、
ことを特徴とする負荷分散方法。
【請求項15】
請求項14に記載の負荷分散方法をプロセッサに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、負荷分散装置、負荷分散システム、および、負荷分散方法に関する。
【背景技術】
【0002】
複数のコンテナがデプロイされ、限られたハードウェアリソースを共有する環境がある。そして、当該環境では、ハードウェアリソースを効率良く利用することで、コストの抑制とサービスの負荷に合わせた対応とを両立したいというニーズが存在する。
【0003】
ここで、特許文献1は、クラスターリソースを効率的に割り当てる技術を開示する。すなわち、特許文献1は、クラスターリソース割り当て要請が入力されれば、クラウドプラットフォームシステムがサービスグループ情報を生成する段階と、前記サービスグループの使用者を追加/削除する段階と、前記サービスグループの使用者に割り当てるクラスターが選択されて割り当て情報が入力される段階と、クラスター資源可用量を問い合わせする段階と、前記資源可用量問い合わせ結果資源が使用可能ならば、前記サービスグループに資源割り当て情報を登録して資源を割り当ててクラスターリソース割り当てを完了する段階と、前記資源可用量問い合わせ結果資源が不足ならば、クラスター資源が加えられるかを確認する段階と、前記クラスター資源が追加できれば、前記クラスター資源を追加登録する段階と、前記サービスグループに資源割り当て情報を登録して資源を割り当ててクラスターリソース割り当てを完了する段階と、及び前記クラスター資源が追加できなければ、可用クラスターを再選択する段階と、を含むクラウドプラットフォームでのクラスターリソース割り当て及び管理方法を開示する。
【0004】
また、特許文献2は、監視状況が異なるリソースの監視情報からITサービスに必要なリソースキャパシティを精度よく予測する技術を開示する。すなわち、特許文献2は、ログ信頼度算出手段と、リソース使用率推移推定手段と、を備えるリソースキャパシティ予測装置を開示する。ログ信頼度算出手段は、コンピュータから、リソースの監視状況に関する第一のログを取得し、第一のログに含まれるコンピュータの複数の時刻における監視状況の情報に基づいて、複数の時刻におけるログの信頼度を算出する。リソース使用率推移推定手段は、コンピュータから、リソースの使用に関する第二のログおよびコンピュータのサービスレベル項目の測定に関する第三のログを取得し、第二のログに含まれるコンピュータの複数の時刻におけるリソースの使用率の情報と、第三のログに含まれるコンピュータの複数の時刻におけるサービスレベル項目の測定値の情報と、複数の時刻におけるログの信頼度とに基づいて、コンピュータのリソースの使用率を推定する。
【先行技術文献】
【特許文献】
【0005】
【文献】特表2021-530801号公報
【文献】特開2013-175085号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1および2の技術を用いることで、コンテナをデプロイするコンテナ基盤のリソースを管理することができることが考えられる。
【0007】
しかしながら、コンテナのスケールは迅速に可能であるが、コンテナ基盤においてそのリソース基盤となるノードの処理に時間がかかることで、例えば、コンテナ基盤の稼働率が高い状態でノードを追加する場合に、コンテナをデプロイする処理に遅延が発生することや、利用者へのサービス提供に悪影響が発生する可能性がある。その一方で、こうした事情を踏まえてリソースに余裕を持たせる場合、稼働していないリソース対してコストの無駄が発生する。
【0008】
そこで、本発明は、デプロイの処理遅延の発生やサービス提供の悪影響を抑制しつつ、未利用リソースに伴うコスト削減を行うことで、利用者の利便性の確保を図りつつ、経済的な観点で貢献することができる負荷分散装置、負荷分散システム、負荷分散方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の第1の態様によれば、下記の負荷分散装置が提供される。この負荷分散装置は、スケジュール機構と、スケール機構と、を備える。スケジュール機構は、コンテナ基盤のノードにコンテナをデプロイする。スケール機構は、コンテナ基盤からリソースの情報を取得する。また、スケール機構は、コンテナ基盤にデプロイするコンテナに関する外部情報を取得する。スケール機構は、前記のリソースの情報と前記外部情報に基づいてコンテナ基盤のリソースを判定し、リソースが過剰であると判定した場合にコンテナ基盤のノードを削除し、リソースが不足していると判定した場合にコンテナ基盤のノードを追加する。
【0010】
本発明の第2の態様によれば、下記の負荷分散システムが提供される。この負荷分散システムは、コンテナを格納するノードを複数有するコンテナ基盤と、コンテナ基盤に接続され、コンテナ基盤のノードにコンテナをデプロイする負荷分散装置と、を備える。この負荷分散装置は、プロセッサと、記憶部と、を備える。プロセッサは、コンテナ基盤からリソースの情報を取得し、取得した前記のリソースの情報を記憶部に格納し、コンテナ基盤にデプロイするコンテナに関する外部情報を取得し、取得した前記外部情報を記憶部に格納する。プロセッサは、記憶部に格納されたリソースの情報と外部情報に基づいてコンテナ基盤のリソースを判定し、リソースが過剰であると判定した場合にコンテナ基盤のノードを削除し、リソースが不足していると判定した場合にコンテナ基盤のノードを追加する。
【0011】
本発明の第3の態様によれば、下記の負荷分散方法が提供される。この負荷分散方法は、プロセッサと、記憶部と、を備え、コンテナ基盤のノードにデータをデプロイする負荷分散装置を用いて行う方法である。プロセッサは、コンテナ基盤からリソースの情報を取得し、取得した前記のリソースの情報を記憶部に格納し、コンテナ基盤にデプロイするコンテナに関する外部情報を取得し、取得した前記外部情報を記憶部に格納し、記憶部に格納された前記のリソースの情報と前記外部情報に基づいてコンテナ基盤のリソースを判定し、リソースが過剰であると判定した場合にコンテナ基盤のノードを削除し、リソースが不足していると判定した場合にコンテナ基盤のノードを追加する。
【発明の効果】
【0012】
本発明によれば、デプロイの処理遅延の発生やサービス提供の悪影響を抑制しつつ、未利用リソースに伴うコスト削減を行うことで、利用者の利便性の確保を図りつつ、経済的な観点で貢献することができる負荷分散装置、負荷分散システム、負荷分散方法が提供される。なお、上記した以外の課題、構成および効果は、以下の発明を実施するための形態の説明により明らかにされる。
【図面の簡単な説明】
【0013】
【
図1】負荷分散装置の処理の一例の概要を示す図である。
【
図2】負荷分散装置を開発環境のCI/CDパイプラインと組み合わせて適用する例の概要を示す図である。
【
図3】負荷分散装置を開発環境のCI/CDパイプラインと組み合わせて適用する例の概要を示す図である。
【
図5】スケジュール機構の処理の一例を示すフローチャートである。
【
図6】スケール機構の処理の一例を示すフローチャートである。
【
図7】CI/CDパイプラインから取得する情報の一例を示す図である。
【
図8A】スケール判定の一例を示すフローチャートである。
【
図8B】
図8Aの続きであり、スケール判定の一例を示すフローチャートである。
【
図9】ノードグループに関して取得する情報の一例を示す図である。
【
図10】ノードグループに関して取得する情報であって、前回値と今回値の一例を示す図である。
【
図11】ノードの追加時における処理の一例を示すフローチャートである。
【
図12】ノードの削除時における処理の一例を示すフローチャートである。
【
図13】(A)と(ΔA)の計算結果の一例を示す図である。
【
図15】余剰リソースコストの計算結果の一例を示す図である。
【
図16】システム全体のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施形態を説明する。実施形態は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施することが可能である。
各種情報の例として、「テーブル」、「リスト」、「キュー」等の表現にて説明することがあるが、各種情報はこれら以外のデータ構造で表現されてもよい。例えば、「XXテーブル」、「XXリスト」、「XXキュー」等の各種情報は、「XX情報」としてもよい。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
【0015】
まず、
図1-
図3を参照しながら、本実施形態の負荷分散装置の処理例の概要について説明する。負荷分散装置11は、コンテナ基盤21のリソースを管理することができる。すなわち、
図1に示すように、例えば、コンテナ基盤21のリソースが不足しており、コンテナ基盤21にコンテナをデプロイできない場合、負荷分散装置11はコンテナ基盤21のノードを追加する制御を行う。ここで、負荷分散装置11は、コンテナ基盤21からの情報に加えて外部情報を取得し、その情報に基づいて、ノードを追加する制御を行う。なお、外部情報は、コンテナ基盤21にデプロイするコンテナに関する情報であり、環境の用途に応じた情報(例えば、開発環境であればCIジョブの状況に関する情報)である。そして、コンテナ基盤21にノードが新たに追加された場合、負荷分散装置11は、コンテナ基盤21(この例では、追加されたノード)にコンテナをデプロイする。なお、状況に応じて外部リソース31を利用する場合がある。また、
図1等では、「高」、「中」、「小」により、処理の優先度を表現している。
【0016】
次に、
図2-
図3を参照しながら、負荷分散装置11を開発環境のCI/CDパイプラインと組み合わせて適用する例について説明する。
図2に示すように、開発者がコードをプッシュし、CI/CDパイプラインがスタートした場合、コンテナイメージがCI/CDパイプラインにて生成(ビルド)される。ここで、負荷分散装置11は、パイプラインの開始を検知し、コンテナに関する外部情報を取得する。そして、デプロイするコンテナの生成時に(すなわち、ビルドステージにおけるビルドの継続中に)、負荷分散装置11は、コンテナ基盤21からの情報と外部情報に応じて、コンテナ基盤21におけるノードを追加する制御を行う。その後、負荷分散装置11は、ビルドされたコンテナイメージをコンテナ基盤21にデプロイし、コードを検証するテスト(テストステージ)が開始される。
【0017】
次に、
図4を参照しながら、負荷分散装置の構成例について説明する。
図4は、負荷分散装置の構成の一例を示す図である。
図4に示すように、負荷分散装置11は、スケール機構17と、スケジュール機構18と、をプログラムモジュールとして備え、負荷分散装置11では、スケール機構17とスケジュール機構18が連携して処理を行う。スケール機構17は、コンテナ基盤21のリソース使用状況と外部情報に基づいて、スケールを行う。すなわち、スケール機構17は、コンテナ基盤21のリソースに応じたスケールアウト/イン判断を行う。スケジュール機構18は、デプロイ指示があった各コンテナについて、記載された要求を基にして、コンテナ基盤21もしくは外部リソース31へのデプロイ判断を行う。
【0018】
次に、
図5を参照しながら、スケジュール機構の処理の一例について説明する。
図5は、スケジュール機構の処理の一例を示すフローチャートである。なお、
図5の例において、外部との情報の入出力が破線で示されている。この例では、開発環境における一連の処理の流れで説明する。すなわち、上記したように、開発者がコードをプッシュし、CI/CDパイプラインがスタートし、コンテナイメージのビルドが開始する。そして、ビルドが完了した後に、負荷分散装置に、デプロイ要求(デプロイ指示)が入力される。そして、デプロイ完了後にテストが実行され、CI/CDパイプラインが終了する。
【0019】
スケジュール機構18は、コンテナデプロイの要求を受け付ける(S501)。また、スケジュール機構18は、未スケジュールのコンテナがあるか(すなわち、まだ処理していないコンテナがあるか)を判定する(S502)。ここで、未スケジュールのコンテナがある場合、スケジュール機構18は、デプロイするコンテナのリソースがコンテナ基盤21にあり、このコンテナをデプロイ可能であるかについて判定する(S503)。そして、デプロイ可能である場合、スケジュール機構は、このコンテナをデプロイする(S504)。
【0020】
その一方で、デプロイ可能でないと判定した場合、スケジュール機構18は、スケール機構17にその旨を通知し(S505)、コンテナ基盤21において退避可能なコンテナがあるかどうかについて判定する(S506)。退避可能なコンテナがあると判定した場合、スケジュール機構18は、このコンテナを退避させ(S507)、未スケジュールのコンテナをデプロイする(S504)。退避可能なコンテナがないと判定した場合、スケジュール機構18は、未スケジュールのコンテナの情報に基づいて、外部リソース31が利用可能であるかどうかを判定する(S508)。スケジュール機構18は、外部リソース31が利用可能であると判定した場合に未スケジュールのコンテナを外部リソース31にデプロイする(S509)。その一方で、外部リソースが利用可能でないと判定した場合に、スケジュール機構18は未スケジュールのコンテナをキューに戻す(S510)。
【0021】
なお、デプロイ要求には、コンテナが必要とするリソース(CPU,メモリ,永続ストレージ)等の記載がある。この要求によっては、特定のノードにしかデプロイできないコンテナも発生しうる(例えば、永続ストレージとして作成済みのAWS EBSを利用している場合、EBSが所在するAZ以外にデプロイできない)が、スケジュール機構18は、このような情報も踏まえて判断を行う。
【0022】
また、スケジュール機構18は、外部リソース31が利用可能であるかについて適宜に判断する。例えば、デプロイ予定のコンテナ(すなわち、未スケジュールのコンテナ)が他のコンテナと通信しない場合(例えば、単体テストの場合)、必ずしもクラスターにデプロイされる必要はないため、スケジュール機構18は、外部リソース31を利用可能と判断する。その一方で、デプロイ予定のコンテナが他のコンテナと依存関係を持つ場合、異なる場所にデプロイすると動作しないため、スケジュール機構18は、外部リソース31を利用不可と判断する。
【0023】
次に、
図6を参照しながら、スケール機構の処理の一例について説明する。
図6は、スケール機構の処理の一例を示すフローチャートである。なお、
図6の例において、外部との情報の入出力が破線で示されている。この例でもスケジュール機構の場合と同様に、開発環境における一連の処理の流れで説明する。
【0024】
スケール機構17は、コンテナ基盤21の状態を監視する(S601)。また、スケール機構17は、CI/CDパイプラインの情報を取得する(S602)。そして、スケール機構17は、コンテナ基盤21のリソースが必要十分であるかどうかについて判定する(S603)。ここで、コンテナ基盤21のリソースが過剰であると判定した場合、スケール機構17は、コンテナ基盤21におけるノードの削除を指示する(S604)。その一方で、コンテナ基盤21のリソースが不足であると判定した場合、スケール機構17は、コンテナ基盤21におけるノードの追加を指示する(S605)。スケール機構17は、コンテナ基盤21のリソースが必要十分であると判定した場合、スケール(すなわち、ノードの追加あるいは削除)を行わない。そして、スケール機構17は、一定時間待機し(S606)、処理を繰り返す。
【0025】
スケール機構17は、スケジュール機構18からのコンテナデプロイ不可の通知やCI/CDパイプラインの開始の通知に基づいて、上記のスケール判定を行う。なお、スケール判定の詳細については後述する。
【0026】
次に、
図7を参照しながら、スケール機構17が外部情報として取得するCI/CDパイプラインの情報の一例について説明する。
図7は、CI/CDパイプラインから取得する情報の一例を示す図である。CI/CDパイプラインからは、デプロイ予定のコンテナの要求リソース、種類、用途(バッチ処理orサーバー)、優先度、および依存関係を取得する。なお、これらの情報は、デプロイ要求に記載されていることがほとんどであり、アプリケーションのソースコードと同様にレポジトリで管理されていることを想定している。
【0027】
図7に示すように、CI/CDパイプラインの情報は、一例として、コンテナ名(コンテナの識別情報)と、用途(コンテナの用途)と、レプリカ数と、CPUリクエスト値(コンテナの要求リソース)と、メモリリクエスト値(コンテナの要求リソース)と、優先度(処理の優先度)と、アフィニティルールと、を含む。そして、この例では、この情報は、コンテナごとにまとめられている。レプリカ数は、クラスターに保管したいデータのコピーの数を示す。CPUリクエスト値は、CPU(この例では、CPUのコア)のリクエスト値であり、メモリリクエスト値は、メモリのリクエスト値である。優先度は、コンテナを処理する優先度を示す。この例では、負荷分散装置11は、優先度がプラスに大きいコンテナを優先的に処理する。従って、負荷分散装置11は、コンテナCを優先的に処理し、次いでコンテナAを処理し、その次にコンテナBの処理を行う。アフィニティルールは、制約条件を示す。この例では、AZ(可用性ゾーン)に関する記載があり、コンテナCの「AZ-1に限る」により、コンテナCはAZ-1のノードにデプロイされる条件を定めている。このように、アフィニティルールを設定することで、依存関係の条件を有するコンテナの処理が可能となる。
【0028】
次に、
図8Aと
図8Bを参照しながら、スケール判定の一例について説明する。
図8Aと
図8Bは、スケール判定の一例を示すフローチャートである。なお、ここでは、
図7で示すデータが取得された場合のスケール判定について説明する。従って、優先度が高いコンテナCに基づくスケール判定の一例を説明する。
【0029】
先ず、スケール機構17は、事前設定した閾値を取得する(S801)。すなわち、スケール機構17は、閾値Hおよび閾値Pを取得する。ここで、閾値Hは、最低限残す空きリソースを定める。閾値Pは、許容する空きリソースを定め、1以上のノード分のリソースが存在するように設定される。なお、本明細書において、閾値Hを(H)、閾値Pを(P)で示すことがある。
【0030】
次に、スケール機構17は、コンテナ基盤21からノードグループの一覧を取得し、デプロイ要求を満たせないノードグループを除外する(S802)。スケール機構17は、例えば、アフィニティルールに基づいて、デプロイ要求を満たせないノードグループを除外する。コンテナCに基づくスケール判定では、「AZ-1に限る」という条件が存在するので、スケール機構17は、AZ-1と異なるノードグループを除外する。
【0031】
ここで、
図9を参照しながら、コンテナ基盤から取得する情報の一例について説明する。
図9は、ノードグループに関して取得する情報の一例である。
【0032】
図9の例では、それぞれのノードグループ別(♯1~6)に情報が格納される。この情報には、ノードグループの可用性ゾーンと、ノードグループにおける1ノードのCPU量と、ノードグループにおける1ノードのメモリ量と、現在のノード数と、最小ノード数と、最大ノード数と、ノードコストと、が含まれる。
【0033】
従って、スケール機構17が
図9で示す情報を用いてコンテナCに基づくスケール判定を行う場合では、スケール機構17は、アフィニティルールにより「AZ-2」と「AZ-3」に関するノードグループ(♯2、3、5、6)を除外し、処理を進める。
【0034】
次に、スケール機構17は、1ノードのCPU量、1ノードのメモリ量、現在のノード数、上限(最大ノード数)、下限(最小ノード数)を取得する(S803)。なお、この例では、スケール機構は、コンテナCに基づくスケール判定において、ノードグループ(♯1、4)のデータを取得する。
【0035】
本明細書の説明において、各ノードグループをG1,G2・・・で示すことがある。また、ノードグループごとの1ノード当たりのCPU量をC1,C2・・・で示し、ノードグループごとの1ノード当たりのメモリ量をM1,M2・・・で示し、ノードグループごとの現在のノード数をD1,D2・・・で示し、ノードグループごとの最大ノード数をU1,U2・・・で示し、ノードグループごとの最小ノード数をL1,L2・・・で示し、ノードグループごとの1ノード当たりのノードコストをY1,Y2・・・で示すことがある。
【0036】
次に、スケール機構17は、コンテナ基盤21の空きリソース(A)を計算する(S804)。ここで、スケール機構17は、CPUおよびメモリについて、ノードのリソースと、コンテナの要求値の合計または直近における実使用量の平均のうちで大きい方の値との差を計算し、各ノードについての該差の合計を(A)として計算する。すなわち、スケール機構17は、各ノードのCPU/メモリについて、ノードのリソース-MAX(コンテナの要求値の合計,直近における実使用量の平均)を計算し、その合計を(A)として計算する。なお、この例では、スケール機構17は、ノードグループ♯1とノードグループ♯4に関する計算を行う。
【0037】
図10を参照しながら、(A)の計算の一例について説明する。
図10は、ノードに関して取得する情報であって、前回値と今回値の一例を示す図である。
図10の例では、ノードグループごとに、1ノードのCPUおよびメモリのリソースに対する、リクエスト合計(すなわち、コンテナの要求値の合計)と、使用量(実使用量の平均)が格納されている。
【0038】
ノードグループ♯1の場合、前回値と今回値のCPUのリクエスト合計が3.90であり、前回値のCPUの使用量が2.05であり、今回値のCPUの使用量が1.05である。また、前回値と今回値のメモリのリクエスト合計が7.5であり、前回値のメモリの使用量が7.6であり、今回値のメモリの使用量が7.0である。
【0039】
従って、スケール機構17は、前回のノードグループ♯1におけるノードのCPUおよびメモリの空きリソースの計算において、CPU量を3.90とし、メモリ量を7.6として計算する。また、スケール機構17は、今回のノードグループ♯1におけるノードのCPUおよびメモリの空きリソースの計算において、CPU量を3.90とし、メモリ量を7.5として計算する。
【0040】
また、ノードグループ♯4の場合、前回値と今回値のCPUのリクエスト合計が3.90であり、前回値と今回値のCPUの使用量が3.25である。また、前回値と今回値のメモリのリクエスト合計が15.5であり、前回値のメモリの使用量が15.4であり、今回値のメモリの使用量が15.0である。
【0041】
従って、スケール機構17は、前回のノードグループ♯4におけるノードのCPUおよびメモリの空きリソースの計算において、CPU量を3.90とし、メモリ量を15.5として計算する。また、スケール機構17は、今回のノードグループ♯4におけるノードのCPUおよびメモリの空きリソースの計算において、CPU量を3.90とし、メモリ量を15.5として計算する。
【0042】
次に、スケール機構17は、(A)の傾向である(ΔA)を計算する(S805)。スケール機構17は、(ΔA)を(A)の今回値から(A)の前回値を引くことにより計算する。
【0043】
次に、スケール機構17は、デプロイ予定のコンテナのリソース要求値を算出する(S806)。なお、本明細書において、このリソース要求値を(B)で示すことがある。スケール機構17は、デプロイ予定のコンテナに関する外部情報において、デプロイ要求にリソース要求値が指定されているかどうかについて確認する。そして、スケール機構17は、デプロイ要求にリソース要求値が指定されている場合、このリソース要求値を抽出し、デプロイ要求にリソース要求値が指定されていない場合、名前空間のデフォルト値を取得する。
【0044】
そして、スケール機構17は、CPUおよびメモリについて、(A)、(ΔA)、(B)、(H)、(P)をもとに、スケール判定を行う(S807)。スケール機構17は、(A)-(B)<(H)、又は、(A)+(ΔA)-(B)<(H)の関係があることを判定した場合、ノード数を増やすノードグループを選択し(S808)、ノード追加指示を行う(S809)。なお、S808~S809の詳細は後述する。スケール機構17は、(A)-(B)>(P)、且つ、(A)+(ΔA)-(B)>(P)の関係があることを判定した場合、ノードの数を減らすノードグループを選択し(S810)、ノードの削除指示を行う(S811)。なお、S810~S811の詳細は後述する。これら以外の場合、スケール機構17は、スケール(ノードの追加あるいは削除)を実施しない。
【0045】
図11を参照しながら、S808~S809の処理の詳細について説明する。
図11は、ノードの追加時における処理の一例を示すフローチャートである。
【0046】
スケール機構17は、ノードグループの1つを選択し(S1101)、このノードグループについて最大ノード数に達しているかどうかについて判定する(S1102)。なお、
図11において、Dnはあるノードグループの現在のノード数を示し、Unは該ノードグループにおける最大ノード数を示している。そして、スケール機構17は、最大ノード数に達していないことを判定した場合、1ノード追加時の余剰リソースを計算する(S1103)。スケール機構17は、こうした処理を全ノードグループについて実行する。
【0047】
S1103における1ノード追加時の余剰リソースの計算について説明する。スケール機構17は、CPUおよびメモリそれぞれについて計算する。
【0048】
スケール機構17は、Xcn=Ac+MIN(ΔAc,0)+Cn-Bcの式に基づいて、CPUの余剰リソースを計算する。ここで、該式において、Xcnは、対象となるノードグループにおいて1ノード追加時のCPUの余剰リソースを示す。Acは、CPUに関する空きリソースを示す。MIN(ΔAc,0)は、ΔAcもしくは0のうちで小さい値を用いることを示し、ΔAcは、Acの傾向を示す。ΔAcは、Acの今回値からAcの前回値を引くことにより計算される。Cnは、対象となるノードグループにおける1ノードのCPU量を示す。Bcは、デプロイ予定のコンテナに関する外部情報に基づいたCPUリクエスト値を示す。
【0049】
スケール機構17は、Xmn=Am+MIN(ΔAm,0)+Mn-Bmの式に基づいて、メモリの余剰リソースを計算する。ここで、該式において、Xmnは、対象となるノードグループにおいて1ノード追加時のメモリの余剰リソースを示す。Amは、メモリに関する空きリソースを示す。MIN(ΔAm,0)は、ΔAmもしくは0のうちで小さい値を用いることを示し、ΔAmは、Amの傾向を示す。ΔAmは、Amの今回値からAmの前回値を引くことにより計算される。Mnは、対象となるノードグループにおける1ノードのメモリ量を示す。Bmは、デプロイ予定のコンテナに関する外部情報に基づいたメモリリクエスト値を示す。
【0050】
スケール機構17は、全ノードグループを選択した後に、Xcn>Hc、且つ、Xmn>Hmを満たすノードグループ(Gn)が存在するかどうかについて判定する(S1104)。ここで、Hcは、(H)のCPUに関する値を示し、Hmは、(H)のメモリに関する値を示す。スケール機構17は、上記の条件を満たすノードグループが存在することを判定した場合、余剰リソースコストが最小となるノードグループを選択する(S1105)。スケール機構17は、上記の条件を満たすノードグループが存在しないことを判定した場合、不足リソースが最大となるノードグループを選択する(S1107)。
【0051】
S1105について詳しく説明する。スケール機構17は、((Xcn-Hc)/Cn+(Xmn-Hm)/Mn)×Ynが最小となるノードグループ(Gx)を選択する。ここで、Ynは、あるノードグループのノードコストを示す。そして、スケール機構17は、選択されたノードグループ(Gx)のノード数を1増加させる(S1106)。S1105では、ノード追加後の余剰リソースが追加するノードの何台分になるかをCPU、メモリそれぞれで計算し、その和にノードコストを掛けたものを計算値としている。この値が少ないほど、追加するノードが不足分にフィットしており、より余剰コストを削減できるということになる(例えば、CPU不足ならCPUが多いノードを、メモリ不足ならメモリが多いノードを入れるということになる)。
【0052】
S1107について詳しく説明する。スケール機構17は、MIN((Xcn-Hc)/Cn,(Xmn-Hm)/Mn)が最大となるノードグループ(Gx)を選択する。そして、スケール機構17は、選択されたノードグループ(Gx)のノード数を1増加させる(S1108)。S1107は、どのノードを1台追加してもリソース不足を解消できない場合に発生する。従って、MIN関数の両引数は必ず負(すなわち、リソース不足)になる。ここで、リソース不足を解消できるノードを追加する際に、この負の値が0に近くなるほどリソース不足が解消されることになる。そこで、MIN関数を通すことでCPU、メモリのうちより不足している方の値を採用し、その値を0に近づけるノードを追加する。
【0053】
S1108においてノードが追加された後にS1101に戻り、スケール機構17は、別のノードをさらに追加する処理に移行する。なお、全ノードグループが最大ノード数に達している場合、スケール機構17は、S1104において処理の終了を判定する。
【0054】
図12を参照しながら、S810~S811の処理の詳細について説明する。
図12は、ノードの削除時における処理の一例を示すフローチャートである。
【0055】
スケール機構17は、ノードグループの1つを選択し(S1201)、このノードグループについて最小ノード数に達しているかどうかについて判定する(S1202)。なお、
図12において、Dnはあるノードグループの現在のノード数を示し、Lnは該ノードグループにおける最小ノード数を示している。そして、スケール機構17は、選択したノードグループにおいて最小ノード数以上のノードの存在を判定した場合、削除可能なノードが存在するかについて判定する(S1203)。
【0056】
S1203について詳しく説明する。ノード削除時には該当ノード上で動くコンテナの退避が発生する。基本的には、各コンテナはいつでも退避可能であるのが理想であるが、バッチ処理のコンテナ等、処理の中断が大きな影響をもたらすコンテナも存在する。こういったコンテナが動作していない=削除可能と判定する。なお、退避不可のコンテナの指定方法については、自動で決定される方法(例えば、コンテナがシステム管理用コンテナとされること)と手動で決定される方法(例えば、ラベルの付与)が存在する。
【0057】
そして、スケール機構17は、削除可能なノードの存在を判定した場合、1ノード削除時の余剰リソースを計算する(S1204)。スケール機構17は、こうした処理を全ノードグループについて実行する。
【0058】
S1204における1ノード削除時の余剰リソースの計算について説明する。スケール機構17は、CPUおよびメモリそれぞれについて計算する。
【0059】
スケール機構17は、Xcn=Ac+MIN(ΔAc,0)-Cn-Bcの式に基づいて、CPUの余剰リソースを計算する。ここで、該式において、Xcnは、対象となるノードグループにおいて1ノード削除時のCPUの余剰リソースを示す。Acは、CPUに関する空きリソースを示す。MIN(ΔAc,0)は、ΔAcもしくは0のうちで小さい値を用いることを示し、ΔAcは、Acの傾向を示す。ΔAcは、Acの今回値からAcの前回値を引くことにより計算される。Cnは、対象となるノードグループにおける1ノードのCPU量を示す。Bcは、デプロイ予定のコンテナに関する外部情報に基づいたCPUリクエスト値を示す。
【0060】
スケール機構17は、Xmn=Am+MIN(ΔAm,0)-Mn-Bmの式に基づいて、メモリの余剰リソースを計算する。ここで、該式において、Xmnは、対象となるノードグループにおいて1ノード削除時のメモリの余剰リソースを示す。Amは、メモリに関する空きリソースを示す。MIN(ΔAm,0)は、ΔAmもしくは0のうちで小さい値を用いることを示し、ΔAmは、Amの傾向を示す。ΔAmは、Amの今回値からAmの前回値を引くことにより計算される。Mnは、対象となるノードグループにおける1ノードのメモリ量を示す。Bmは、デプロイ予定のコンテナに関する外部情報に基づいたメモリリクエスト値を示す。
【0061】
スケール機構17は、全ノードグループを選択した後に、Xcn>Hc、且つ、Xmn>Hmを満たすノードグループ(Gn)が存在するかどうかについて判定する(S1205)。ここで、Hcは、(H)のCPUに関する値を示し、Hmは、(H)のメモリに関する値を示す。スケール機構17は、上記の条件を満たすノードグループが存在することを判定した場合、余剰リソースコストが最小となるノードグループを選択する(S1206)。
【0062】
S1206について詳しく説明する。スケール機構17は、((Xcn-Hc)/Cn+(Xmn-Hm)/Mn)×Ynが最小となるノードグループ(Gx)を選択する。ここで、Ynは、あるノードグループのノードコストを示す。そして、スケール機構17は、選択されたノードグループ(Gx)のノード数を1減少させる(S1207)。S1206では、ノード削除後の余剰リソースが削除するノードの何台分になるかをCPU、メモリそれぞれで計算し、その和にノードコストを掛けたものを計算値としている。この値が少ないほど、削除するノードが余剰分にフィットしており、より余剰コストを削減できるということになる(例えば、CPU過剰ならCPUが多いノードを、メモリ過剰ならメモリが多いノードを外すということになる)。
【0063】
S1207においてノードを減少させた後に、スケール機構17は、未だリソースが余剰であるかについて判定する(S1208)。リソースが余剰であると判定した場合にS1201に戻り、スケール機構17は、別のノードをさらに減少させる処理に移行する。なお、S1208では、Xcx>Pc、且つ、Xmx>Pmを満たすかどうかの判定を行う。ここで、Xcxは、S1207で処理したノードグループについて、1ノード削除時のCPUの余剰リソースを示す。Xmxは、S1207で処理したノードグループについて、1ノード削除時のメモリの余剰リソースを示す。PcはCPUに関する(P)を示し、Pmはメモリに関する(P)を示す。
【0064】
次に、
図13-
図15を参照しながら、スケール機構の動作例について説明する。この例では、外部情報として
図7に示す情報を取得し、コンテナ基盤の情報に関して
図9および
図10に示す情報を取得した場合について説明する。
【0065】
先ず、スケール機構17は、一番優先度が高いコンテナCの処理を実行する。ここで、コンテナCに関するアフィニティルールが参照され、アフィニティルールを満たす処理が行われる。
【0066】
スケール機構17は閾値を取得する。ここでは、Hc=0、Hm=0、Pc=4、Pm=8(GB)とする。
【0067】
スケール機構17は、ノードグループの一覧に関する情報(ここでは、
図9および
図10に示す情報)をコンテナ基盤21から取得する。スケール機構17は、アフィニティルールに従ってノードグループ♯1、および、ノードグループ♯4のみを残し、処理を続行する。
【0068】
スケール機構17は、(A)と(ΔA)を計算する。すなわち、CPUおよびメモリそれぞれの値を計算する。
図13にその計算結果を示す。
【0069】
スケール機構17は、外部情報に基づいて(B)を算出する。ここでは、Bc=0.5、Bm=0.1が算出される。
【0070】
スケール機構17は、スケール判定を行う。
図14にその判定結果を示す。
【0071】
スケール機構17は、スケールするノードグループを選択し、スケールを行う。
図15に余剰リソースコストの計算結果を示す。この例では、余剰コストリソースの値について、ノードグループ♯1の方が低いので、ノードグループ♯1のノード数を1追加する(1⇒2)。
【0072】
スケール機構17は、残りのコンテナA、コンテナBについて、同様の手順でスケール判断を行う。
【0073】
次に、
図16を参照しながら、ハードウェア構成の一例について説明する。
図16は、システム全体のハードウェア構成例を示す図である。
【0074】
図16に示すように、システム(負荷分散システム41)は、負荷分散装置11と、コンテナ基盤21(クラスター)と、外部リソース31と、を備える。利用者(例えば、開発者)は、コンピュータ(クライアント)を負荷分散装置11に接続し、負荷分散装置11を利用することができる。利用者は、例えば、インターネット、専用線や仮想プライベートネットワーク(VPN)などの接続を行うことができる。クラウドプロバイダ(若しくは作業者)は、負荷分散装置11の設定作業、および、コンテナ基盤21の準備作業(プロビジョニング)を行う。
【0075】
負荷分散装置11は、CPU12(プロセッサ)と、メモリ13(この例では、RAM)と、補助記憶装置14(記憶部を構成し、この例では、SSD)と、ネットワークインターフェース15と、を備えるコンピュータとして構成され、データの負荷分散を行い、ノードにデータを振り分ける装置である。負荷分散装置11は、上記で説明した処理を実行する。ここで、補助記憶装置14は、取得されたリソースの情報や外部情報などのデータを格納する。また、補助記憶装置14は、スケール機構17とスケジュール機構18を格納する。そして、CPU12は、メモリ13にデータを読み出して所定の処理を実行する。
【0076】
コンテナ基盤21は、複数の可用性ゾーン(もしくはデータセンター)を有しており、それぞれ可用性ゾーンには、コンテナをデプロイするノードが適宜に配置される。この例では、ノードは、CPUと、メモリ(この例では、RAM)と、補助記憶装置(この例では、SSD)と、ネットワークインターフェースと、を備えるコンピュータとして構成されている。
【0077】
また、このシステムは、外部リソース31を備え、外部リソース31は、CPUと、メモリ(この例では、RAM)と、補助記憶装置(この例では、SSD)と、ネットワークインターフェースと、を備えるコンピュータ(マシン)を含んで構成される。外部リソース31は、例えば、コンテナをデプロイする際に、必要に応じてコンテナを退避することに活用される。
【0078】
以上、本発明の実施形態について詳述したが、本発明は、前記の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の精神を逸脱しない範囲で、種々の設計変更を行うことができるものである。例えば、前記した実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。さらに、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【0079】
所定の処理が実行されればよく、適宜に変更されてもよい。例えば、CPU12がプロセッサである例について説明されたが、他の種類の半導体デバイスが用いられ、同様のデータ処理が行われてもよい。補助記憶装置14としてSSDが説明されたが、他の種類の装置(例えば、HDD)が用いられてもよい。その他のハードウェア構成についても、所定の処理を実行することができれば適宜に変更されてもよい。
【0080】
上記の開発環境の場合とは別に、負荷分散装置11は、本番環境におけるリソースの需給予測を基に必要となるコンテナ数を決定し、コンテナ基盤21のリソースを踏まえて基盤のスケール判断を行ってもよい。例えば、月末や繁忙期などでは需要が増加することが予測される。ここで、負荷分散装置11は、例えば、リソースの変化を自動的に記録したデータに基づいて、需給予測を取得(計算)してもよい。また、需給予測は、例えば、外部から取得され、負荷分散装置11に事前登録されてもよい。負荷分散装置11は、必要となるタイミングでスケール判断を行い、本番環境での需給予測に応じたリソースを準備する。
【符号の説明】
【0081】
11 負荷分散装置
12 CPU(プロセッサ)
13 メモリ
14 補助記憶装置(記憶部)
15 ネットワークインターフェース
17 スケール機構
18 スケジュール機構
21 コンテナ基盤
31 外部リソース
41 負荷分散システム