(57)【要約】【課題】仮想環境を用いてネットワークサービスを提供するシステムにおいて、サーバの構成要素の単位でスケールアウトを可能とする技術を提供する。【解決手段】複数のサーバによりネットワークサービスを提供するシステムにおいてシステム構築を行うシステム構築装置において、所定の判定条件に基づいて、前記複数のサーバにおける一のサーバのある構成要素を他のサーバで動作させることを決定する決定手段と、前記一のサーバの構成管理情報に基づいて、前記他のサーバを選択し、当該他のサーバにおいて前記構成要素を動作させる構築手段とを備える。【選択図】図５
2018142277.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバによりネットワークサービスを提供するシステムにおいてシステム構築を行うシステム構築装置であって、
所定の判定条件に基づいて、前記複数のサーバにおける一のサーバのある構成要素を他のサーバで動作させることを決定する決定手段と、
前記一のサーバの構成管理情報に基づいて、前記他のサーバを選択し、当該他のサーバにおいて前記構成要素を動作させる構築手段と
を備えることを特徴とするシステム構築装置。
【請求項２】
前記構築手段は、前記一のサーバにおいて使用された自動構築スクリプトから取得された構成管理情報に基づいて、前記他のサーバとして、前記一のサーバの構成と類似する構成を有するサーバを選択する
ことを特徴とする請求項１に記載のシステム構築装置。
【請求項３】
前記一のサーバの構成と類似する構成を有するサーバは、当該一のサーバが接続されるネットワークと同じネットワークに接続され、当該一のサーバのリソースの量以上の量のリソースを有するサーバである
ことを特徴とする請求項２に記載のシステム構築装置。
【請求項４】
前記構築手段は、前記他のサーバとして、前記一のサーバの構成と類似する構成を有し、かつ、リソースに空きのあるサーバを選択する
ことを特徴とする請求項２又は３に記載のシステム構築装置。
【請求項５】
前記構築手段は、前記他のサーバを選択できない場合において、
前記一のサーバのイメージを用いて新たにサーバを構築し、当該サーバにおいて前記構成要素を動作させる、又は、前記一のサーバの構成管理情報を適用した自動構築スクリプトを用いて新たにサーバを構築し、当該サーバにおいて前記構成要素を動作させる
ことを特徴とする請求項１ないし３のうちいずれか１項に記載のシステム構築装置。
【請求項６】
前記システム構築装置は、
前記構成要素に関する自動構築スクリプトに含まれる所定要素をノードとして抽出し、ノード間の依存関係に基づいて、ノード間のリンクを作成し、当該ノードの情報及びリンクの情報から有向グラフを作成し、当該有向グラフのデータを前記構成要素に関する構成管理情報として取得する構成管理情報取得手段を更に備え、
前記構築手段は、前記構成要素に関する構成管理情報に基づいて、サーバにおける前記構成要素の構築を行い、当該構成要素を動作させる
ことを特徴とする請求項１ないし５のうちいずれか１項に記載のシステム構築装置。
【請求項７】
複数のサーバによりネットワークサービスを提供するシステムにおいてシステム構築を行うシステム構築装置が実行するシステム構築方法であって、
所定の判定条件に基づいて、前記複数のサーバにおける一のサーバのある構成要素を他のサーバで動作させることを決定する決定ステップと、
前記一のサーバの構成管理情報に基づいて、前記他のサーバを選択し、当該他のサーバにおいて前記構成要素を動作させる構築ステップと
を備えることを特徴とするシステム構築方法。
【請求項８】
コンピュータを、請求項１ないし６のうちいずれか１項に記載のシステム構築装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークサービスを提供するシステムを構築する技術に関連するものである。
【背景技術】
【０００２】
ネットワークを介して提供されるネットワークサービスにおいて仮想環境の利用が普及している。仮想環境においては、仮想環境を構成するシステムの負荷が高くなった際にシステムのキャパシティを向上させるオートスケール技術が利用されている。
【０００３】
オートスケール技術には、サービスを提供するサーバの台数を増やす「スケールアウト」と、サービスを提供するサーバのリソースを増やす「スケールアップ」の２種類の技術がある。近年、サービス断を伴わず、迅速な高負荷への対応を行うことができるオートスケール技術としてスケールアウト方式が多くの場合採用されている。
【０００４】
従来技術によるスケールアウト方式では、サービスを提供しているサーバと同一の機能を持つサーバを予め準備しておき、サービスを提供しているサーバが高負荷となった場合に、準備しておいたサーバがサービス提供を開始するという形態がとられる。
【０００５】
なお、関連する先行技術として、例えば、非特許文献１〜３に開示された技術がある。非特許文献１〜３には、自動構築スクリプトを用いた構成管理情報でサーバの構成を把握し、復旧手順構築、障害検知等を行う技術が開示されている。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】自動構築スクリプトを用いたシステム構成管理に関する一考察、沼田晋作・橋本昭二・柏  大、２０１６年５月２７日
【非特許文献２】自動構築スクリプトを用いた構成管理情報によるシステムの変更管理に関する一考察、沼田晋作・神谷法正・橋本昭二・柏  大、２０１６年７月７日
【非特許文献３】自動構築スクリプトを用いたCMDB による障害原因自動特定・復旧機能の実装と評価、沼田晋作・神谷法正・橋本昭二・柏  大、２０１７年１月１９日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
既存のスケールアウト方式には、大きく３つの課題（１）、（２）、（３）がある。図１を参照しながら課題（１）、（２）、（３）について説明する。図１は、ＷＥＢサーバ４とＡＰサーバ５からなるシステムにおいて、ＡＰサーバ５のＡＰ３に高負荷が発生したため、ＡＰサーバ６を用いてスケールアウトを行う状況を示している。
【０００８】
（１）スケールアウト用のイメージを、動作させる直前まで全て作成し世代管理しなければならない
まず、図１のＳ１に示すように、スケールアウト元のサーバにおけるＡＰのインストールや設定まで終えたイメージファイル（アプリケーションを含む仮想マシン全体のイメージ）を、動作させる直前まで作成しておく必要がある。これは、急速な負荷の向上時には、即時にスケールアウト先を必要とするためである。このため、対象のサーバ（例：図１のＡＰサーバ５）が変更されるたびに、サーバのイメージファイルを作成しなおさなければならない。これは高頻度で発生することがあり、非常に手間がかかる。
【０００９】
近年ではサーバやアプリケーションへの機能追加がビジネス上の競争に非常に重要であるため、サーバやアプリケーションへの機能追加や変更頻度は非常に高い。このため、イメージファイルの世代管理が必要となり、非常に煩雑である。
【００１０】
（２）増設したリソースを本来の目的に使えない
前述したように、スケールアウト用のイメージはサーバ全体を複製するイメージとなるため、スケールアウト先のサーバにおいて、本来必要が無いプロセスやサービスなども起動してしまう。このため、増設したリソースを本来スケールアウトしたいサービスに集中させることができず、無駄が生じてしまう。
【００１１】
例えば、図１の例では、ＡＰ３の高負荷のためにスケールアウトを行うが、Ｓ２として示すように、スケールアウト先のＡＰサーバ６では、ＡＰ３以外のＡＰ１、ＡＰ２も起動される。このため、例えば、ＡＰ１にライセンスが必要な場合はライセンス料が発生し、ＡＰ２が対象のメモリを消費する際には、メモリも用意しなければならない。
【００１２】
（３）増設ポリシーが固定
増設したサーバをシステムの動作の中に組み込むためには、別のサーバへの設定変更が必要である。例えば、増設したサーバが持っているＩＰアドレスとポート番号を管理し、スケールアウトの際には、当該サーバに対して処理を振り向けるように設定変更が必要である。任意の増設に対する設定変更には時間がかかるため、増設ポリシーは予めエンジニアが検討し確認した固定のルールのみとなる。図１の例では、スケールアウトを必要としているのはＡＰ３であるが、固定のルールに従い、ＡＰ１やＡＰ２が使用するポートに対しても振り分けの処理を実施する設定を行っている。
【００１３】
上記のように、従来のスケールアウト技術では、サーバ単位での増設しかできないために、スケールアウトを必要とする構成要素（例：アプリケーション）にとって不要なリソースを消費したり、当該構成要素にとって不要な設定変更を行うといった非効率な点があった。
【００１４】
本発明は上記の点に鑑みてなされたものであり、仮想環境を用いてネットワークサービスを提供するシステムにおいて、サーバの構成要素の単位でスケールアウトを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１５】
開示の技術によれば、複数のサーバによりネットワークサービスを提供するシステムにおいてシステム構築を行うシステム構築装置であって、
所定の判定条件に基づいて、前記複数のサーバにおける一のサーバのある構成要素を他のサーバで動作させることを決定する決定手段と、
前記一のサーバの構成管理情報に基づいて、前記他のサーバを選択し、当該他のサーバにおいて前記構成要素を動作させる構築手段と
を備えることを特徴とするシステム構築装置が提供される。
【発明の効果】
【００１６】
開示の技術によれば、仮想環境を用いてネットワークサービスを提供するシステムにおいて、サーバの構成要素の単位でスケールアウトを可能とする技術が提供される。
【図面の簡単な説明】
【００１７】
【図１】オートスケーリングの課題を説明するための図である。
【図２】本発明の実施の形態におけるシステムの全体構成図である。
【図３】自動構築スクリプトと構成管理情報を説明するための図である。
【図４】本発明の実施の形態におけるシステム構築装置１００による処理の概要を説明するための図である。
【図５】システム構築装置１００の機能構成図である。
【図６】システム構築装置１００のハードウェア構成図である。
【図７】構成管理情報取得部１１０により実行される構成管理情報取得処理を説明するための図である。
【図８】構成管理情報の例を示す図である。
【図９】アプリケーションに関する自動構築スクリプトの例を示す図である。
【図１０】自動構築スクリプトを実行する工事手順書の例を示す図である。
【図１１】依存関係を示す有向グラフデータの作成を示す図である。
【図１２】有向グラフデータの作成手順を示すフローチャートである。
【図１３】依存関係を示す有向グラフデータの他の例を示す図である。
【図１４】システム構築装置１００の動作手順を示すフローチャートである。
【図１５】データ格納部１５０に格納される情報の例を示す図である。
【図１６】Ｓ１０７、Ｓ１０８の例を説明するための図である。
【図１７】効果を説明するための図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態（本実施の形態）を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。本実施の形態では、サーバの構成要素毎のスケールアウトが可能である。以下の説明では、構成要素の例として、アプリケーションを取り上げているが、これは一例であり、構成要素はアプリケーション以外の機能であってもよい。また、本実施の形態では、ＯＳ上で動作するソフトウェア全般をアプリケーションと称している。例えば、ミドルウェアはアプリケーションの一種である。
【００１９】
また、本実施の形態では、仮想環境を前提とするが、本発明は仮想環境を用いないシステムに対しても適用可能である。
【００２０】
（システムの全体構成）
図２に、本実施の形態におけるシステムの全体構成を示す。図２に示すように、本実施の形態におけるシステムは、複数のサーバ１０と、システム構築装置１００とを有する。複数のサーバ１０は、各種のネットワークサービスをユーザに提供するサービスシステムを構成する。サーバ１０はそれぞれ、１つ又は複数のアプリケーションが動作する仮想マシンである。サーバ１０（仮想マシン）はそれぞれ、１つの物理マシン（コンピュータ）上で構築されたものであってもよいし、複数のサーバ１０が、１つの物理マシン上で構築されていてもよい。
【００２１】
システム構築装置１００は、あるサーバに対してスケールアウトが必要になった場合に、スケールアウトを実行する機能を備える装置である。詳細は後述するが、システム構築装置１００は、アプリケーション単位でのスケールアウトを行うことが可能である。なお、アプリケーションはサーバの構成要素の一例である。
（システム構築装置１００の動作概要）
非特許文献１〜３に開示されているように、システムを自動的に構築するソフトウェアとして自動構築スクリプトがある。非特許文献１〜３に開示された技術では、サーバに対してアプリケーション（以降、ＡＰ）をインストールし、設定を行う等の処理を自動構築スクリプトにより実行している。本実施の形態においても、これと同様に、各サーバへのアプリケーションのインストール／設定／起動等を自動構築スクリプトを使用して行っている。更に、本実施の形態では、仮想マシン（以降、ＶＭと記する）の設定（構築）、及び、ＯＳのインストール／設定についても、自動構築スクリプトを使用して行う。なお、ＯＳのインストール／設定にはネットワークの設定も含まれている。
【００２２】
自動構築スクリプトを使用した「ＶＭの設定」、「ＯＳのインストール／設定」、「ＡＰのインストール／設定」については、システム構築装置１００が実行してもよいし、システム構築装置１００以外の装置が実行してもよいが、システム構築装置１００は、各サーバについて、「ＶＭの設定」、「ＯＳのインストール／設定」、「ＡＰのインストール／設定」に用いた自動構築スクリプトを保持するか、各サーバから取得することが可能である。
【００２３】
システム構築装置１００は、サーバ毎に、上記の各設定に使用した自動構築スクリプトから、ハードウェア（以下、ＨＷ）、ＯＳ、及びＡＰの構成管理情報を取得し、これら構成管理情報を保持する。ここで、ＨＷは、仮想マシン上でエミュレートされたＨＷであり、ＨＷの構成管理情報としては、例えば、ディスクサイズ、メモリサイズ、ＣＰＵ数、ＮＩＣ数等がある。ＯＳの構成管理情報としては、例えば、パーティション情報、ホスト名、ＯＳ名、ＯＳバージョン、ＮＩＣ（ポート）に割り当てられたＩＰアドレス、ネットマスク等がある。
【００２４】
自動構築スクリプトは、基本的に「コマンド：パラメータ」の羅列であり、システム構築装置１００は、自動構築スクリプトから当該パラメータを抽出することで、構成管理情報を取得できる。
【００２５】
また、ＡＰの構成管理情報については、システム構築装置１００は、非特許文献１〜３に記載されているように、ＡＰの依存関係を示すノードとリンクからなる有効グラフの情報として構成管理情報を取得できる。
【００２６】
図３は、自動構築スクリプトと構成管理情報を説明するための図である。図３において、１４は、ＨＷの自動構築スクリプトを示し、１５は、ＯＳの自動構築スクリプトを示し、１６は、ＡＰの自動構築スクリプトを示す。ただし、図３上では、自動構築スクリプトそのものではなく、自動構築スクリプトに含まれる情報が示されている。また、変換ロジック１７、及び構成管理情報ＤＢ１８はシステム構築装置１００内に存在する機能である。
【００２７】
図３に示すように、ＨＷの自動構築スクリプト１４によりＶＭのＨＷが構築され、ＯＳの自動構築スクリプト１５によりＯＳが構築され、ＡＰの自動構築スクリプト１６によりＯＳ上で実行されるＡＰ等が構築される。また、変換ロジック１７により、各自動構築スクリプトから構成管理情報が作成され、構成管理情報ＤＢ１８に格納される。
【００２８】
また、変換ロジック１７は、構成管理情報ＤＢ１８に格納してある構成管理情報を使用して、当該構成管理情報の抽出元の自動構築スクリプトに相当する自動構築スクリプトを作成して、ＶＭ、ＯＳ、ＡＰ等の設定を行うことが可能である。
【００２９】
システム構築装置１００は、自動構築スクリプトから取得した構成管理情報に基づいて、スケールアウト先のサーバの選択、スケールアウト先でのＡＰインストール等を行うことができる。図４を参照して、スケールアウト時におけるシステム構築装置１００の動作概要を説明する。
【００３０】
システム構築装置１００が、ＡＰサーバ１１におけるＡＰ３に高負荷が発生したことを把握し、ＡＰ３についてのスケールアウトが必要であると判断する。システム構築装置１００は、各サーバのＨＷの構成管理情報とＯＳの構成管理情報（これらをまとめて「ＨＷ／ＯＳの構成管理情報」と記述する）に基づいて、ＡＰ３を導入可能なサーバとして、例えば、ＡＰサーバ１１と類似するＨＷ／ＯＳの構成を有し、リソースに空きのあるＭＡＩＬサーバ１３を検出し、ＭＡＩＬサーバ１３にＡＰ３をインストールし、動作させる。このＡＰ３は、高負荷のＡＰ３のスケールアウト先のＡＰ３となる。
【００３１】
一方、システム構築装置１００が、ＡＰ３を導入可能なサーバを検出できなかった場合には、例えば、ＡＰ３の実行に適したＶＭイメージ（例：ＡＰサーバ１１のＶＭのバックアップ）があれば、それを用いて、例えば停止中のサーバ（つまり、停止中の仮想マシンを有する物理マシン）にＶＭイメージをアップロードすることでＡＰサーバ１２を構築し、それにＡＰ３のみをインストールする。
【００３２】
また、ＡＰ３の実行に適したＶＭイメージがない場合には、例えば、テンプレートと、ＡＰサーバ１１のＨＷ／ＯＳ構成管理情報（パラメータ）とから、物理マシン上にＡＰサーバを構築し、ＡＰ３をインストールする。
【００３３】
（システム構築装置１００の構成例）
図５は、システム構築装置１００の機能構成の例を示す図である。図５に示すように、システム構築装置１００は、構成管理情報取得部１１０、動作制御部１２０、構築実行部１３０、サーバ状態情報取得部１４０、データ格納部１５０を有する。
【００３４】
構成管理情報取得部１１０は、自動構築スクリプトから構成管理情報を取得する。動作制御部１２０は、スケールアウトに関するシステム構築装置１００の動作を制御する機能部であり、後述するフローチャートに示す手順の動作は、動作制御部１２０の制御により実行される。構築実行部１３０は、サーバの構築（ＡＰインストール、ＶＭイメージアップロード、ＶＭ構築等）を実行する機能部である。サーバ状態情報取得部１４０は、例えばネットワーク監視システムから、あるいは各サーバから、サーバ／ＡＰの負荷状態等の情報を取得する機能部である。動作制御部１２０は、サーバ状態情報取得部１４０により取得された状態情報に基づいて、スケールアウトの対象(構成要素)を決定することができる。データ格納部１５０は、構成管理情報を含む各種のデータを格納する。
【００３５】
図３に示した変換ロジック１７は、図５の構成管理情報取得部１１０及び構築実行部１３０に対応し、図３に示した構成管理情報ＤＢ１８は、図５のデータ格納部１５０に対応する。
【００３６】
システム構築装置１００は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、システム構築装置１００が有する機能は、当該コンピュータに内蔵されるＣＰＵやメモリ、ハードディスクなどのハードウェア資源を用いて、当該システム構築装置１００で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体（可搬メモリ等）に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【００３７】
図６は、システム構築装置１００をコンピュータで実現する場合におけるハードウェア構成例を示す図である。図６に示すシステム構築装置１００は、それぞれバスＢで相互に接続されているドライブ装置２００、補助記憶装置２０２、メモリ装置２０３、ＣＰＵ２０４、インタフェース装置２０５、表示装置２０６、及び入力装置２０７等を有する。
【００３８】
システム構築装置１００での処理を実現するプログラムは、例えば、ＣＤ−ＲＯＭ又はメモリカード等の記録媒体２０１によって提供される。プログラムを記憶した記録媒体２０１がドライブ装置２００にセットされると、プログラムが記録媒体２０１からドライブ装置２００を介して補助記憶装置２０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体２０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置２０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００３９】
メモリ装置２０３は、プログラムの起動指示があった場合に、補助記憶装置２０２からプログラムを読み出して格納する。ＣＰＵ２０４（プロセッサ）は、メモリ装置２０３に格納されたプログラムに従ってシステム構築装置１００に係る機能を実現する。インタフェース装置２０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置２０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置２０７はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。なお、システム構築装置１００は、表示装置２０６を備えないこととしてもよい。
【００４０】
以下、システム構築装置１００の各機能部による処理内容をより具体的に説明する。
【００４１】
（構成管理情報取得部１１０による構成管理情報取得処理）
図７〜１３を参照して、構成管理情報取得部１１０による構成管理情報取得処理について説明する。
【００４２】
図７に示すように、構成管理情報取得部１１０は、ＨＷの自動構築スクリプト２１、及びＯＳの自動構築スクリプト２２から、２４に示す構成管理情報を取得し、データ格納部１５０に格納する。構成管理情報取得部１１０は、ＨＷ／ＯＳの自動構築スクリプト２１、２２において下線で示したパラメータを構成管理情報２４として抽出する。取得されたＨＷ／ＯＳの構成管理情報については、例えば図８に示すように表示することも可能である。図８に示す例では、サーバ１とサーバ２が同じネットワークに属し、サーバ３とサーバ４が同じネットワークに属することが示されている。
【００４３】
また、構成管理情報取得部１１０は、図７に示すように、ＡＰの自動構築スクリプト２３から、構成管理情報２５を取得し、データ格納部１５０に格納する。本実施の形態では、ＡＰの自動構築スクリプト２３から取得される構成管理情報２５は、ＡＰの依存関係を示す有向グラフの情報として生成されるものである。この依存関係に基づき、システム構築装置１００の構築実行部１３０は、特定のＡＰと他のソフトウェアとの依存関係等を正しく認識し、特定のＡＰを、依存するソフトウェアとともに迅速にインストールして、設定を行い、起動させることが可能である。以下、ＡＰの自動構築スクリプトから構成管理情報を取得（生成）する処理を図９〜図１３を参照して説明する。
【００４４】
図９に、構成管理情報取得部１１０への入力となるＡＰの自動構築スクリプトの一例を示す。本実施の形態で使用する自動構築スクリプトは、図９に示すように、再利用を意識して複数のブロックに分けて作成される。また、ブロックの中で使用する値（パラメータ）は変数化され、変数の値はブロックの外にまとめて記述される。また、各ブロックには、他のブロックとの依存関係を設定することもできる。
【００４５】
より具体的に、例えばＡＰ（アプリケーション）サーバ（例：Ｗｅｂサーバ）を構築するためのソフトウェアに関しては、自動構築スクリプトは、通常、ソフトウェアのインストールを行う「install_[識別名]」、インストールしたソフトウェアの設定を行う「setting_[識別名]」、設定したソフトウェアをスタートさせる「start_[識別名]」の３のブロックを有する。図９は、識別名＝AAAAというソフトウェアの例について、当該３つのブロックを有することが示されている。また、図９の例では、各ブロックはroleと呼ばれる。
【００４６】
なお、図９は、install/setting/startの３つ全てが揃っている例を示しているが、ＯＳのネットワーク設定のようにsetting/start(reset/stop)しかないもの、ＯＳのユーザ設定のようにsetting(reset)しかないものなどもある。
【００４７】
図１０は、図９に示すようなブロックを適用して、ソフトウェアAAAAのインストールや設定等を行うことでＷｅｂサーバ構築を行う場合のイメージを示す図である。図１０に示すように、ブロックの実行手順を記載した工事手順書（これも、構成管理情報取得部１１０に入力される自動構築スクリプトに含まれる）が準備され、当該工事手順書に従って、各ブロックがロードされ、実行（install/setting/start）される。工事手順書には、対象のサーバ（図１０の例では"Web"）と当該サーバに対して実行するブロックが、実行される順番で記述されている。このような順番により、ブロック間、サーバ間の依存関係を把握できる。また、各ブロックに記述されている依存関係や、パラメータ等によっても依存関係を把握できる。
【００４８】
図１１に示すように、上記のような自動構築スクリプトが構成管理情報取得部１１０に入力され、構成管理情報取得部１１０は、ブロック間やＡＰ間の依存関係を示す有向グラフデータを作成する。
【００４９】
依存関係について説明すると、例えば、[install_AAAA]と[setting_AAAA]に関して、ソフトウェアAAAAはインストールされないと設定できないから、[setting_AAAA]は[install_AAAA]に依存する、という依存関係がある。この場合、本実施の形態では、依存されるほうに矢印が向くように、[install_ AAAA]←[setting_ AAAA]と有向グラフとして記述する。同様に、ソフトウェアAAAAは設定されないと正常に動作しないためスタートできないから、[start_ AAAA]は[setting_ AAAA]に依存する、つまり、[setting_ AAAA]←[start_ AAAA]と記述する。
【００５０】
すなわち、「あるブロックの実行のために前もって実行しておくべきブロック」の２つのブロック間に「依存関係」があるとする。上記の３つのブロックの例では、有効グラフとして、[install_ AAAA]←[setting_ AAAA]←[start_ AAAA]と記述する。構成管理情報取得部１１０は、このような有向グラフに相当する有向グラフデータを作成する。このような依存関係に基づき、構築実行部１３０はＡＰのインストール、設定、開始を実施できる。
【００５１】
なお、依存関係は、単一のソフトウェアモジュール内のみでなく、ソフトウェアモジュール（アプリケーション）間にも存在する。例えば、WebサーバソフトウェアモジュールがDBサーバソフトウェアモジュールを使用し、WebサーバソフトウェアモジュールはDBサーバソフトウェアモジュールがスタートしていないとサービスの提供ができないとする。この場合には、以下の有向グラフで示す依存関係が存在する。
【００５２】
[install_database]←[setting_database]←[start_database]
↑
[install_webserver]←[setting_webserver]←[start_webserver]
自動構築スクリプトの入力がされた構成管理情報取得部１１０は、図１２のフローチャートの手順で有向グラフデータを作成する。
【００５３】
ステップＳ１１）まず、構成管理情報取得部１１０は、一連のブロックを適用する対象となるサーバ情報を取得する。例えば、構成管理情報取得部１１０は、工事手順書に記載されている、一連のブロックの適用対象となるホストの情報を当該サーバ情報として取得することができる。
【００５４】
ステップＳ１２）次に、構成管理情報取得部１１０は、対象のサーバ毎に、自動構築スクリプトにおける複数ブロックをinstall/setting/startの３つのグループに分けノード化する。なお、前述したように、スクリプトの適用対象によっては、installのみ、settingのみ等の場合もある。
【００５５】
ステップＳ１２では、例えば、ソフトウェアＡに関するスクリプトのブロックとしてinstall/setting/startの３つがあり、ネットワーク設定に関するスクリプトのブロックとしてsettingがある場合、構成管理情報取得部１１０は、ソフトウェアＡについてのinstallのノード、settingのノード、startのノードを作成し、ネットワーク設定についてのsettingのノードを作成する。
【００５６】
ステップＳ１３）次に、構成管理情報取得部１１０は、各ブロックに関連する変数（パラメータ）をnetwork/filepath/id/device等のグループに分けて関連付ける。すなわち、ファイルパス、ネットワーク、ユーザ、log、conf、serviceなど、システムを構成する内容によってグルーピングし、一致、不一致、関係性（例：包含関係）を抽出し、その情報をデータ格納部１５０に格納する。より詳細には、ファイルパスは前方一致、ネットワークはセグメント管理、ユーザはidとnameと$home、logはローカルとリモート、confはファイル格納場所と起動時読み込み、serviceは自動起動、起動順序などの観点で、一致、不一致、関係性を抽出する。一例として、ソフトウェアAのsettingにおける設定アドレスがアドレス１であり、ソフトウェアBのsettingにおける設定アドレスがアドレス１である場合、両者は一致の関係があるとして、そのことを示す情報が格納される。
【００５７】
ステップＳ１４）構成管理情報取得部１１０は、依存関係のあるノード間について、ノード間を結びつけるリンク情報を作成する。依存関係は、例えば、工事手順書におけるブロックの実行手順から判断することができる。また、ブロック内に依存関係の記述がある場合には、その記述から判断することもできる。
【００５８】
ステップＳ１５）構成管理情報取得部１１０は、上記の処理により得られたノード情報及びリンク情報、パラメータの関連情報等をサーバ情報に紐付けてデータ格納部１５０に格納する。
【００５９】
図１１の左側には、データ格納部１５０に格納されるデータのイメージが示されている。当該イメージは、右側に示す入力情報に対応するものである。図１１の例では、install_AAAA、setting_AAAA、start_AAAAのノード情報と、これらの間に「install_AAAA←setting_AAAA←start_AAAA」で示される依存関係が存在することを示すリンク情報がデータ格納部１５０に格納される。また、図示するように、各ノードにパラメータが関連付けられている。
【００６０】
なお、上記の例では、１つのＡＰに関する有向グラフを示している。図１３に他の例として、複数のＡＰ（ソフトウェアモジュール）の有向グラフを結び付けて依存関係が表される例を示す。図１３は、ＡＰ１（例：Ｗｅｂ）とＡＰ２（例：ＬＢ（ロードバランシング））との間に依存関係がある場合の例を示している。構築実行部１３０は、このようなＡＰ間の依存関係に基づいて、特定のＡＰを目的にインストールする場合でも、当該特定のＡＰが依存するＡＰ、及び当該特定のＡＰに依存されるＡＰもともにインストールし、特定のＡＰを正しく動作させることができる。
【００６１】
（システム構築装置１００の動作手順）
次に、スケールアウト実行時におけるシステム構築装置１００の動作手順例を図１４のフローチャートに沿って説明する。以下の説明は、図５に示す機能部（動作制御部１２０、構築実行部１３０、サーバ状態情報取得部１４０）の動作説明を含む。図１４に示す動作手順は、動作制御部１２０の制御に基づき実行されるものである。
【００６２】
スケールアウト実行の前の時点において、構成管理情報取得部１１０により、サーバ毎に、ＨＷ／ＯＳ／ＡＰの構成管理情報が取得され、データ格納部１５０に格納されている。また、サーバ状態情報取得部１４０は、サーバ毎にサーバ状態情報（例：起動／停止、ＣＰＵ負荷、メモリ使用率、ＡＰ毎の負荷情報等）を取得し、データ格納部１５０に格納している。
【００６３】
上記の動作によってデータ格納部１５０に格納される情報の例を図１５に示す。
【００６４】
図１５に示すように、サーバ毎に、ＨＷ／ＯＳ／ＡＰ構成管理情報と、状態を示す情報がデータ格納部１５０に格納される。また、図１５には、サーバ５０が停止の状態（仮想マシンとして停止された状態）であることが示されている。また、図１５に示すように、データ格納部１５０は、ＶＭイメージをバックアップとしてとってあるサーバについては、当該ＶＭイメージが格納されている。当該ＶＭイメージは、例えば、ＡＰを含まないＨＷ／ＯＳのＶＭイメージである。データ格納部１５０には、図１５に示す情報以外にも、例えば、予備の物理マシンの情報、ＡＰ（ソフトウェア）等が格納されている。
【００６５】
図１４のステップＳ１０１において、動作制御部１２０は、データ格納部１５０に格納された情報に基づき、例えば、サーバの構成要素であるＡＰ毎に定められた増設ポリシーを、あるＡＰが超えたことを検知する。例えば、ＡＰ毎に増設ポリシーとして、ＡＰ毎に単位時間あたりの平均の同時アクセス数の閾値が定められているとする。そして、例えば、サーバ３にＡＰ１、ＡＰ２、ＡＰ３がある場合に、ステップＳ１０１では、動作制御部１１０が、ＡＰ３の同時アクセス数が閾値を超えたことを検知する。これにより、動作制御部１１０は、サーバ３のＡＰ３に対するスケールアウトを実行すると決定する。
【００６６】
ステップＳ１０２において、動作制御部１１０は、データ格納部１５０における各サーバのＨＷ／ＯＳ構成管理情報に基づき、ステップＳ１０１においてスケールアウトの対象とされたサーバ（スケールアウト元サーバと呼ぶ）に類似する構成の起動中のサーバを、スケールアウトの対象とされたＡＰをインストールする対象のサーバ（スケールアウト先サーバと呼ぶ）として選択する。
【００６７】
スケールアウト元サーバに類似する構成を持つサーバに関し、その類似性はスケールアウトさせるアプリケーションによって定義することができる。例えば、あるアプリケーションについては、スケールアウト元サーバに類似する構成を持つサーバは、スケールアウト元サーバが接続されるネットワークと同じネットワークに接続され、かつ、スケールアウト元サーバのリソース量と同じ量か、それよりも大きな量のリソースを有するサーバであるとして定義される。ここでのリソースは例えばＣＰＵ及び／又はメモリである。また、スケールアウト元サーバとスケールアウト先サーバにおけるＯＳのバージョンが同じという条件を上記ネットワーク及びリソースの条件に加えたものを類似性の定義とするアプリケーションもある。また、スケールアウト元サーバとスケールアウト先サーバにおけるＯＳのバージョンが同じという条件のみを類似性の定義とするアプリケーションもある。更に、スケールアウト元サーバとスケールアウト先サーバにおいて使用しているミドルウェアのバージョンが同じであるという条件を類似性の定義とするアプリケーションも存在する。なお、類似性をスケールアウトさせるアプリケーションに応じて定義することは一例であり、アプリケーションに関わらずに、一律の定義を設けてもよい。
【００６８】
上述した類似性は構成管理情報のパラメータ有無や値の範囲によって判断/設定できる。例えば、接続されるネットワークは、ＮＩＣに割り当てられるＩＰアドレスにより判断できる。例えば、192.168.0.1/24が割り当てられたサーバと、192.168.0.2/24が割り当てられたサーバは同じネットワークに属すると判断できる。
【００６９】
また、スケールアウト元サーバに類似する構成を持ち、かつ、使用中リソース量（例：ＣＰＵ使用率及び／又はメモリ使用率）が予め定めた閾値以下であるサーバを、スケールアウト先サーバとして選択することとしてもよい。
【００７０】
ステップＳ１０２がＹｅｓの場合、すなわち、スケールアウト先サーバが検出された場合、構築実行部１３０は、当該スケールアウト先サーバに対し、スケールアウトの対象とされたＡＰをインストールし、設定し、動作させる。例えば、スケールアウトの対象とされたＡＰがＡＰ３である場合、ＡＰ３をスケールアウト先サーバにインストールし、設定し、動作させる。このとき、構築実行部１３０は、スケールアウト元サーバにおけるＡＰの構成管理情報を用いることで、例えば、ＡＰ３の前にインストールしておかなければならないＡＰがある場合には、当該ＡＰをインストールした後に、ＡＰ３をインストールする。このように、構成管理情報を用いることにより、無駄なく、かつ、目的のＡＰを動作させるために必要なインストール／設定を自動的に行うことが可能である。
【００７１】
ステップＳ１０２の判定がＮｏである場合（スケールアウト元サーバに類似する構成の起動中のサーバがなかった場合）、動作制御部１１０は、データ格納部１５０を参照して、スケールアウト元サーバのＨＷ／ＯＳ構成管理情報に基づき、当該ＨＷ／ＯＳ構成管理情報と同じか類似する構成のＶＭイメージを探す。例えば、スケールアウト元サーバのＶＭイメージがあればそれを使用することができる。
【００７２】
当該ＶＭイメージがある場合、ステップＳ１０６に進み、構築実行部１３０が、例えば停止中のサーバを有する物理マシンを利用することで、当該物理マシンにＶＭイメージをアップロードしてＶＭのＨＷ／ＯＳを構築するとともに、ステップＳ１０３と同様にして、ＡＰをインストールし、動作させる。
【００７３】
ステップＳ１０５の判定がＮｏである場合、すなわち、適用可能なＶＭイメージがない場合、ステップＳ１０７に進み、例えば、停止中のサーバを有する物理マシン、あるいは、予備の物理マシンを利用することで、構築実行部１３０が、スケールアウト元サーバのＨＷ／ＯＳ構成管理情報を用いて、スケールアウト先の物理マシンにＨＷ／ＯＳを構築し、起動する。また、ステップＳ１０８において、構築実行部１３０は、ステップＳ１０３と同様にして、スケールアウト元サーバにおけるＡＰの構成管理情報に基づき、ＡＰをスケールアウト先サーバにインストールし、動作させる。
【００７４】
図１６は、上記のステップＳ１０７、Ｓ１０８の例を示す図である。構築実行部１３０は、データ格納部１５０に格納されているスケールアウト元サーバのＨＷ構成管理情報（パラメータ）を、ＨＷ構築の自動構築スクリプト（これをテンプレートと呼んでもよい）のパラメータ部分に組み込むことで、自動構築スクリプト３１を生成し、これをスケールアウト先のマシンで実行させることにより、スケールアウト先のサーバ（ＨＷ）を構築する。また、構築実行部１３０は、データ格納部１５０に格納されているスケールアウト元サーバのＯＳ構成管理情報（パラメータ）を、ＯＳ構築の自動構築スクリプト（これをテンプレートと呼んでもよい）のパラメータ部分に組み込むことで、自動構築スクリプト３２を生成し、これをスケールアウト先のマシンで実行することにより、スケールアウト先のサーバのＯＳを構築する。また、構築実行部１３０は、データ格納部１５０に格納されているスケールアウト元サーバのＡＰ構成管理情報を用いて、目的とするＡＰの構築のための自動構築スクリプト３３を生成し、これをスケールアウト先のマシンで実行することにより、スケールアウト先のサーバのＡＰを構築する。
【００７５】
＜動作のまとめ＞
上述したように、本実施の形態では、サーバのＨＷ／ＯＳ構成管理情報と、ＡＰの構成管理情報とを分けて保持する。ＨＷ／ＯＳ構成管理情報を用いることで、構成要素（アプリケーション単位）でのスケールアウト先のサーバを迅速に決定でき、ＡＰの構成管理情報を用いることで、当該サーバへのＡＰのインストール等を迅速に行うことができる。
【００７６】
また、世代管理の必要がほとんどないＨＷ／ＯＳはＶＭイメージとして保持し、ＶＭイメージを用いた迅速なデプロイを実施することも可能としている。世代管理が高頻度で発生するＡＰの情報は自動構築スクリプトから生成した構成管理情報として保持することで、世代管理を容易にすることができる。また、上述したとおり、オートスケール先として適用可能なＶＭは、自動構築スクリプトから生成した構成管理情報を用いて作成することも可能である。
【００７７】
構成管理情報の取得はテンプレートに従って実施するため、複数のプラットフォームへ適用が可能である。例えばＫＶＭで構築したＶＭをＥＳＸｉで構築するよう、構成管理情報をもとにコマンドを実行することができる。構成管理情報を用いることで必要なＡＰだけをインストールすることが可能である。構成管理情報から、増設を必要としたサーバの情報をもとに関連する要素を抽出し、当該要素と、スケールアウト先のサーバのＩＰアドレスなどを自動構築スクリプトに組み込むことで、スケールアウト先のＡＰの構築を容易に実施可能である。
【００７８】
（効果について）
以上、説明した本実施の形態に係る技術によれば、例えば図１７（ｂ）、（ｂ）に示すように、必要な機能（図の例ではＡＰ３）のみをスケールアウトすることができコストを抑えることができる。なお、図１７（ａ）はサーバ４３のＨＷ／ＯＳの構築を行ってＡＰ３をインストールする例を示し、図１７（ｂ）は、スケールアウト元サーバと類似の構成を持つ、リソースが空いているサーバ４４を利用し、当該サーバにＡＰ３をインストールする例を示している。このように、ＨＷ／ＯＳの構築の前に、スケールアウト元サーバと類似の構成を持つ、リソースが空いているサーバに対し、必要な構成要素だけをインストールすることによるコスト削減も可能となる。また、ＨＷ／ＯＳ／ＡＰの構築にあたっては、自動構築スクリプトから取得した構成管理情報を使用することで、自動的に構築を行うことができる。
【００７９】
すなわち、本実施の形態の技術により、例えば、以下のような効果が得られる。
【００８０】
（１）スケールアウト先のＶＭを、動作させる直前まで構築し世代管理する必要が無い
本実施の形態では、構成管理情報からスケールアウト先の既存のサーバを選定し、ＡＰのインストール等を行うことが可能であるため、従来技術のようにＡＰを含む全ての要素の構築がなされた仮想マシンのイメージなどは不要となる。また、スケールアウトを必要とする状態のサーバから、必要な機能のみをスケールアウト先に構築することが可能であるため、常に最新かつ必要十分なリソース・機能を持つスケールアウト先を作成することが可能となる。このため、スケールアウト先のメンテナンスなどの運用コスト削減が可能となる。
【００８１】
（２）増設したリソースを本来の目的に使うことができる
本実施の形態では、構成管理情報に基づき、スケールアウト先において必要な構成要素だけを構築することができるため、増設したリソースを本来の目的に使うことができる。また、増設先のＨＷ／ＯＳを既存のリソースから抽出することも可能であるため、大きなコスト削減が可能となる。
【００８２】
（３）増設ポリシーを柔軟に設定可能
また、本実施の形態では、増設ポリシー（所定の判定条件）を構成要素毎に作成可能である。例えば、ある構成要素（例：アプリケーション）はメモリを閾値に、ある構成要素はセッション数、ある構成要素は作成ＩＤ数でなど、これまでサーバ全体でしか設定できなかった増設ポリシーを、構成要素毎に設定できる。また、構成要素毎にスケールアウトが可能であるため、一部の構成要素が閾値を超えたとしても、他の構成要素は増設を行わずに運用が可能であるため、コスト増や構成変更による影響を最小限に抑えることができる。
【００８３】
（実施の形態のまとめ）
以上、説明したように、本実施の形態によれば、複数のサーバによりネットワークサービスを提供するシステムにおいてシステム構築を行うシステム構築装置であって、所定の判定条件に基づいて、前記複数のサーバにおける一のサーバのある構成要素を他のサーバで動作させることを決定する決定手段と、前記一のサーバの構成管理情報に基づいて、前記他のサーバを選択し、当該他のサーバにおいて前記構成要素を動作させる構築手段とを備えることを特徴とするシステム構築装置が提供される。
【００８４】
実施の形態における動作制御部１２０は、決定手段の例であり、構築実行部１３０は、構築手段の例である。
【００８５】
前記構築手段は、例えば、前記一のサーバにおいて使用された自動構築スクリプトから取得された構成管理情報に基づいて、前記他のサーバとして、前記一のサーバの構成と類似する構成を有するサーバを選択する。
【００８６】
前記一のサーバの構成と類似する構成を有するサーバは、例えば、当該一のサーバが接続されるネットワークと同じネットワークに接続され、当該一のサーバのリソースの量以上の量のリソースを有するサーバである。
【００８７】
前記構築手段は、前記他のサーバとして、前記一のサーバの構成と類似する構成を有し、かつ、リソースに空きのあるサーバを選択することとしてもよい。
【００８８】
前記構築手段は、前記他のサーバを選択できない場合において、前記一のサーバのイメージを用いて新たにサーバを構築し、当該サーバにおいて前記構成要素を動作させる、又は、前記一のサーバの構成管理情報を適用した自動構築スクリプトを用いて新たにサーバを構築し、当該サーバにおいて前記構成要素を動作させることとしてもよい。
【００８９】
前記システム構築装置は、前記構成要素に関する自動構築スクリプトに含まれる所定要素をノードとして抽出し、ノード間の依存関係に基づいて、ノード間のリンクを作成し、当該ノードの情報及びリンクの情報から有向グラフを作成し、当該有向グラフのデータを前記構成要素に関する構成管理情報として取得する構成管理情報取得手段を更に備えてもよく、前記構築手段は、前記構成要素に関する構成管理情報に基づいて、サーバにおける前記構成要素の構築を行い、当該構成要素を動作させることとしてもよい。
【００９０】
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００９１】
１００  システム構築装置
１１０  構成管理情報取得部
１２０  動作制御部
１３０  構築実行部
１４０  サーバ状態情報取得部
１５０  データ格納部
２００  ドライブ装置
２０１  記録媒体
２０２  補助記憶装置
２０３  メモリ装置
２０４  ＣＰＵ
２０５  インタフェース装置
２０６  表示装置
２０７  入力装置
【図１】
2018142277.tif 000003
【図２】
2018142277.tif 000004
【図３】
2018142277.tif 000005
【図４】
2018142277.tif 000006
【図５】
2018142277.tif 000007
【図６】
2018142277.tif 000008
【図７】
2018142277.tif 000009
【図８】
2018142277.tif 000010
【図９】
2018142277.tif 000011
【図１０】
2018142277.tif 000012
【図１１】
2018142277.tif 000013
【図１２】
2018142277.tif 000014
【図１３】
2018142277.tif 000015
【図１４】
2018142277.tif 000016
【図１５】
2018142277.tif 000017
【図１６】
2018142277.tif 000018
【図１７】
2018142277.tif 000019