IBM SmartCloud Enterprise についてのヒント: 複雑なトポロジーをデプロイする

IBM Cloud でデプロイメント・ユーティリティー・ツールを使用する

この記事では、著者が作成したデプロイメント・ユーティリティー・ツールの背景にある概念の詳細と、そのツールを使用して複雑なトポロジーのアプリケーションを IBM SmartCloud Enterprise にデプロイする方法について説明します。このツールは IBM SmartCloud Enterprise オファリングには含まれていません。著者の言う「複雑なトポロジー」というのは、複数のリソース (インスタンス、ストレージ、アドレス等々) を含むトポロジーのことや、スクリプトを起動して相互接続やソフトウェアのセットアップをすることができるトポロジーのことを意味します。

Dominique Vernier, IT Architect, IBM

Dominique Vernier photoここ数年、Dominique Vernier は Java 技術とクラウド・アーキテクチャーを中心とした業務を行っています。また彼は非常に長く情報技術に従事しており、メッセージング、データベース、SOA、EAI、クライアント/サーバー、C/C++、既存フレームワークなどに関して幅広い知識を得ています。また彼は、通信、CRM、ロジスティクス、保険などの業界にも幅広い知識を持っています。彼はステート・エンジンとリソース管理に関する 4 件の特許と共同特許を持っています。現在は South-West Europe Cloud Center of Excellence で、プライベートおよびパブリック・ソリューションのための Smart Business Development and Test Cloud に従事しています。


developerWorks 貢献著者レベル

2011年 9月 09日

この記事で紹介するデプロイメント・ユーティリティー・ツールを使用すると、1 つの入力ファイルをベースに複数のリソースを IBM SmartCloud Enterprise 上でプロビジョニングすることができます (ただしこのツールは IBM SmartCloud Enterprise オファリングには含まれていません)。例えば現在、ストレージを追加したサーバーをデプロイしようとする場合には、IBM Cloud ポータルを使用してリクエストを起動し、ストレージを作成した後に別のリクエストを作成してサーバーを作成し、ストレージを追加する必要があります。しかしこのデプロイメント・ユーティリティー・ツールを使用する場合には、各リクエストの記述を含む 1 つのファイルを作成し、1 つのリクエストの複数の属性から別のリクエストの複数の属性を参照することができます。

また、n 層アプリケーションのように (複数のサーバーが相互に関連する) 複雑なインフラストラクチャーをデプロイする場合には、各リソースのプロビジョニングの順序を最初に考え、それから各リソース同士を関連付ける必要があります。しかしこのツールは各リソースの機能上の依存関係に基づき、デプロイメントの順序を発見してくれます。

それ以外の機能としては、IBM Cloud プラットフォーム上でリソースを直接管理することができます。例えば、このツールによってインスタンス、アドレス、ボリューム、イメージを容易に管理することができます。また、複数のインスタンス、ボリューム、アドレスを 1 つのリクエストで作成することもできます。

: この記事で説明するデプロイメント・ユーティリティー・ツールは、暗黙的またはそれ以外の形での保証なしに、現存するままの状態で提供されます。作業を開始する前に、ご使用条件をご覧ください。

また、このツールをダウンロードすると得られるディストリビューション・ファイルの中に、上記の操作の多くがオンライン動画として含まれています。

それでは、このツールの背景にある概念について調べてみましょう。

デプロイメント・ユーティリティー・ツールが持つ概念

このデプロイメント・ユーティリティー・ツールを使用すると、IBM Cloud にインフラストラクチャーをデプロイすることができます。このツールには、入力ファイルを処理するエンジンと、ユーザーが新しいデプロイメント・ファイルを作成、実行するための Eclipse プラグインがあります。

入力ファイルには、ボリュームやインスタンスなどのデプロイメントに対するリクエストが含まれています。各リクエストには、パラメーターがいくつもあります。各リクエスト・パラメーターにはリテラル値、つまり式を含めることができます。式は別のリクエストの別のパラメーターの値を参照します。

リクエストと、リクエスト同士を関連付ける式がわかると、リクエストを各頂点とし、2 つのリクエスト間の関連性を各辺とするグラフを、ソース・リクエストの式に基づいて作成することができます。

このデプロイメント・ユーティリティー・ツールは、リクエスト間の式によって作成される依存関係を分析し、各リクエストの実行順序を判断します。これはグラフ上でトポロジーによるソート・アルゴリズムを使用することで行われます。

リクエストが実行される前に、このデプロイメント・ユーティリティー・ツールは既にデプロイされているリクエストを考慮した上で、各式を評価します。トポロジーによるソートのおかげで、あるリクエストに別のリクエストを参照する式が含まれている場合、その別のリクエストが既にデプロイされていることがわかるため、その式によって、実行後でないと得られないリクエスト属性 (例えばシステムによって生成される IP アドレスなど) も参照できることがわかります。

また、このデプロイメント・ユーティリティー・ツールは、いくつかのリクエストを同時に起動することによってデプロイメントに要する時間を最小限に抑えられるかどうかもチェックします。並列実行されるリクエストの最大数も設定することができます。

このツールの目標は、1 つのリクエストをデプロイするための機能を提供することではなく、複雑なインフラストラクチャーをデプロイするための多様なリクエストを調整することです (1 つのリクエストをデプロイする場合には、イメージをカスタマイズする手法を使用することができます)。

このツールが持つ概念のなかには対処しなければならない 1 つの制約があります。それは、あるユーザーの特定のタイプのリソース (インスタンス、イメージ、ストレージ) の名前はすべて一意でなければならないことです。

この概念を 1 つの例で示しましょう。2 つのサーバー (WebSphere Application Server とデータベース・サーバー) をデプロイしなければならないとします。データベース・サーバーには、既存のボリュームの複製であるボリューム Vol が必要であり、WAS には、JDBC 接続をセットアップするためにデータベースの IP アドレスが必要です。

  1. イメージをカスタマイズする手法として、必要なパラメーターやスクリプトを用いて WAS と DB サーバーを表現することで、カスタム・イメージを作成します。この例では、少なくとも WAS イメージに DBIPAddress パラメーターが必要です。
  2. 各リクエストとそのリクエストの属性を含むリクエスト・ファイルを作成します。DB リクエストの属性の 1 つはボリューム・リクエストを参照し、WAS の DBIPAddress パラメーターの 1 つは DB リクエストを参照します。
  3. ボリューム・リクエストは <volumeRequest ifExists="SKIP" label="Vol" location="RTP" format="ext3" size="SMALL"/> のようになります。
  4. DB リクエストは <instanceRequest ifExists="SKIP" label="DB2" imageID="20003517" instanceType="COP32.1/2048/60" keyName="DVE_User" iP="" volume0ID="Expr:Vol"/> のようになります。
  5. WAS リクエストは以下のようになります。
    <instanceRequest ifExists="SKIP" label="WAS" imageID="20004761"
     instanceType="COP32.1/2048/60" keyName="DVE_User" iP="">
    <configuration>
            <keyValue attribute="DB2IPAddress" value="Expr:DB2:IP"/>
            <keyValue attribute="WASAdminUser" value="wasadmin"/>
            <keyValue attribute="WASAdminPassword" value="WasAdminPassword"/>
            <keyValue attribute="WASProfileType" value="all"/>
            <keyValue attribute="WASAugmentList" value="null"/>
    </configuration>
    </instanceRequest>
  6. これらのリクエストすべてを 1 つのファイルにまとめ、デプロイメント・ユーティリティー・ツールに送信して IBM Cloud にデプロイします。そうしたファイルを作成する際に Eclipse プラグインが役立ちます。
  7. デプロイメント・ユーティリティー・ツールはリクエストをソートし、複数の式から依存関係を発見します。それらの依存関係によって最初にボリューム・リクエストが実行され、次に DB リクエストが実行され、そして最後に WAS リクエストが実行されます。
  8. DB サーバーがデプロイされると、DB サーバーの IP アドレスとして式 Expr:DB2:IP が評価されます。この式の評価は WAS がデプロイされる前に行われます。

では、このデプロイメント・ユーティリティー・ツールの機能について説明しましょう。


デプロイメント・ユーティリティー・ツールの機能

この IBM Cloud デプロイメント・ユーティリティー・ツールには以下の機能があります。

  • このツールは Eclipseプラグインですが、コマンドラインから実行することもできます。
  • このツールを使用することで、デプロイメント・ファイルや、ログ・ファイル、インフラストラクチャーのデプロイメントに必要なその他すべてのファイルを保持する Eclipse プロジェクトを作成することができます。
  • プラグインには、デプロイメント・ファイルを作成するためのエディターがあります。デプロイメント・ファイルには、IBM Cloud にデプロイしなければならないインスタンス、ボリューム、IP アドレス、キー・ペアと、デプロイメントの際に起動しなければならないスクリプトが記述されています。
  • このツールは、シミュレーション・モードまたはリアル・モードでデプロイメント・ファイルを起動することができます。
  • インスタンス、イメージ、IP、キー・ペア等を管理することができます。
  • イメージやインスタンスのドキュメントを開くことができます。
  • デプロイメント・ファイルに記述されたバックアップ・インスタンスを提供することができます。
  • デプロイメント・ファイルに記述されたバックアップ・インスタンスと削除インスタンスを提供することができます。
  • デプロイメント・ファイルに記述された、削除されたインスタンスをリストアすることができます。
  • 追加したボリュームを使用して 1 つのリクエストの中で 1 ~ N 個の同一インスタンスを作成することができます。
  • 1 ~ N 個の IP、1 ~ N 個のボリュームを 1 つのリクエストで作成することができます。

このツールは進化を続けているため、この機能リストは膨大なものではありません。最新バージョンに関しては IBM SmartCloud Enterprise デプロイメント・ユーティリティー・ツールのサイトを調べてください。

では、このデプロイメント・ユーティリティー・ツールとその機能を詳しく調べてみましょう。


デプロイメント・ユーティリティー・ツールの詳細

デプロイメント・ユーティリティー・ツールに関する以下の内容について、詳細に調べてみましょう。

  • デプロイメント・ファイル
  • リソースの管理機能
  • 1 つのリクエストで複数のインスタンスを作成する機能
  • 1 つのリクエストで複数のボリュームとアドレスを作成する機能

デプロイメント・ファイル

デプロイメント・ファイルでは、トポロジーを構成するインスタンス、ボリューム、アドレス、キー・ペアが指定されます。

エンジンが起動されると、デプロイメント・ファイルが読み込まれることになり、IBM Cloud 上でさまざまなリクエストが適切な順序で実行されます。

各項目に対し、その項目のさまざまなパラメーターを「Properties (プロパティー)」タブを使用して指定します。

さまざまなインスタンスに対し、ツールは必要なパラメーターをイメージの定義から自動的に取得します。

リソースが既に存在している場合には、このリソースのデプロイメントを停止するリソース・リクエスト、またはこのリソースの作成をスキップするリソース・リクエストが設定されます。

各デプロイメント・ファイルに対し、デプロイされる各リソースの名前を作成するために使われることになるストリングを指定することができます。このストリングは Java の String.format に従う必要があります。例えば、DEMO_%s_1 でリソース名が MyInstance の場合には DEMO_MyInstance_1 という名前が生成されます。この方法により、このストリングを変更するだけで、同じデプロイメント・ファイルを使用する同じ環境を複数作成することができます。

図 1. MyDeployment の画面
MyDeployment の画面

リソースの管理機能

「Instances View (インスタンス・ビュー)」には、ユーザーに追加されたすべてのインスタンスが一覧表示されます。またこのビューには、インスタンスの「Save (保存)」、「Delete (削除)」、「Restart (再起動)」などの機能と、1 つのリクエストで複数のインスタンスを作成する「Create (作成)」機能もあります。

図 2. 「Instances View (インスタンス・ビュー)」
「Instances View (インスタンス・ビュー)」

「Volumes View (ボリューム・ビュー)」には、ユーザーに追加されたすべてのボリュームが一覧表示されます。またこのビューには、ボリュームの「Clone (クローン作成)」や「Delete (削除)」などの機能と、1 つのリクエストで複数のボリュームを作成する「Create (作成)」機能もあります。

図 3. 「Volumes View (ボリューム・ビュー)」
「Volumes View (ボリューム・ビュー)」

「IP View (IP ビュー)」には、ユーザーに追加されたすべての IP アドレスが一覧表示されます。またこのビューには、IP アドレスの「Delete (削除)」などの機能と、1 つのリクエストで複数の IP アドレスを作成する「Create (作成)」機能もあります。

図 4. 「IP View (IP ビュー)」
「IP View (IP ビュー)」

「Error Log (エラー・ログ)」ビューには、現在のデプロイメントに関する情報が表示されます。

図 5. 「Error Log (エラー・ログ)」
「Error Log (エラー・ログ)」

1 つのリクエストで複数のインスタンスを作成する機能

このデプロイメント・ユーティリティー・ツールを使用して、1 つのアクションで複数のインスタンスを作成します。

  1. データ・センターからイメージを選択します。
    図 6. インスタンスを作成する: イメージを選択する
    インスタンスを作成する: イメージを選択する
  2. 作成したいインスタンスの数、名前 (各インスタンスにインデックスが追加されます)、サイズ、キー・ペアなどを選択します。
    図 7. インスタンスを作成する: インスタンスを定義する
    インスタンスを作成する: インスタンスを定義する

各インスタンスに対して新しいボリュームを要求することもできます。

1 つのリクエストで複数のボリュームとアドレスを作成する機能

このデプロイメント・ユーティリティー・ツールでは、1 つのリクエストで複数の IP アドレスを非常に単純に作成することができます。データ・センターとお好みの VLAN を単純に選択し、「Finish (完了)」をクリックします。

図 8. 複数のアドレスを作成する
複数のアドレスを作成するウィンドウ

エンジンのパラメーター化を考慮することで、リクエストは並行に送信されます。

また、(インデックスによる接尾辞付きの) 名前、場所、サイズ、フォーマットを指定することで、1 つのリクエストで複数のボリュームも容易に作成することができます。

図 9. 複数のボリュームを作成する
複数のボリュームを作成する

エンジンのパラメーター化を考慮することで、リクエストは並行に送信されます。


まとめ

このデプロイメント・ユーティリティー・ツールを使用すると、提供する必要のあるリクエストのすべてを記述するデプロイメント・ファイルを作成することで、複雑なトポロジーを IBM Cloud にデプロイすることができます。また、任意の数のインスタンス、ストレージ、IP アドレスを 1 度に作成することができ、IBM Cloud でのリソースの管理も容易になります。設定をウィザードで行えるこのツールは、誰でも容易に使用することができます。

このツールを使う上での注意点

現在、このツールは保証なしに、現存するままの状態で提供され、IBM SmartCloud Enterprise オファリングには含まれていないことを思い出してください。このツールを利用するためには、「IBM SmartCloud Enterprise デプロイメント・ユーティリティー・ツール」にサインインしてください。また、コメントを投稿できるフォーラムもあります。このツールやこれらのフォーラムにアクセスするためには、IBM SmartCloud Enterprise プラットフォームのアカウントが必要です。

参考文献

学ぶために

製品や技術を入手するために

  • IBM SmartCloud Enterprise で利用可能な製品イメージを調べてみてください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=755503
ArticleTitle=IBM SmartCloud Enterprise についてのヒント: 複雑なトポロジーをデプロイする
publish-date=09092011