仮想システム・パターンはシステムのトポロジー・パターンであり、Workload Deployer のカタログに含まれる仮想イメージを使用して作成することができます。Workload Service のコンテキストでは、基本的に Workload Deployer のカタログは SmarterCloud のイメージ・カタログから選択された一連の仮想イメージを含んでいます。これらの仮想イメージを組み合わせると、仮想システム・パターンを作成することができます。また、スクリプト・パッケージを使用することで、仮想イメージの一部をカスタマイズすることもできます。
このチュートリアルでは、共有のモニター・サーバーに仮想システムを接続する方法について学びます。
このチュートリアルでは、皆さんが IBM SmarterCloud Application Services ファミリーのオファリングを利用する資格を持っているものとします。具体的には、Workload Service の専用インスタンスを持つ必要があり、仮想システム・パターンについてもある程度理解している必要があります。
また、IBM Tivoli Monitoring サーバーが IBM SmarterCloud Enterprise 上にセットアップされている必要があります。SmarterCloud にはプレリリース・バージョンの Tivoli Monitoring V6.2.2.1 があります。IBM SmarterCloud ポータルにログインし、図 1 に示すように「Add Instance (インスタンスの追加)」ウィンドウで丸印の付いたイメージを選択し、この Tivoli Monitoring サーバーの専用インスタンスを作成します。
図 1. Tivoli Monitoring 6.2.2.1 のプレリリース・インスタンスを Tivoli Monitoring サーバーに追加する
この Tivoli Monitoring サーバーを、いくつもの仮想システムをモニターできる共有サーバーと考えてください。Tivoli Monitoring サーバーのインスタンスがプロビジョニングされたら、その Tivoli Monitoring のインスタンスの IP アドレスをメモし、Tivoli Enterprise Portal にアクセスします。URL は http://<ITM インスタンスの IP アドレス>:1920///cnp/kdh/lib/cnp.html です。
このチュートリアルはスクリプト・パッケージを使用して IBM Workload Deloyer の仮想イメージをカスタマイズします。こうすることで、仮想イメージのインスタンスを Tivoli Monitoring サーバーで自動的に繰り返しモニターできるようになります。仮想システムをモニターするには、図 2 に示す 4 つのステップを実行します。
図 2. 仮想システムをモニターするためのステップ
ステップ 1: Tivoli Monitoring ソフトウェアの OS エージェントをインストールして構成するためのスクリプト・パッケージを作成する
スクリプト・パッケージは zip ファイルであり、このファイルの中には、メインの実行可能ファイルから呼び出される一連のスクリプトや、スクリプトの実行を支援する成果物が含まれています。例えば、itmOS4SCAS.zip というスクリプト・パッケージを見てください。このパッケージには以下の 3 つのファイルが含まれています。
- cbscript.json: スクリプト・パッケージを構成するためのメタデータを含んでいます。
- itm.sh: メインの実行可能ファイルです
- li6263-lz.tar: 大規模な tar アーカイブです。
図 3. スクリプト・パッケージの内容
Linux OS エージェントをインストールするためのシェル・スクリプト
では、メインの実行可能ファイルである itm.sh を見てみましょう。itm.sh はシェル・スクリプトであり、仮想システムの一部としての仮想マシンに Linux OS エージェントをインストールします。
リスト 1. Linux OS エージェントをインストールするためのシェル・スクリプト
#! /bin/sh
SCRIPT_LOCATION=/tmp
LOG_LOCATION=/tmp/SCAS_scriptpkg_logs
if [ ! -e $LOG_LOCATION ]; then
mkdir -p $LOG_LOCATION
fi
export LOGFILE=$LOG_LOCATION/itmAgentInstall.log
. /etc/virtualimage.properties #1
echo "Begin Linux OS Agent Install" > $LOGFILE
echo "Incoming TEMS_SERVER: $TEMS_IP" >> $LOGFILE #1
echo "Checking if IBM JDK is installed" >> $LOGFILE
# Install IBM JDK if needed
if [ ! -e /opt/IBM/ibm-java-i386-60 ]; then #2
echo "IBM JDK not installed. Prereq failed. Returning
without installing ITM" >> $LOGFILE
exit 1
fi
echo "IBM JDK Installed, setting JAVA_HOME" >> $LOGFILE
export JAVA_HOME=/opt/IBM/ibm-java-i386-60
#Check SELinux. Must be disabled for install #3
SELinux_changed=false
if [ "`cat /selinux/enforce`" -eq "0" ]; then
echo "SELinux is not enforced. Nothing to do." >> $LOGFILE
else
echo "SELinux is enforced. Temporarily turning off enforcement" >> $LOGFILE
echo 0 >/selinux/enforce
SELinux_changed=true
fi
#Extract Linux Agent Installer, Configure and Run it.
ITM_DIR=/opt/IBM/ITM
mkdir -p /tmp/ITM
pushd /tmp/ITM
echo "Extracting li6263-lz.tar to /tmp/ITM" >> $LOGFILE
tar -xvf ${SCRIPT_LOCATION}/li6263-lz.tar #4
echo "Setting TEMS_IP to ${TEMS_IP}" >> $LOGFILE
cat silent_config.txt | sed -e "s/<TEMS_IP>/${TEMS_IP}/" >
silent_config.txt.tmp
cat silent_config.txt.tmp > silent_config.txt
echo "Installing lz" >> $LOGFILE
./silentInstall.sh
popd
#Check if Linux Agent is running #5
$ITM_DIR/bin/itmcmd agent stop lz
sleep 10
export installDir=$ITM_DIR
export CANDLEHOME=$installDir
chmod -R 755 $installDir/*
update_environment( )
{
echo "Updating environment variable parameters" >> $LOGFILE
export ENV_FILE=$CANDLEHOME/config/lz.ini
cat ${ENV_FILE}| sed 's/'KDC_FAMILIES'/'#KDC_FAMILIES'/' >
${ENV_FILE}.tmp
cat ${ENV_FILE}.tmp> ${ENV_FILE}
rm -f ${ENV_FILE}.tmp
echo -e "`cat ${ENV_FILE}` "\\n"KDC_FAMILIES=ip.pipe
port:1918 ip.spipe
use:n sna use:n HTTP:1920"> ${ENV_FILE}
echo -e "`cat ${ENV_FILE}` "\\n"IRA_DEBUG_EVENTEXPORT=Y ">
${ENV_FILE}
echo -e "`cat ${ENV_FILE}` "\\n"IRA_DEBUG_PRIVATE_SITUATION=Y ">
${ENV_FILE}
echo "environment variable updated successfully" >> $LOGFILE
}
############function to update iptables######
update_iptables( )
{
echo "Updating iptables"
export IP_FILE=/etc/sysconfig/iptables >> $LOGFILE
cat ${IP_FILE}| sed 's/COMMIT/#ITM IPTABLES CONFIGURATIONS/' >
${IP_FILE}.tmp
cat ${IP_FILE}.tmp> ${IP_FILE}
cat ${IP_FILE}| sed 's/-A RH-Firewall-1-INPUT -j REJECT
--reject-with
icmp-host-prohibited/#-A RH-Firewall-1-INPUT -j REJECT
--reject-with icmp-host-prohibited/' > ${IP_FILE}.tmp
cat ${IP_FILE}.tmp> ${IP_FILE}
rm -f ${IP_FILE}.tmp
echo -e "`cat ${IP_FILE}` "\\n"-A INPUT -m tcp -p tcp
--dport 1918 -j ACCEPT"> ${IP_FILE}
echo -e "`cat ${IP_FILE}` "\\n"-A INPUT -m udp -p udp
--dport 1918 -j ACCEPT"> ${IP_FILE}
echo -e "`cat ${IP_FILE}` "\\n"-A OUTPUT -m tcp -p tcp
--dport 1918 -j ACCEPT"> ${IP_FILE}
echo -e "`cat ${IP_FILE}` "\\n"-A OUTPUT -m udp -p udp
--dport 1918 -j ACCEPT"> ${IP_FILE}
echo -e "`cat ${IP_FILE}` "\\n"-A RH-Firewall-1-INPUT
-j REJECT --reject-with icmp-host-prohibited"> ${IP_FILE}
echo -e "`cat ${IP_FILE}` "\\n"COMMIT"> ${IP_FILE}
/sbin/service iptables restart
echo "updating iptables" >> $LOGFILE
}
############function to start itm agent######
start_itmagent()
{
echo "Restarting ITM agent" >> $LOGFILE
$CANDLEHOME/bin/itmcmd agent start lz
echo "ITM agent started successfully" >> $LOGFILE
}
echo "calling functions " >> $LOGFILE
update_environment #6
update_iptables #7
start_itmagent #8
echo "functions called successfully" >> $LOGFILE
if $SELinux_changed ; then #9
echo "Reinstating SELinux enforcement" >> $LOGFILE
echo 1 >/selinux/enforce
fi
|
上記のコードで太字にされた数字の部分を説明したものが以下の注記です。
#1: スクリプト・パッケージはスクリプトを実行する際に特定の変数を使用することができます。これらの変数は、仮想システムをデプロイする際に Workload Service のユーザーが値を入力する場合もあれば、そのパターンを設計する際に値が設定される場合もあります。これらの変数は /etc/virtualimage.properties というファイルに含まれます。この例では $TEMS_IP が変数であり、メインの実行可能ファイルは /etc/virtualimage.properties を介してこの変数を認識します。
#2. Java が前提条件であることから、メインの実行可能ファイルは Linux OS エージェントをインストールする前に、Java がインストールされているかどうかを確認します。Java が特定のパスに見つからない場合、このスクリプトは Tivoli Monitoring エージェントをインストールせずに終了します。
#3. Linux OS エージェントをインストールする前に、メインの実行可能ファイルは SELinux (Secure Enhanced Linux) が有効にされているかどうかを確認します。IBM Tivoli Monitoring は enforcing モードをサポートしていません。Tivoli Monitoring のドキュメントによれば、permissive モードまたは disabled モードでないと Tivoli Monitoring のインストールや構成を行うことはできません。しかしインストールや構成が終わると、あらためて SELinux を有効にすることができます。つまりこのスクリプトは一時的に SELinux を enforcing 以外のモードに切り替えます。
#4. 次に、同じパッケージに含まれているバイナリー・ファイル li6263-lz.tar が既知の場所に解凍されます。サイレント・インストールの構成ファイルは Tivoli Monitoring サーバーの IP アドレスを反映して更新されます。そのため、いったん Linux エージェントがインストールされると、Linux エージェントが構成されてサーバーに接続されます。
#5. Linux エージェントはサイレント・インストール・プログラムによって自動的に起動されます。何らかの構成変更を行えるように、エージェントは itm.sh によって停止されます。
#6. Tivoli Monitoring の環境変数が更新されます。
#7. Linux OS エージェントが実行されている VM のファイアウォール・ルールが更新されます。その結果、Linux OS エージェントはポート1918 でモニター・サーバーに接続することができます。
#8. 上記の変更が行われた後、Tivoli Monitoring エージェントが再起動されます。
#9: このスクリプトによって SELinux が無効にされた場合は、あらためて SELinux が有効にされます。
ここで、スクリプト・パッケージのメタデータ・ディスクリプター、cbscript.json を調べてみましょう。このディスクリプターは、スクリプト・パッケージが Workload Deployer のカタログに追加されたときに、スクリプト・パッケージを構成するために必要な全情報を追加するために使用されます。このことからわかるように、スクリプト・パッケージのメタデータには、スクリプト・パッケージのコピー先の場所、スクリプト・パッケージの実行を記録するログの場所、スクリプトに関するあらゆる変数やプロパティーの定義などが含まれています (この例の場合には TEMS_IP という 1 つの変数しかありません)。
リスト 2. スクリプト・パッケージを記述するメタデータ
[
{
name": Install and configure ITM OS agent",
command": sh /tmp/itm.sh",
commandargs": " ,
log": /tmp/SCAS_scriptpkg_logs",
location": /tmp",
timeout": 3600000,
version": 1.0",
path": default_data/Script_Packages/itmOS4SCAS/itmOS4SCAS.zip",
keys":
[
{
scriptkey": TEMS_IP",
scriptvalue": ",
scriptdefaultvalue": 170.224.x.y"
}
]
}
]
|
これで、Tivoli Monitoring ソフトウェアの Linux OS エージェントを任意の仮想マシンにインストールして構成できるスクリプト・パッケージを準備できました。itmOS4SCAS.zip と共に、任意の仮想イメージに Java ランタイムをインストールする別のスクリプト・パッケージをダウンロードすることができます。このスクリプト・パッケージの名前は jdk4SCAS.zip です。
ステップ 2: IWD のカタログにスクリプト・パッケージをインポートする
今度は、このスクリプト・パッケージ (itmOS4SCAS.zip) を Workload Deployer のカタログに追加する必要があります。スクリプト・パッケージを仮想システム・パターンに追加する前に、スクリプト・パッケージがカタログの中になければなりません。
スクリプト・パッケージをインポートするために、Workload Service にログインします。
- 「Catalog (カタログ)」 > 「Script Packages (スクリプト・パッケージ)」の順にクリックします。
- 「Add icon (アイコンの追加)」のプラス記号をクリックして新しいスクリプト・パッケージを作成します。
- 名前として「
InstallOSAgent」と入力します。 - 「OK」をクリックします。
- InstallOSAgent の詳細ページで、「Script Package (スクリプト・パッケージ)」ファイル・フィールドの「Browse... (参照)」をクリックします。
- 皆さんのコンピューター上で itmOS4SCAS.zip ファイルがある場所にアクセスします。
- 「Upload (アップロード)」をクリックします。
- 「Refresh (更新)」アイコンをクリックし、スクリプト・パッケージの詳細を表示します。
- スクリプト・パッケージの情報の大部分は JSON ディスクリプター (cbscript.json) に含まれています。他のすべてのプロパティーに関してはデフォルトを受け入れます。スクリプトの「Executes (実行)」フィールドが、仮想システムを作成するように設定されていることに注意してください。このことから、仮想システムで仮想マシンが作成されると、このスクリプトが自動的に実行されることがわかります。
必要な環境変数の値をすべて入力します。この場合は TEMS_IP 変数がデフォルト値の 170.224.x.y に設定されます。この値を皆さんの ITM サーバーの IP アドレスに変更します。この値の変更は仮想システムをデプロイする前に行うことも可能です。
同様に、InstallJava という別のスクリプト・パッケージを作成することで jdk4SCAS.zip も Workload Deployer カタログにインポートすることができます。
ステップ 3: スクリプト・パッケージと仮想イメージのパーツとを関連付ける
では、スクリプト・パッケージを仮想システム・パターンに追加しましょう。
Workload Service にログインし、以下の操作を行います。
- 「Patterns (パターン)」 > 「Virtual Systems (仮想システム)」の順にクリックします。
- 「Add icon (アイコンの追加)」のプラス記号をクリックして新しい仮想システム・パターンを作成します。名前として「
WebSphereWithMonitoring」と入力します。 - 「OK」をクリックします。
- 右側のパネルで「Edit (編集)」アイコンを選択し、「Pattern Editor (パターン・エディター)」を表示します。
- 左側のパネルで、「Parts selection (パーツ選択)」から IBM WebSphere Application Server v7.0 for IWD パーツをドラッグし、キャンバス上にドロップします。
- 左側のパネルで「Script Packages (スクリプト・パッケージ)」を選択します。
- InstallJava スクリプト・パッケージをドラッグし、既にキャンバス上にある WebSphere パーツの上にドロップします。同じことを InstallOSAgent スクリプト・パッケージについても行います。
- スクリプトの順序が適切であることを確認します。OS エージェントをインストールするよりも前に Java がインストールされるように、実行順序は InstallJava が最初、次が InstallOSAgent でなければなりません。順序を変更する必要がある場合には、「Pattern Editor (パターン・エディター)」で「Ordering (順序付け)」リンクをクリックします。
- キャンバス上で、InstallOSAgent スクリプト・パッケージの「Edit Parameter (パラメーターの編集)」アイコンをクリックします。するとウィンドウが開きます。TEMS_IP 変数の値 (皆さんのモニター・サーバーの IP アドレス) を入力、または編集します。この変数の値がデプロイ時に誰かに変更されないようにするには、このウィンドウの TEMS_IP の横にあるロック・アイコンをクリックし、この値のフィールドをロックします。
- キャンバスの上部にある「Done Editing (編集の完了)」をクリックして仮想システム・パターンを保存し、「Pattern Editor (パターン・エディター)」を終了します。
では、この仮想システムをデプロイし、結果を見てみましょう。
Workload Service にログインし、以下の操作を行います。
- 「Patterns (パターン)」 > 「Virtual Systems (仮想システム)」の順にクリックします。
- 「WebSphereWithMonitoring」パターンを選択し、「Deploy (デプロイ)」をクリックします。
- パターンをデプロイするウィンドウでは、仮想システムの名前を指定します (例えば「WASITM1」など)。
- 「Configure virtual parts (仮想パートの構成)」をクリックし、WebSphere パーツを選択します。
- このパターンに関して必要なすべての値、またスクリプト・パッケージの環境変数を入力または編集します。
- 「OK」をクリックします。
- 「OK」をクリックし、このパターンをデプロイします。
この仮想システムが完全に起動されて実行状態になるまで、この仮想システムはいくつかの状態を変化します。仮想システムのダッシュボードに緑色の矢印が表示されると、仮想システムの詳細を調べて、以下の項目をメモすることができます。
- WebSphere Application Server 仮想マシンの IP アドレス
- WebSphere Application Server 仮想マシンのホスト名
- スクリプト実行レポート。詳細ページの「Script Packages (スクリプト・パッケージ)」セクションには、この仮想イメージと関連付けられたスクリプトがすべて一覧表示されています。この例の場合には 2 つのスクリプトがあるはずです。スクリプトの実行が成功すると、そのスクリプトに緑色のティック・マークが表示されるはずです。cloudburst_collect*.zip ファイルをクリックすると、2 つのスクリプトを実行した結果のログが表示されます。
図 4. スクリプトを実行した結果が仮想システムのダッシュボードに表示されている状態
これで仮想システムが実行状態となり、スクリプトが適切に実行されたので、WebSphere Application Server VM 上で実行される Linux OS エージェントが共有モニター・サーバーに接続できたかどうかを確認しましょう。Tivoli Enterprise Portal にログインします。URL は http://<ITM インスタンスの IP アドレス>:1920///cnp/kdh/lib/cnp.html です。「Navigator (ナビゲーター)」の「Linux Managed Systems (Linux 管理対象システム)」の下に WebSphere Application Server VM のホスト名が表示されるはずです。
図 5. 「Linux Managed Systems (Linux 管理対象システム)」の自動登録
下記の図のように、Linux OS エージェントがモニター・サーバーと通信し、CPU、メモリー、ファイルシステム、その他の重要なメトリクスに関するモニター・データを提供している様子が表示されるはずです。
図 6. 仮想システム上で実行する Linux OS エージェントがモニター・データを表示している様子
このチュートリアルでは、IBM SmarterCloud Enterprise の IBM SmarterCloud Application Workload Service を使用して仮想システムをモニターする方法について説明しました。
この記事で概説したのと同じ方法を使用して、他のモニター・エージェントを IBM Tivoli Composite Application Manager for WebSphere Application Server や Optim Performance Manager などの仮想システムにインストールして構成することができます。1 つの Tivoli Monitoring サーバー・インスタンスを使用して複数の仮想システムをモニターすることもできます。仮想システム自体は、さまざまな Workload Service インスタンスからデプロイすることができます。つまり、仮想システムのモニターに関するすべてのニーズに 1 台で対応する専用の Tivoli Monitoring サーバーをセットアップすることができます。
この記事をレビューしてくださった Prasad Vishnubhotla 氏と Denis Ducharme 氏に感謝いたします。
学ぶために
- IBM SmartCloud Application Services のサイトで Platform as a Service についての資料を読んでください。
- 「A fast path to getting started with IBM SmartCloud Application Workload Services」を読んでください。
- ブログ記事「Developing script packages for IBM Workload Deployer Virtual System patterns」を読んでください。
- IBM Redbooks、「IBM Workload Deployer: Pattern-based Application and Middleware Deployments in a Private Cloud」を読んでください。
- developerWorks のクラウド・コンピューティング・ゾーンでクラウド・コンピューティングについて学んでください。
- IBM は、クラウド・アプリケーションのデプロイメントとシステム構成に関する最も専門的なベスト・プラクティスを IBM PureSystems ファミリーのエキスパート・インテグレーテッド・システムにカプセル化しました。developerWorks で PureSystems について学んでください。
- Twitter で developerWorks をフォローしてください。
- developerWorks On demand demos をご覧ください。初心者のための製品インストール方法やセットアップのデモから、上級開発者のための高度な機能に至るまで、多様な話題が解説されています。
製品や技術を入手するために
- IBM SmarterCloud Enterprise にアクセスしてください。
- IBM PureSystems エキスパート・インテグレーテッド・システムの情報にアクセスしてください。
- 皆さんに最適な方法で IBM 製品を評価してください。製品の試用版をダウンロードする方法、オンラインで製品を試す方法、クラウド環境で製品を使う方法、あるいは SOA Sandbox で数時間を費やし、サービス指向アーキテクチャーの効率的な実装方法を学ぶ方法などがあります。
議論するために
- developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、ウィキを調べることができます。
