本文へジャンプ

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


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

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

  • 閉じる [x]

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

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

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


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

  • 閉じる [x]

AMI を使って WebSphere アプリケーションを作成する

クラウドの中でインスタンスを起動する方法と、そのインスタンスにサンプル・アプリケーションをデプロイする方法を学ぶ

Nathan A. Good, Senior Information Engineer, Freelance Developer
Nathan Good
Nathan A. Good はミネソタ州の Twin Cities エリアに住んでいます。彼はプロとしてソフトウェア開発やソフトウェア・アーキテクチャー、システム管理などを行っています。彼はソフトウェアを書いている時以外は、PC やサーバーを構築したり、新しい技術について資料を読んだり、そうした技術に取り組んだり、彼の友人達をオープソース・ソフトウェアに移行させようとしたりしています。彼は数多くの本や記事を執筆、あるいは共同で執筆しており、その中には『Professional Red Hat Enterprise Linux 3』や『Regular Expression Recipes: A Problem-Solution Approach』、『Foundations of PEAR: Rapid PHP Development』などがあります。

概要: AMI (Amazon Machine Image) を利用すると、開発者はクラウドにデプロイ可能な作成済みの仮想マシン (VM) のイメージを入手することができます。この機能を利用すると、Web 開発に必要な VM のイメージを作成したり使用したりすることができます。

日付:  2010年 7月 13日
レベル:  初級 この記事の原文:  英語
アクティビティー: 4428 ビュー
お気軽にご意見・ご感想をお寄せください: 


IT 業界では、開発者達が多くの革新的な概念を生み出してきました。一部の概念は、何年も使われた後に、そうした概念を記述する表現が作られました。場合によると、定義の結果としてパターンやプラクティスが少し変更されることもあります。クラウドという用語は、それに該当します。クラウドという用語は、これまで見られなかった方法や、それほど一般的に使われなかった方法で、インターネットを使ってアプリケーションやサービスをホストするプラクティスのことを意味します。

マシンの仮想化における最新のトレンドと組み合わせ、クラウドを使ってアプリケーションをホストすると、従来は実現できなかった、いくつかの注目すべき機能を実現することができます (例えば、個々の仮想サーバーとそのアプリケーション全体をクラウドでホストする、など)。

クラウドを使ってアプリケーションやサービスをホストすることによる 1 つのメリットは、IT インフラストラクチャーを稼働させるのに必要な人員やリソースを、よりコスト効率の高い場所やベンダーに任せられることです。インフラストラクチャーのインストール、構成、保守は専門のベンダーによって行われ、ベンダーはスケールメリットを活用して、より高い価値を提供することができます。

クラウドには、冗長性とディペンダビリティという別の強みもあります。インターネットは元々高度なフォルト・トレランスを実現するように設計されたものであるため、企業はクラウドを使用することで単一障害点をなくすことができます。これは、通常の状況下で 99.999 パーセントのアップタイムを実現するために必要な冗長サーバーやデータ・センター、その他のインフラストラクチャーを持つほどの余裕がない企業にとっては、特にメリットがあります。

ただし、アプリケーションをクラウドに移行することに問題がないわけではありません。第 1 の欠点は、移行前に比較すると制御できる範囲が少なくなることです。アプリケーションやサービスをクラウドに移行すると、何らかの理由で依頼先のベンダーにアクセスできなくなった場合、皆さんのビジネスもおそらくアクセス不能になる、というリスクを受け入れることになります。

第 2 の、ただしもっと明らかな欠点は、セキュリティーです。クラウドに保管されたデータは物理的に誰か他の人の機器の上に存在しており、従ってネットワーク上のその機器を介してサーバーとクライアントの間を移動します。セキュリティー違反のリスクを軽減する手段を講じることはできますが、それでもデータは何らかの危険にさらされます。そこで AMI (Amazon Machine Image) が登場します。

Amazon Machine Image

AMI は暗号化されたマシン・イメージであり、Amazon Simple Storage Service つまり Amazon S3 に保管されます (AMI については「参考文献」を参照)。このイメージは仮想マシン (VM) のスナップショットを「記録した」ものであり、デプロイしたり起動したりすることができます。このイメージは起動すると、まるで本物のサーバー上で実行されているかのようであり、その違いをリモートから判断することはできません。

必要なコンポーネント

この記事を最大限に活用するためには、以下のコンポーネントをマシンにインストールしておく必要があります。

AMI には 2 つのタイプがあり、1 つは既に作成され、Amazon のサービスの中に公開された AMI であり、もう 1 つはユーザー自身が作成する AMI です。この記事では、既存の AMI を利用して IBM WebSphere® のインスタンスをサンプル・アプリケーションと共に実行する方法に焦点を当てます。

AMI は、さまざまなベンダーから入手することができます (例えば Amazon、IBM、Oracle から、またコミュニティーから入手することができます)。AMI Web コンソール (「参考文献」を参照) またはコマンドライン・ツールを使用すると、AMI の一覧を表示することができます。AMI を利用することで、定義済みのイメージを仕様に応じて見つけることや、追加機能のインストールや構成、さらには他の人と AMI を共有したり、AMI を保存して後で使用したりすることなどができます。独自の AMI を作成する方法について、詳しくは「参考文献」を参照してください。

AMI を入手するためには、Amazon Web サービスにアカウントを作成する必要があります (アカウントの作成方法について、詳しくは「参考文献」を参照)。Amazon は有料の AMI に対して課金します。そのため、アカウントの料金と条件に十分注意してから手続きを進めてください。


AMI を選択する

AMI を選択するためには、まず AMI のオペレーティング・システムとして Windows® を使用するのか Linux® を使用するのかを決めます。この記事の例では Linux 用の AMI を使用し、ローカルのオペレーティング・システムとして Ubuntu Linux を使います。この理由は単純で、Ubuntu では AMI のコマンドライン・ツールが非常に使いやすく、apt を使ってインストール可能なパッケージが既に用意されているためです (ただし multiverse リポジトリーを有効にしておく必要があります)。

AMI のタイプを選択したら、Amazon Elastic Compute Cloud (Amazon EC2) のコマンドを使って AMI を操作します。これらのコマンドは、Amazon EC2 ツールをインストールすると利用できるようになります (「参考文献」を参照)。ローカル・ツールを使って AMI のインスタンスを起動する代わりに、AMI 管理コンソールにログインします。Web コンソールを使って AMI を管理することで、ユーザー自身がコマンドライン・ツールのダウンロードやインストールを行う必要がなくなりますが、スクリプト化や自動化を行う場合にはコマンドライン・ツールが便利です。

WebSphere が含まれている AMI

一部の AMI には、特定のオペレーティング・システムを実行する機能に加え、アプリケーション・サーバーやデータベース、その他の構成が用意されています。そうした機能はプリインストールされているため、時間をかけてインストールや構成をしなくても、テストすることや使用することができます。インストールや構成のプロセスは確かに有益ですが、ある環境で実際に使用できるようにあらかじめ構成された AMI を使用した方が時間を節約することができます。

それに該当するものが、最新バージョンの WebSphere が実行状態で含まれている AMI です。これらの AMI を使用することで、他の環境でアプリケーションをテストすることができます。

WebSphere を実行している AMI を、コマンドライン・ツールを使って見つけるためには、以下に示すように、それらのコマンドライン・ツールのインストールをテストする際に使用したコマンドと同じ e2-describe-images コマンドを使い、出力を grep にリダイレクトして websphere という記述を検索します。

ec2-describe-images -o self -o amazon | grep -i "websphere"

AMI ID は ami-XXXXXXX のようなシーケンスです。この AMI ID は、その AMI のインスタンスの起動、そのインスタンスの状態のチェック、そしてそのインスタンスの終了のために必要です。では、AMI を使用した作業を行う前に、この AMI インスタンス上で実行する簡単なサンプル・アプリケーションを作成しましょう。


簡単な Web アプリケーションを作成する

AMI の実際を理解するために、WebSphere にデプロイするための簡単な Web アプリケーションを作成します。このアプリケーションを作成した後、AMI にデプロイし、この Web アプリケーションのサンプル・ページを呼び出し、すべてが正常に動作するかどうかを確認します。そのために、以下の手順を実行します。

  1. 「File (ファイル)」 > 「New (新規)」 > 「Project (プロジェクト)」の順にクリックします。
  2. 「Web」 > 「Dynamic Web Project (動的 Web プロジェクト)」の順にクリックし (図 1)、表示される画面で「Next (次へ)」をクリックします。

    図 1. 新しい動的 Web プロジェクトを追加する
    動的 Web プロジェクトを作成する「Select a Wizard (ウィザードを選択)」ウィンドウのスクリーン・ショット

  3. 「Project name (プロジェクト名)」にプロジェクトの名前を入力します (この例では「mySampleAMIWebApp」を入力します)。
  4. 「Target runtime (ターゲット・ランタイム)」のリストから「IBM WASCE v2.1」を選択し、「Next (次へ)」をクリックします。

    「Target runtime (ターゲット・ランタイム)」のリストに WebSphere Application Server CE v2.1 が表示されない場合には、「New (新規)」をクリックして WebSphere Application Server CE v2.1 をインストールします (図 2)。「New Server Runtime Environment (新規サーバー・ランタイム環境)」ウィンドウの中で、利用可能なサーバーとして IBM WASCE v2.1 が表示されない場合には、「Download additional server adapters (追加サーバー・アダプターのダウンロード)」リンクをクリックします。



    図 2. WebSphere Application Server CE 用の新しいサーバー・ランタイム環境を追加する
    「New Server Runtime Environment (新規サーバー・ランタイム環境)」ウィンドウのスクリーン・ショット。「Download additional server adapters (追加サーバー・アダプターのダウンロード)」リンクは右上にあります。

  5. 「Next (次へ)」をクリックして「Java Runtime Environment (JRE)」を選択します。
  6. 「Browse (ブラウズ)」をクリックし、WebSphere Application Server CE v2.1 用としてアプリケーション・サーバーをインストールするディレクトリーを見つけます (ここで Eclipse 用にインストールしているコンポーネントは既存のアプリケーション・サーバーと通信するためのコネクターにすぎず、アプリケーション・サーバーのファイルそのものではありません)。
  7. 「Finish (完了)」をクリックし、新しいサーバー・アダプターのインストールを完了します。
  8. 「Dynamic Web Project (動的 Web プロジェクト)」のステップに戻り、「Add project to an EAR (EAR にプロジェクトを追加)」チェックボックスにチェックを入れます。

    この Enterprise Archive (EAR) プロジェクトを使用して EAR ファイルを作成し、その EAR ファイルを後で WebSphere Application Server の管理コンソールを使って AMI の WebSphere インスタンスにデプロイします。

  9. 「Finish (完了)」をクリックし、サンプル Web アプリケーション・プロジェクトのセットアップを完了します。

この時点で、ワークスペースに「mySampleAMIWebApp」と「mySampleAMIWebAppEAR」という 2 つの新しいプロジェクトがあるはずです。このアプリケーションの動作を見るためには、「Hello」と現在の時刻と日付を表示する単純な JavaServer Pages™ (JSP) ファイルを追加します。

「File (ファイル)」 > 「New (新規)」 > 「Other (その他)」の順にクリックしてから JSP をクリックし、mySampleAMIWebApp プロジェクトの WebContent フォルダーの中に新しいファイルを作成します。その JSP ファイルの中にリスト 1 の内容を追加します。


リスト 1. 単純な index.jsp ファイル

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%@page import="java.text.DateFormat"%>
<%@page import="java.util.Date"%><html
    xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Example Web App - mySampleAMIWebApp</title>
</head>
<body>
<%
    Date now = new Date();
    String currentDate = DateFormat.getInstance().format(now);

    out.print("Hello, World (it is now ");
    out.print(currentDate);
    out.print(")");
%>
</body>
</html>

この内容を index.jsp ファイルに追加したら、ローカルにインストールされた WebSphere Application Server CE 上で、このファイルをテストします。そのためには Web プロジェクトのコンテキスト・メニューから「File (ファイル)」 > 「Run (実行)」 > 「Run on Server (サーバー上で実行)」の順にクリックします。すると Web ページが表示され、現在の日付が表示されているはずです。

EAR ファイルを作成するために、この EAR プロジェクトを選択し、「File (ファイル)」 > 「Export (エクスポート)」 > 「EAR File (EAR ファイル)」の順にクリックします。覚えやすい任意のエクスポート先を選択します。後で、この EAR ファイルを AMI インスタンスにアップロードします。

これでサンプル・アプリケーション用の EAR ファイルをエクスポートしたので、AMI 上で実行されている WebSphere のインスタンスに EAR ファイルをデプロイすることができます。


Web アプリケーションをデプロイする

この時点で、サンプルの Web アプリケーションがローカルの開発マシン上で実行されているはずです。次のステップでは、AMI 上で実行されている WebSphere インスタンスに先ほどの EAR をデプロイします。

AMI のインスタンスが実行されているかどうか、以下のコマンドを使って確認します。

ec2-describe-instances

もしインスタンスが実行されていない場合には、以下のコマンドを入力してインスタンスを起動します。インスタンスを起動する際に (インスタンスにキーを提供する) -k フラグを使用すると、インスタンスの起動後、SSH を使ってインスタンスと通信することができます。

ec2-run-instances ami-XXXXXXXX -k ec2-keypair

このアプリケーションをデプロイするためには、WebSphere の Web 管理コンソールを使って AMI WebSphere インスタンスを操作します。リスト 2 のコマンドを使用して、WebSphere のコンソールのポートを有効にします。


リスト 2. AMI と通信できるようにポートを有効にする

ec2-authorize default -p 22
ec2-authorize default -p 9060
ec2-authorize default -p 9080
ec2-authorize default -p 24000
ec2-authorize default -p 24001
ec2-authorize default -p 24003

これらのポートを有効にする際には、1 度 SSH を使用して AMI に接続し、必要な使用許諾条件をすべて受け入れます (必ず使用許諾条件をしっかり読み、実際にその条件を受け入れます)。すると、新しい AMI は少し処理を行い、それから完全に利用可能になります。また、virtuser というユーザー用のパスワードを設定する必要があります。後ほど、このパスワードを使って WebSphere Application Server の管理コンソールにログインします。

WebSphere の Web コンソールに接続されて、以下のメッセージが表示されるまで待ちます。

Instance ready for use...
$ ip-XXX-XXX-XXX-XXX: ~:

この AMI の準備が整うと、この AMI の DNS 名をローカルの Web ブラウザーに入力することで、WebSphere の Web コンソールを表示することができます。この DNS名は ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com のようなものであり、AMI が稼働状態になると ec2-describe-instances コマンドの出力の中に表示されます。

WebSphere の Web 管理コンソールにログインします。そのためには、WebSphere の Web 管理コンソールの URL までナビゲートし、その時に表示されるリストから AppSvr01_Nodeo1 を選択します。ユーザー名として virtuser、パスワードとして先ほど指定したものを使います。


結果を表示する

これで AMI が稼働状態になり、WebSphere の Web 管理コンソールを使ってEAR をデプロイしたので、アプリケーションが正常に AMI で実行されている様子を表示することができます。

結果を表示するためには、AMI の URL、WebSphere Application Server CE アプリケーションのデフォルトのポート (9080)、そしてアプリケーションの名前をブラウザーに入力します。完全な URL は http://ec2-XXX-XXX-XXX-XXX.compute-1.amazonaws.com:9080/mySampleAMIWebApp/ のようなものになります。すると図 3 のような結果が表示されるはずです。


図 3. ブラウザーに表示されたサンプル・アプリケーション
サンプル・アプリケーションのスクリーン・ショット。画面には「Hello, World」と表示されています。

結果の表示を確認したら、以下のコマンドを使って AMI のインスタンスを終了します。

ec2-terminate-instances i-XXXXXXXX

注: Amazon は実行されているインスタンスに対して課金します。


まとめ

AMI は驚くべき技術です。AMI を利用することで、さまざまな環境や設定の下でアプリケーションのテストや実行ができ、サーバー・ハードウェアやオペレーティング・システムのライセンスを購入する必要がありません。また、アプリケーション・サーバーやデータベースなどのミドルウェアを使った構成や管理も行うことができます。

Amazon は、コマンドラインまたは AMI Web 管理コンソールを使って AMI を発見、起動、管理するためのツールを提供しています。この記事ではコマンドライン・ツールを使うことで、クラウドの仮想サーバー上にある WebSphere Application Server CE のインスタンスを起動し、オペレーティング・システムとして Linux を実行する方法について学びました。そしてそのインスタンスにサンプル・アプリケーションをデプロイし、単純な Web アプリケーションをクラウドの中で実行しました。


参考文献

学ぶために

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

議論するために

著者について

Nathan Good

Nathan A. Good はミネソタ州の Twin Cities エリアに住んでいます。彼はプロとしてソフトウェア開発やソフトウェア・アーキテクチャー、システム管理などを行っています。彼はソフトウェアを書いている時以外は、PC やサーバーを構築したり、新しい技術について資料を読んだり、そうした技術に取り組んだり、彼の友人達をオープソース・ソフトウェアに移行させようとしたりしています。彼は数多くの本や記事を執筆、あるいは共同で執筆しており、その中には『Professional Red Hat Enterprise Linux 3』や『Regular Expression Recipes: A Problem-Solution Approach』、『Foundations of PEAR: Rapid PHP Development』などがあります。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


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=Web development,
ArticleID=506847
ArticleTitle=AMI を使って WebSphere アプリケーションを作成する
publish-date=07132010
author1-email=mail@nathanagood.com
author1-email-cc=