特許文献1によれば最適なサーバ資源へのコンテナ配置が可能になるが、以下のような技術課題が見られる。
第1に、制御装置や負荷情報収集装置の障害時や切り替え発生時およびメンテナンス時には最適なサーバ資源へのコンテナ配置が実施不可能である。
第2に、管理するサーバ資源群の情報を適宜収集する必要があり、仮想マシン配置計算処理に時間がかかる可能性があるのみならず、サーバ資源の規模を柔軟に増加させることが困難である。
本発明の目的は、上記の技術課題を解決し、コンテナ環境において管理状態、障害情報を各サーバ資源がブロックチェーンとして保持することで、中央管理システムを使用せずに分散型コンテナ配置を最適化できる方法およびシステムを提供することにある。
上記の目的を達成するために、本発明は、ブロックチェーンによる分散型コンテナ配置の最適化システムにおいて、以下の構成を具備した点に特徴がある。
(1) コンテナ管理ソフトウェアが稼働する複数のサーバ資源において、コンテナ管理のトランザクションを登録するブロックをチェーン状につなげて管理するブロックチェーンと、各サーバ資源において、ブロックチェーンを管理するエージェントとを含み、各サーバ資源のエージェントが協働して各ブロックチェーンに一貫性を持たせるようにした。
(2) コンテナの作成指示を受けたサーバ資源のエージェントが、管理配下のブロックチェーンに基づきコンテナを作成するサーバ資源を決定してコンテナ作成を要求し、要求に対してコンテナ作成の完了通知を受信すると、当該コンテナ作成のトランザクションおよび管理配下のブロックチェーン末尾のブロックに関して計算したハッシュ値を登録内容とする新規ブロックを前記ブロックチェーン末尾に追加し、ネットワーク上の各サーバ資源のエージェントに対して前記新規ブロックの追加を通知し、前記新規ブロックの追加を通知されたエージェントは、新規ブロックを管理配下のブロックチェーンの末尾に追加するようにした。
(3) ネットワークに新たに接続するサーバ資源のエージェントが、ネットワーク上の他の任意のサーバ資源のエージェントに対してブロックチェーンを要求し、前記要求により取得したブロックチェーンを管理配下に置き、当該新たな接続に関するトランザクションおよび管理配下のブロックチェーン末尾のブロックに関して計算したハッシュ値を登録内容とする新規ブロックを前記管理配下のブロックチェーン末尾に追加し、ネットワーク上の各サーバ資源のエージェントに対して前記新規ブロックの追加を通知し、前記新規ブロックの追加を通知されたエージェントは、前記新規ブロックを管理配下のブロックチェーンの末尾に追加するようにした。
本発明によれば、以下のような効果が達成される。
(1) 複数のコンテナが複数のサーバ資源に分散配置されて稼働するコンテナ環境において、その管理状態や障害情報が各サーバ資源上でブロックチェーンにより管理されるので、中央管理システムを使用することなく、制御装置や負荷情報収集装置の障害時、切り替え発生時あるいはメンテナンス時においても、最適なサーバ資源へのコンテナ配置が可能になる。
(2) 複数のコンテナが複数のサーバ資源に分散配置されて稼働するコンテナ環境において、その管理状態や障害情報が各サーバ資源上でブロックチェーンにより管理されるので、コンテナの追加要求を受けたサーバ資源は、管理配下のブロックチェーンを参照すればコンテナの最適な配置先を認識できる。したがって、コンテナの追加要求を受けたサーバ資源の如何を問わず、短時間で最適なコンテナ配置が可能になる。
(3) 複数のコンテナが複数のサーバ資源に分散配置されて稼働するコンテナ環境において、その管理状態や障害情報が各サーバ資源上でブロックチェーンにより管理されるので、ネットワークに新たに接続するサーバ資源は、他の任意のサーバ資源からブロックチェーンを取得するだけで、コンテナ環境の管理状態や障害情報を共有できるようになり、サーバ資源の規模を柔軟に増加できるようになる。
以下、図面を参照して本発明の実施の形態について詳細に説明する。図1は、本発明の一実施形態に係るブロックチェーンによる分散型コンテナ配置の最適化システムの構成を示したブロック図であり、ここでは、本発明の説明に不要な構成は図示が省略されている。
ネットワークNWには、IP到達性のある複数のサーバ資源S(S1,S2,S3)が接続されている。各サーバ資源Sには、コンテナ管理ソフトウェアにより、一つのOS環境に独立したサーバと同様の振る舞いをする複数の区画(コンテナ)が確保され、コンテナごとに異なるOS環境が実現されている。各コンテナCには、個別のユーザーやサービスが割り当てられる。
また、本実施形態では各サーバ資源S1,S2,S3に、各コンテナC(C1,C2,C3,C4,C5)の管理状態や障害情報のトランザクションをブロックチェーンで管理するデータベースDB(DB1,DB2,DB3)が、それぞれ設けられている。ブロックチェーンに対するブロックの追加、削除、変更、更新およびコンテナの制御は、各サーバ資源S1,S2,S3上で動作する各エージェントE(E1,E2,E3)により管理される。
図2は、各サーバ資源SのDBが管理するブロックチェーンの構成を模式的に示した図であり、複数のブロックB(B1,B2,B3)を時系列に連結して構成され、全てのDBが同一内容のブロックチェーンを管理する。
各ブロックBでは、コンテナCnの作成情報および管理配下のサーバ資源情報が直前のブロックBn-1のハッシュ値と共に保持されている。各エージェントEが新規にブロックBnを作成する際は、直前のブロックBn-1のハッシュ値を計算し、その結果を新規に作成するブロック内に追加する。ブロックBnの作成完了後、他の全てのエージェントEへの通知を実施し、通知を受け取ったエージェントEはブロックチェーンを更新する。これにより、全てのDBが一貫性のある情報、同一の情報を保持できるようになる。
本実施形態によれば、複数のコンテナCが複数のサーバ資源Sに分散配置されて稼働するコンテナ環境において、その管理状態や障害情報が各サーバ資源上でブロックチェーンにより管理されるので、中央管理システムを使用することなく、制御装置や負荷情報収集装置の障害時、切り替え発生時あるいはメンテナンス時においても、最適なサーバ資源へのコンテナ配置が可能になる。
図3は、サーバ資源に新たに追加するコンテナCの配置を最適化し、そのトランザクションをブロックチェーンに反映する手順を示したシーケンスである。
時刻t1において、操作者が操作端末からサーバ資源S(ここでは、サーバ資源S2)にログインし、時刻t2において、コンテナ作成コマンドを実行すると、時刻t3において、サーバ資源S2のエージェントE2へコンテナ作成の指示が伝わる。
エージェントE2は、時刻t4において、管理配下のDB2に保持されているブロックチェーンを参照し、コンテナ操作情報履歴等に基づいて、各サーバ資源S上のコンテナ数を判別する。ここで、例えばサーバ資源S1上のコンテナ数が最も少ないために最もリソースが空いていると判断すると、エージェントE2は、時刻t5においてサーバ資源S1へコンテナ作成を要求する。
サーバ資源S1は、このコンテナ作成要求に応答してコンテナCの作成を実行する。コンテナの作成が完了すると、時刻t6において、コンテナ作成完了通知を、コンテナ作成の要求元であるエージェントE2へ送信する。
コンテナ作成完了通知を受信したエージェントE2は、時刻t7において、サーバ資源S1上に操作者のコンテナCを作成した旨の情報を作成し、さらにブロックチェーン末端のブロックのハッシュ値を計算する。そして、これらを登録内容とする新規ブロックBを作成し、管理配下のDB2に記憶されているブロックチェーンの末尾に追加する。
その後、時刻t8において、エージェントE2は自身を除く全てのエージェントE(E1、E3)へブロック追加情報を通知する。通知を受けた各エージェントEは、時刻t9において、管理配下のDBに記憶されているブロックチェーンをそれぞれ更新する。すなわち、通知された新規ブロックBをブロックチェーンの末尾に追加する。
本実施形態によれば、複数のコンテナが複数のサーバ資源に分散配置されて稼働するコンテナ環境において、その管理状態や障害情報が各サーバ資源上でブロックチェーンにより管理されるので、コンテナの追加要求を受けたサーバ資源は、管理配下のブロックチェーンを参照すればコンテナの最適な配置先を認識できる。したがって、コンテナの追加要求を受けたサーバ資源の如何を問わず、短時間で最適なコンテナ配置が可能になる。
図4は、ネットワークにサーバ資源を新たに追加し、そのトランザクションを各サーバ資源の管理配下にあるブロックチェーンに反映する手順を示したシーケンスであり、ここでは、既にサーバ資源S1,S2が接続されているネットワークへ、サーバ資源S3を新たに追加する場合を例にして説明する。
新規に接続されるサーバ資源S3のエージェントE3は、時刻t21において、ランダムに選択したネットワークNW上の他のエージェントEへブロックチェーンの取得要求を送信する。ここでは、エージェントE2が選択されたものとして説明を続ける。
エージェントE3は、時刻t22においてエージェントE2からブロックチェーンを受け取ると、時刻t23において、サーバ資源S3が新規に利用可能なサーバ資源として追加された旨の情報、およびブロックチェーン末端のブロックのハッシュ値を計算する。そして、これらを登録内容とする新規ブロックB3を作成し、管理配下のDB3に記憶されているブロックチェーンの末尾に追加する。
時刻t24では、エージェントE3が自身を除く全てのエージェントEへブロック追加通知を実施する。時刻t25では、通知を受けた各エージェントE1,E2のDB内のブロックチェーンが更新される。
本実施形態によれば、複数のコンテナが複数のサーバ資源に分散配置されて稼働するコンテナ環境において、その管理状態や障害情報が各サーバ資源上でブロックチェーンにより管理されるので、ネットワークに新たに接続するサーバ資源は、他の任意のサーバ資源からブロックチェーンを取得するだけで、コンテナ環境の管理状態や障害情報を共有できるようになり、サーバ資源の規模を柔軟に増加できるようになる。
なお、上記の実施形態では、本発明をコンテナの追加およびサーバ資源の追加を例にして説明したが、本発明はこれのみに限定されるものではなく、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。