• 検索結果がありません。

CLUSTERPRO 作業報告書

N/A
N/A
Protected

Academic year: 2021

シェア "CLUSTERPRO 作業報告書"

Copied!
33
0
0

読み込み中.... (全文を見る)

全文

(1)

WebSphere Application Server + CLUSTERPRO

- 検証報告書 -

2003 年 12 月 24 日版

(2)

目次

目次

1. 概要...3

2. 対象システム...4

2.1. ハードウェア構成...4

2.2. ソフトウェア構成...6

3. CLUSTERPRO の構築...7

3.1. OS のインストール...7

3.2. FAStT デバイスドライバ (qla2300.o)...8

3.3. Turbolinux 8 CLUSTERPRO SE...9

3.3.1. CLUSTERPRO インストール準備...9

3.3.2. CLUSTERPRO のインストール...9

3.3.3. クラスタの設定... 9

4. アプリケーションの設定...11

4.1. WebSphere Application Server のインストール...11

4.1.1. インストール概要... ... ...11

4.1.2. インストール手順... ... ...11

4.1.3. fixpack 5.0.2 適用手順...12

4.1.4. fixpack 5.0.2.1 適用手順...13

4.2. WAS の設定...14

4.3. WAS のクラスタ設定...15

4.4. DB2 のインストール...19

4.4.1. DB2 インストール準備...19

4.4.2. node1 への DB2 インストール...19

4.4.3. node2 への DB2 インストール...20

4.5. データベースの作成...21

4.6. DB2 のクラスタ設定...22

4.7. CLUSTERPRO の設定(アプリケーションの起動/停止)...29

5. クラスタ構成の検証...33

5.1. 検証項目...33

5.2. 検証内容...33

(3)

CLUSTERPRO 作業報告書

1. 概要

1.

概要

この文書は、

WebSphere Application Server (以降 WAS と記載) の動作環境を Turbolinux 8 CLUSTERPRO SE によるクラス

タ上に作成し、クラスタの動作検証を行った際の手順を記載するものである。また、

HttpSession オブジェクトの受け渡しに

DB を経由する際の設定よび検証結果を記載した。

作業場所

作業場所

郵便番号

103-8510

住所

東京都中央区日本橋 19-21

御担当者名

IBM Linux コンピテンシー・センター

連絡先

作業日

2003 年 11 月 10 - 12 日

作業者

作業者

会社名

日本アイ・ビー・エム株式会社

ターボリナックス株式会社

この文章は

WAS を CLUSTERPRO によりクラスタ化するための設定例を示すことにより、システムインテグレーション時の留

意事項をまとめたものであり、

WAS や CLUSTERPRO の動作保証をするものではありません。

(4)

CLUSTERPRO 作業報告書

2. 対象システム

2. 対象システム

2.1. ハードウェア構成

対象システムのハードウェア構成

項目

項目

内容

内容

メーカー名

日本

IBM

製品名

Xseries 440 8687-4RX

プロセッサ

CPU

Intel Xeon 1.60GHz x 4

チップセット

IBM XA-32

メモリ

4GB

ストレージ(内臓)

コントローラ

ServeRAID-4Mx

SCSI ディスク

Ultra160 36.4GB(10krpm) × 2(RAID1)

HBA

FAStT FC2-133 ホスト・バス・アダプター + FC ケーブル

グラフィクス

S3 Savage4 LT

ネットワークカード

Broadcom Vigil B5700 1000Base-T (bcm5700)

ストレージ(外付)

FAStT600 ストレージ・サーバ

コントローラ

Dual active 2GB RAID コントローラ

(5)

CLUSTERPRO 作業報告書

2. 対象システム

(6)

CLUSTERPRO 作業報告書

2. 対象システム

2.2. ソフトウェア構成

(7)

CLUSTERPRO 作業報告書

3. CLUSTERPRO の構築

3. CLUSTERPRO の構築

クラスタの構築手順を記載する。

3.1. OS のインストール

各サーバに次の

OS 製品をインストール。

製品名

製品名

Turbolinux Enterprise Server 8 powered by UnitedLinux ( SP2a 適用 Kernel 2.4.19-304 )

なお、インストール時に、インストールステップで表示される「インストールの設定」 画面で、「ソフトウェア」を選択して

「詳細な選択(

D)」をクリックし、[C/C++ Compiler コンパイラーとツール] を選択してインストール。

Turbolinux Enterprise Server 8 のインストールに関する詳細は、以下の URL 内 インストール手順書を参照。

URL : http://www.turbolinux.co.jp/products/cluster/cpro8/trial.html

●評価版ご利用時のご参考資料 「Turbolinux Enterprise Server 8 簡易インストール手順書」

ネットワークの設定

クラスタサーバ1

項目

項目

内容

内容

インターフェース

- eth0

パブリック

LAN

IP アドレス

10.7.11.10

ネットワーク

10.7.0.0 / 255.255.0.0

インターフェース

- eth1

インターコネクト

IP アドレス

192.168.1.1

ネットワーク

192.168.1.0 / 255.255.255.0

ホスト名

X440-1

クラスタサーバ2

項目

項目

内容

内容

インターフェース

- eth0

パブリック

LAN

IP アドレス

10.7.11.11

ネットワーク

10.7.0.0 / 255.255.0.0

インターフェース

- eth1

インターコネクト

IP アドレス

192.168.1.2

ネットワーク

192.168.1.0 / 255.255.255.0

ホスト名

X440-2

OS インストール後に Service Pack 2 をインストール。

# mount /media/cdrom

# cd /media/cdrom

# ./install_update_rpms.sh

(8)

CLUSTERPRO 作業報告書

3. CLUSTERPRO の構築

3.2. FAStT デバイスドライバ

 

(qla2300.o)

FAStT デバイスドライバを下記の URL よりダウンロードしインストールする。

http://www−6.ibm.com/jp/domino05/pc/download/download.nsf/DownloadSearchView/CC172E7816752E8C49256D

9F0030DDB8

ソフト名

FAStT ホスト・アダプター非フェイル・オーバー・デバイス・ドライバー

バージョン

6.06.00 (Linux)

ダウンロード・ファイル

25k9277.tgz

リリース日

9 月 11 日

ドライバのインストール

ドライバの作成

・ ドライバのバックアップ

# cd /lib/modules/2.4.19-64GB-SMP/kernel/drivers/scsi

# cp qla2300.o qla2300.o.orig

・ カーネルソースのディレクトリに移動

# cd /usr/src/linux

# make cloneconfig

# make dep

・ ドライバのコンパイル

# tar xvfz 25k9277.tgz

# cd i2x00-v6.06.00

# ./drvsetup

# ./libinstall

# cd i2x00-v6.06.00

# make all SMP=1 OSVER=linux

(SMP)

モジュールの指定

/etc/sysconfig/kernel 内の " INITRD_MODULES " に qla2300.o の記述を追加

<追加例>

INITRD_MODULES=”aic7xxx ext3

qla2300

ドライバの確認

# insmod ./qla2300.o

# less /proc/scsi/qla2300/n ← n はスロット数により変わる

ドライバのロード

# cp qla2300.0 /lib/modules/2.4.19-64GB-SMP/kernel/drivers/scsi/

# mk_initrd

カーネルパラメータの変更

/boot/grub/menu.lst に ”max_scsi_luns=128” を追加

(9)

CLUSTERPRO 作業報告書

3. CLUSTERPRO の構築

3.3. Turbolinux 8 CLUSTERPRO SE

各サーバに次の

CLUSTERPRO をインストール。

製品名

製品名

Turbolinux 8 CLUSTERPRO SE

3.3.1. CLUSTERPRO インストール準備

共有ディスクにクラスタ用のパーティションを作成する。

ここでは、

FAStT600 の設定および接続が完了しているものとする。

片方のマシンから

fdisk コマンドを実行し、CLUSTER パーティションおよび WAS 用、DB2 用パーティションを作成する。

# fdisk /dev/sdb

CLUSTER パーティション

/dev/sdb1

10MB

WAS 用切替パーティション

/dev/sdb5

5GB

DB2 用切替パーティション

/dev/sdb6

1GB

3.3.2. CLUSTERPRO のインストール

各サーバに

CLUSTERPRO のパッケージ clusterpro-2.1-1.3 をインストール。

# mount /media/cdrom

# cd /media/cdrom/Linux/server/SE/2.1

# rpm -ivh clusterpro-2.1-1.3.i386.rpm

各サーバに

SP2a 用 CLUSTERPRO SE アップデートモジュールを適用する。

※以下の

URL よりアップデートモジュールをダウンロード

ダウンロード先

http://www.turbolinux.co.jp/update/

3.3.3. クラスタの設定

クラスタの設定内容は以下の通り。

項目

項目

内容

内容

スーパークラスタ名

SuperCluster

ネットワークパーティション

ディスク

###NEC_NP1

COM ポート

-

サブクラスタ

サブクラスタ名

SubCluster

サーバ

x440-1 , x440-2

グループ

WAS

(10)

CLUSTERPRO 作業報告書

3. CLUSTERPRO の構築

フェイルオーバグループの設定

WAS フェイルオーバグループの設定内容は次の通り。

項目

項目

内容

内容

フェイルオーバグループ名

WAS

フェイルオーバ・ポリシー

x440-2 → x440-1

リソース

仮想

IP アドレス

10.7.11.13/255.255.0.0

ディスク (

was 用)

切替パーティション名

/dev/sdb5

切替パーティションマウントポイント名

/opt/WebSphere

切替パーティションサイズ

5GB

ファイルシステム

ext3

マウントオプション

rw

ディスク (

DB2 用)

切替パーティション名

/dev/sdb6

切替パーティションマウントポイント名

/home/db2inst1

切替パーティションサイズ

1GB

ファイルシステム

ext3

マウントオプション

rw

トレッキングツールでクラスタ情報を生成し、クラスタを構築する。

CLUSTERPRO 用 fstab は以下の通り。

/etc/clusterpro/fstab

NP ###NEC_NP1 /dev/sdb1

SW sdb5 /dev/sdb5 /opt/WebSphere ext3 rw

SW sdb6 /dev/sdb6 /home/db2inst1 ext3 rw

WD ###NEC_NP1 /dev/sdb1

WD sdb5 /dev/sdb5

WD sdb6 /dev/sdb6

:fsckopt -y

:mnttimeout 300

Turbolinux 8 CLUSTERPRO SE のインストール / 設定 (スクリプトを除く) に関する詳細は、以下の URL 内

  簡易設定手順書を参照。

URL : http://www.turbolinux.co.jp/products/cluster/cpro8/trial.html

(11)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

4. アプリケーションの設定

各サーバに

WAS をインストールし、クラスタの設定を行う。

また本検証では、

WAS のセッション情報をデータベース (DB2) に格納し、クラスタによるフェイルオーバ時にセッション情報

が引き継がれることを確認した。ここでは

DB2 のインストール手順および、DB2 のクラスタ設定手順も併せて記載する。

4.1. WebSphere Application Server のインストール

各サーバに次の

WAS をインストール。

製品名

製品名

WebSphere Application Server V5.0

4.1.1. インストール概要

node1 でクラスタの WAS グループをアクティブにし、以下のディレクトリに WAS をインストールする。

インストール・ディレクトリ

/opt/WebSphere/AppServer/

※念のため、インストール後にインストール・ディレクトリのバックアップをとる。

(コピー、または

tar コマンドでのバックアップでも可)

CLUSTERPRO マネージャからグループの切替を行い、node2 で WAS グループをアクティブにし上記と同じ

インストール・ディレクトリへ再び

WAS をインストールする。

両方のサーバで

WAS が問題なく稼動することを確認する。

WAS の設定を行う。

4.1.2. インストール手順

CD-ROM ドライブに CD-ROM を挿入しマウントする。

# mount /media/cdrom

# cd /media/cdrom/Linuxi386

・ランチパッドを開始する。

# ./install

・ランチパッド言語を選択 → OK

・ランチパッドが始まったら、「製品のインストール」をクリック → インストール・ウィザードが起動

・ウィザードで使用する言語を選択 → 了解

・ウィザードの開始 → 次へ

・ソフトウェア・ライセンス情報の表示

 同意する場合は「使用条件の条項に同意します」を選択 → 次へ

・システムレベルのチェック

・セットアップタイプの選択 → カスタムを選択 → 次へ

・コンポーネントの選択

 

WAS と IHS を選択。EmbeddedMessaging はチェックを外す

・インストール先ディレクトリの選択

デフォルト設定のディレクトリを変えたい場合は、参照をクリックして選択するかもしくは直接指定する。

 今回の指定内容は以下の通り。

IBM WebSphere Application Server

/opt/WebSphere/AppServer

(12)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

・ノード名、ホスト名の入力 → 次へ

・インストール内容の確認 → 次へ

・インストールの開始

・インストール終了後、製品登録画面 チェックを外す → 次へ

 ※後で「ファースト・ステップ」画面から製品登録が可能

・インストール・ウィザードの終了 → 終了

・ランチパッドの終了

・インストール後の確認

  

WAS の起動

# cd /opt/WebSphere/AppServer/bin

# ./startServer.sh server1

 

IHS の起動

# cd /opt/WebSphere/IBMHttpServer/bin

# ./apachectl start

http://<nodename>/snoop にアクセスし、画面が適切に表示されれば正しくインストールされている。

WAS の停止

# cd /opt/WebSphere/AppServer/bin

# ./stopServer.sh server1

IHS の停止

# cd /opt/WebSphere/IBMHttpServer/bin

# ./apachectl stop

※当動作検証では、ブラウザとして

Mozilla を使用しました。

WAS 5.0 では stopServer.sh スクリプトによるサーバーの停止が正常に動作しないことを確認致しました。

 当現象は f

ixpack を適応後発生しておりません。

4.1.3. fixpack 5.0.2 適用手順

事前準備

fixpack はダウンロード、もしくは FTP で用意する。

ダウンロード先

http://www-1.ibm.com/support/docview.wss?rs=180&tc=SSEQTP&uid=swg24005012

WAS と IHS は停止させておく

 (

stopServer.sh コマンドにてサーバーが正常終了しない場合には、kill コマンドにより全ての Java プロセス

  を停止させる)

fixpack をダウンロードする為のディレクトリーを作成する

・作成したディレクトリに

fixpack をダウンロードし、展開する

updateWizard .sh を実行するコンソール上で setupcmdLine.sh を実行し、JAVA_HOME が設定されたことを確認

 する (

setupcmdLine.sh は/opt/WebSphere/AppeServer/bin にあります。)

(13)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

インストール(ウィザードを使用)

updateWizard.sh コマンドを実行し、updateWizard を立ち上げる。 

・ウィザードの言語を選択 → OK

fixpack を当てる製品を選択(ここでは WebSphereApplicationServer V5.0) → 次へ

fixpack のインストールかアンインストール、もしくは修正のインストール、アンインストールを選択

(ここでは

fixpack のインストールを選択)→ 次へ

fixpack のあるディレクトリを指定 → 次へ

※デフォルト設定のディレクトリに無い場合には、「参照」を使用して指定する

・適用する

fixpack を選択する → 次へ

・要約画面 → 次へ

・インストールの開始

・インストール完了画面

 メッセージを確認 → 終了

fixpack の確認方法:

 

WebSphere/AppServer/properties/version/historyディレクトリの event.history ファイルを確認する。

4.1.4. fixpack 5.0.2.1

適用手順

詳細な手順は、[

4.1.3. fixpack 5.0.2 の適用手順]を参照。

※必ず

fixpack 5.0.2 を適用後に適用してください。

fixpack 5.0.2 と同様に事前準備を済ませる。

ダウンロード先

http://www−1.ibm.com/support/docview.wss?rs=180&context=SSEQTP&q=&uid=swg240

05569&loc=en_US&cs=utf-8&lang=en

 

・ウィザードを立ち上げる

fixpack のインストール

・インストール後の確認

fixpack のインストールに失敗した場合、次回再インストール時には、失敗した部分だけをインストールしま

 す。全てをインストールし直したい場合は、一度アンインストールしてからやり直してください。

(14)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

4.2. WAS の設定

以下の

URL を指定して管理コンソールを起動。

  http://<nodename>:9090/admin

JDBC プロバイダーの作成

・[リソース-

JDBC プロバイダー]画面にて新規ボタンをクリック

JDBC プロバイダーに ”DB2 Legacy CLI-based Type 2 JDBC Driver” を選択 → OK

JDBC プロバイダー設定の確認後 → OK

・保管

データ・ソースの作成

・[リソース-

JDBC プロバイダー- ”DB2 Legacy CLI-based Type 2 JDBC Driver” -データ・ソース]

 画面にて新規ボタンをクリックし以下を設定する → OK

名前

SessionDS

JNDI 名

jdbc/Session

・保管

・[リソース-

JDBC プロバイダー- "DB2 Legacy CLI-based Type 2 JDBC Driver" -データ・ソース-

"SessionDS" -カスタム・プロパティ]画面にて以下の設定を行う

databaseName

session

   

・保管

J2C 認証データ・エントリーの作成

・[セキュリティ-

JAAS 構成-J2C 認証データ-]画面にて新規ボタンをクリックし以下を設定する → OK

別名

x440was/sessionAlias

ユーザー ID

db2inst1

パスワード

db2inst1

 

・保管

J2C 認証エイリアスの設定

・[リソース-

JDBC プロバイダー- ”DB2 Legacy CLI-based Type 2 JDBC Driver” -データ・ソース-

"SessionDS” ]画面にて以下の設定を追加

コンポーネント管理認証エイリアス

x440was/sessionAlias

・保管

セッション・パーシスタンスの設定

・[サーバー-アプリケーション・サーバー-

”server1” -Web コンテナー-セッション管理-分散環境

 設定]画面にて”データベース”を選択 → 適応

・上記画面より[データベース]画面を開き以下の設定を行う → OK

データ・ソース JNDI 名

jdbc/Session

ユーザー ID

db2inst1

パスワード/管理パスワード

db2inst1

・保管

(15)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

セッション・パーシスタンス用アプリケーションのインストール

・[アプリケーション-新規アプリケーションのインストール]画面より、今回のセッション引継ぎ検証で

 使用する以下のサンプル・アプリケーションをインストールする。

アプリケーション名

sessionEAR.ear

※上記はセッション・パーシスタンスのテスト用に作成した独自のアプリケーションとなります。

※インストールの詳細手順は割愛いたします。

4.3. WAS のクラスタ設定

クラスタで使用する

WAS 用スクリプトを、以下のディレクトリにコピーする。

クラスタの WAS グループがアクティブなサーバから実行する。 

スクリプト ディレクトリパス

/opt/WebSphere/AppServer/bin

        WAS 用スクリプト

スタート・スクリプト

startWAS.sh

ストップ・スクリプト

stopWAS.sh

モニタリング・スクリプト

wasCheck.sh

スクリプトのコピー後、全ての

WAS 用スクリプトに実行パーミッションを設定する。

※このスクリプトは

root ユーザで実行する。

(16)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

○スクリプト

  本検証で使用した

WAS 用スクリプトは以下の通り。

 

※当スクリプトは検証用に作成したものであり、実運用で使用する場合はシステムに合わせて修正を行う必要があります。

 

startWAS.sh #!/bin/ksh ############################################################### # Startin Shell for WebShere Application Server V5 Linux

# # #

############################################################### # WebSphere Install Directory

############################################################### WAS_BASE_HOME=/opt/WebSphere/AppServer IHS_HOME=/opt/WebSphere/IBMHttpServer #WAS_DMGR_HOME=/opt/WebSphere/DeploymentManager ###################################################################### . /home/db2inst1/sqllib/db2profile WAS_BASE_CFG=$WAS_BASE_HOME/config WAS_DMGR_CFG=$WAS_DMGR_HOME/config LOGDIR=$WAS_BASE_HOME/logs

echo "Stating IHS"

$IHS_HOME/bin/apachectl start

echo "---waiting for start to complete---" sleep 5

PSIHS2=`ps -ef | grep http` if [[ -n $PSIHS2 ]]; then echo "---IHS is started---" fi

echo "Starting WAS"

$WAS_BASE_HOME/bin/startServer.sh server1 echo "---waiting for start to complete---" while (( sv1 == sv1_tmp ))

do

sleep 5

sv1_tmp=`grep -e WSVR0001I $LOGDIR/server1/SystemOut.log | wc -l` echo "$sv1_tmp.\c"

done sv1=$sv1_tmp echo "---WAS is Started---"

※当スクリプトでは、冒頭にて

". /home/db2inst1/sqllib/db2profile" のように db2profile を実行しています。

  本来

WAS5+Linux 環境においては、WAS 起動ユーザーの .bashrc にて上記コマンドを追記し実行する必要があり

ますが、今回のようにクラスター構成の場合、共有ディスク引継ぎ時に /home/db2inst1 ディレクトリのマウントと

/home/db2inst1/sqllib/db2profile の実行のタイミングが前後し実行に失敗する可能性があることを考慮し、

当コマンドを startWAS.sh スクリプトの中で実行させています。

db2profile が実行されていない状態では、WAS 起動時に "java.lang.UnsatisfiedLinkError" の Exception が出て

起動に失敗します。

(17)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

stopWAS.sh #!/bin/ksh

############################################################### # Stoping Shell for WebShere Application Server V5 Linux

# # #

############################################################### # WebSphere Install Directory

############################################################### WAS_BASE_HOME=/opt/WebSphere/AppServer IHS_HOME=/opt/WebSphere/IBMHttpServer #WAS_DMGR_HOME=/opt/WebSphere/DeploymentManager ###################################################################### WAS_BASE_CFG=$WAS_BASE_HOME/config WAS_DMGR_CFG=$WAS_DMGR_HOME/config function kill_proc_ihs {

ihsprocs=`ps -ef | grep httpd | grep -v grep | awk '{print $2}'` for i in $ihsprocs; do

kill -9 $i done

}

function kill_proc {

procs=`ps -ef | grep java | grep -v grep | awk '{print $2}'` for i in $procs; do

kill -9 $i done

}

echo "Shutting Down IHS"

echo " ... waiting for shutdown to complete." $IHS_HOME/bin/apachectl stop

count=0

while [[ -n $PSIHS ]]; do PSIHS=`ps xgww | grep httpd`

echo "waiting for 5 seconds("`expr $count`")" sleep 5

count=`expr $count + 1` if [ $count -eq 3 ]; then

echo "Ten seconds and Server is still running"

echo " --- Killing IHS --- " kill_proc_ihs

echo " --- IHS TERMINATED --- " fi

done

echo "Shutting Down WAS"

echo " ... waiting for shutdown to complete." $WAS_BASE_HOME/bin/stopServer.sh server1 & PSWAS=`ps -ef | grep java | grep -v grep` count=0

while [[ -n $PSWAS ]]; do

PSWAS=`ps -ef | grep java | grep -v grep` echo "waiting for 10 seconds("`expr $count`")" sleep 10

count=`expr $count + 1` if [ $count -eq 7 ]; then

echo "One minutes and Server is still running" echo " --- Killing WAS --- "

kill_proc

echo " --- WAS TERMINATED --- " fi

(18)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

done exit wasCheck.sh #!/bin/bash URL=$1 TIMEOUT=20 while : do

GET -t ${TIMEOUT}s $URL >/dev/null 2>&1 if [ $? -eq 0 ]

then

echo "WebSphere is responding" else exit 1 fi sleep $TIMEOUT done

(19)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

4.4. DB2 のインストール

HttpSession オブジェクトの受け渡しにデータベースを使用するため、DB2 をインストールしクラスタの設定を行う。

各サーバに次の

DB2 をインストール。

製品名

製品名

DB2 UDB Enterprise Server Edition V8.1

マシンは

node1、node2 とし、2台のマシンに DB2 をインストールする手順を記載する。

4.4.1. DB2 インストール準備

DB のインストール前に node1、node2 において、DB2 用のユーザとグループを作成する。

この時、両ノードでグループとユーザに関する

GID、UID を合わせる必要がある。

グループの作成例

# groupadd -g 502 db2inst1

ユーザの作成例

# useradd -m -u 501 -g db2inst1 db2inst1

パスワードの設定

# passwd db2inst1

4.4.2. node1 への DB2 インストール

node1 でグループをアクティブにする

CLUSTERPRO マネージャから node1 でグループをアクティブにする。

インストーラの起動

DB2 のメディアを CD-ROM ドライブに挿入し、次のコマンドを実行する。

# mount /media/cd rom

# cd /media/cdrom

# ./db2setup

GUI 画面での選択

DB2 のインストールは GUI で行う。

  

  セットアップ画面では「製品のインストール」を選択する。設定する項目は以下の通り。

インストール製品

DB2 UDB Enterprise Server Edition V8.1

  ・概要 → 次へ

  ・ソフトウェアライセンスで「同意する」を選択 → 次へ

  ・インストールタイプで「標準」(デフォルト値)を選択 → 次へ

  ・インストールアクションで「

DB2 UDB Enterprise ServerEdition をこのコンピュータにインストール」

(デフォルト値)を選択 → 次へ

  ・

DAS ユーザで「新規ユーザ」を選択(デフォルト値)し、パスワードを入力する。 → 次へ

  ・インスタンスのセットアップで「

DB2 インスタンスの作成」(デフォルト値)を選択する → 次へ

  ・インスタンスの選択で「シングル・パーティション・インスタンス」(デフォルト値)を選択 → 次へ

  ・インスタンス所有ユーザで「既存ユーザ」を選択し、

useradd コマンドで作成したユーザを選択 → 次へ

  ・隔離ユーザで「既存ユーザ」を選択し、インスタンス所有ユーザで選択したユーザを再度選択する

→ 次へ

(20)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

・連絡先リストで「ローカル - このシステムに通知先リストを作成する」を選択する → 次へ

・連絡先で「新規連絡先」(デフォルト値)を選択する → 次へ

    ・サマリーで 「完了」ボタンをクリックする

インストールの確認

GUI でインストールすると自動的に DB2 インスタンスが起動する。ps コマンドで DB2 のインスタンスプロセスを

   確認する。

コマンド例

# ps ax | grep db2

4.4.3. node2 への DB2 インストール

node2 でグループをアクティブにする

CLUSTERPRO マネージャから node2 でグループをアクティブにする。

インストーラの起動

DB2 のメディアを CD-ROM ドライブに挿入し、次のコマンドを実行する。

# mount /media/cd rom

# cd /media/cdrom

# ./db2setup

GUI 画面での選択

DB2 のインストールは GUI で行う。

  

  セットアップ画面では「製品のインストール」を選択する。設定する項目を以下の通り。

インストール製品

DB2 UDB Enterprise Server Edition V8.1

・概要 → 次へ

・ソフトウェアライセンスで「同意する」を選択 → 次へ

・インストールタイプで「標準」(デフォルト値)を選択 → 次へ

・インストールアクションで「

DB2 UDB Enterprise ServerEdition をこのコンピュータにインストール」

(デフォルト値)を選択 → 次へ

DAS ユーザで「新規ユーザ」を選択(デフォルト値)し、パスワードを入力する。 → 次へ

・インスタンスのセットアップで「

DB2 インスタンスを作成しない」を選択する → 次へ

・ 連絡先リストで「ローカル - このシステムに通知先リストを作成する」を選択する → 次へ

・ 連絡先で「新規連絡先」 (デフォルト値) を選択する → 次へ

・ サマリーで 「完了」ボタンをクリックする

/etc/services ファイルのコピー

(21)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

4.5. データベースの作成

node1 で以下のコマンドを実行し、データベースを作成する。

CLUSTERPRO マネージャから node1 でグループをアクティブにしておく。

インスタンス名

db2inst1

DB 名

Session

データベースの作成

# su - db2inst1

# db2 create db Session

データベースの接続確認

# db2 connect db Session

接続ができた場合は、次のコマンドを実行しデータベースを停止する。

# db2 disconnect Session

# db2 terminate

# db2stop

 

(22)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

4.6. DB2 のクラスタ設定

本検証ではクラスタで使用する

DB2 用スクリプトを、以下のパスにコピーする。

(両ノードのローカルディレクトリに置く)

スクリプト ディレクトリパス

/tmp/db2

        DB2 用スクリプト

スタート・スクリプト

start.sh

db2 インスタンスを起動する

[Usage] start.sh [

インスタンス名

] 出力ログ:/tmp/db2start.log

ストップ・スクリプト

fstop.sh

db2 インスタンスを停止する

[Usage] start.sh [

インスタンス名

][

データベース名

] 出力ログ:/tmp/db2fstop.log

モニタリング・スクリプト

connect.sh

データベースに接続を試み

db2 インスタンスへのヘルスチェックを行う

[Usage] connect.sh [

インスタンス名

][

データベース名

] 出力ログ:/tmp/db2connect.log

・各スクリプトは

/tmp/以下に各スクリプトの結果を示すログファイルを出力する。

・スクリプトのコピー後、全ての

DB2 用スクリプトに実行パーミッションを設定する。

 ※このスクリプトは

root ユーザで実行する。

[注意点]

WAS を root で起動する場合、${DB2INST_HOME}/sqllib/db2profile を実行するように、WAS のスタートスクリプトに

記入してください。これを怠ると、アプリケーションがデータベースに接続することができません。  

(23)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

○スクリプト

  本検証で使用した

DB2 用スクリプトは以下の通り。

 

※当スクリプトは検証用に作成したものであり、実運用で使用する場合はシステムに合わせて修正を行う必要があります。

 

start.sh #!/bin/bash #---# Name: start.sh #

# Function : Start database instance #---##### Variables #---##### TRUE=0 FALSE=1 # DB2 instance name DB2INSTANCE=$1 #db2 instance #DB2INSTANCE=db2inst1 #db2 instance #DB2INSTANCE=ldapdb2 #db2 instance # DB2 install directory #DB2DIR=/usr/IBMdb2/V7.1 DB2DIR=/opt/IBM/db2/V8.1 # LANG if necessary LANG=ja_JP.ujis

# Times to run db2start, specify more than 1 RETRY=1 # db2start,db2admin start retry #sleep time

SLEEPTIME=5 # period to sleep (sec) #Specify writable file name for logging #LOGFILE="/tmp/start.log" LOGFILE="/tmp/db2start.log" return_cd=0 ##### End of Variables ##### # Exit program function exit_prog {

exitcode=$1 # exit code echo "$2"

exit ${exitcode} }

# Find home dir of the instance find_homedir ()

{

username=$1 # is the user valid?

if ${DB2DIR?}/bin/db2usrinf -q ${username?} then

USERHOME=`${DB2DIR?}/bin/db2usrinf -d ${username?}` else

exit_prog 1 "DBI1131E The user ID ${username} is invalid." fi

return 0 }

# check db2nodes.cfg file entry check_db2nodes ()

{

(24)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

FILE_HOST=`awk '{print $2}' ${USERHOME}/sqllib/db2nodes.cfg` # compare host & file host

if [ $HOST != $FILE_HOST ]; then

mv ${USERHOME}/sqllib/db2nodes.cfg ${USERHOME}/sqllib/db2nodes.cfg_org sed 's/'${FILE_HOST}'/'${HOST}'/g' \

${USERHOME}/sqllib/db2nodes.cfg_org > ${USERHOME}/sqllib/db2nodes.cfg rm -f ${USERHOME}/sqllib/db2nodes.cfg_org

chown ${DB2INSTANCE}.${DB2INSTANCE} ${USERHOME}/sqllib/db2nodes.cfg fi return 0 } ###### Main program ###### # check logfile /bin/touch ${LOGFILE} if [ $? -ne 0 ] then

exit_prog ${FALSE} "Cannot create logfile" fi

echo "" >>${LOGFILE}

echo " #######################################" >> ${LOGFILE} echo " #### $(/bin/date) START #### " >> ${LOGFILE}

echo " #######################################" >> ${LOGFILE} #################

# DB2 Instance #################

echo "Starting DB2 Instance "${DB2INSTANCE}"..." >> ${LOGFILE?} # check instance owner

find_homedir ${DB2INSTANCE} >>${LOGFILE} 2>&1 INSTHOME="${USERHOME?}"

# check db2nodes.cfg entry check_db2nodes

# instance start count=1

while [ $count -le ${RETRY} ] do

ABC="`su - ${DB2INSTANCE} -c \"source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/sqllib/db2profile >/dev/null 2>&1; db2start\"`"

if [ $? -ne 0 ] then

exit_prog 1 "su NG" >>${LOGFILE} 2>&1 fi

echo ${ABC} >>${LOGFILE} 2>&1

echo ${ABC}|grep SQL1063N >/dev/null 2>&1 result=$?

echo ${ABC}|grep SQL1026N >/dev/null 2>&1 result2=$? if [ ${result} -eq 0 ] then break fi if [ ${result2} -eq 0 ] then break fi count=`expr $count + 1` sleep ${SLEEPTIME} done #over=`expr $RETRY + 1` #if [ ${count} -eq ${over} ]

(25)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

# echo "db2start failed" >>${LOGFILE} 2>&1 # return_cd=1

#if "activate db" is necessary #else

# for dbn in ${DBNAME} # do

# su - ${DB2INST1} -c "source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/sqllib/db2profile >/dev/null 2>&1; db2 activate database ${dbn}"

# done #fi ####### # DAS ####### #DASINST="`${DB2DIR}/instance/dasilist`" ##V7.2 #DASINST="`${DB2DIR}/instance/daslist`" ##V8.1 #if [ $? -eq 0 ]; then

# echo "Starting Administration Server "${DASINST?}"..." \ >> ${LOGFILE?} # if ${DB2DIR?}/bin/db2usrinf -q ${DASINST?} # then # USERHOME=`${DB2DIR?}/bin/db2usrinf -d ${DASINST?}` # fi # DASHOME="${USERHOME?}"

# su - ${DASINST?} -c "source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/sqllib/db2profile >/dev/null 2>&1;db2admin start" >>${LOGFILE} 2>&1

#fi ####### # EXIT #######

if [ ${return_cd} -eq ${FALSE} ] then

exit_prog 1 " ### Starting DB FAILED ### " >>${LOGFILE} fi

exit_prog 0 " ### Starting DB SUCCEEDED ### " >>${LOGFILE}

(26)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

fstop.sh #!/bin/bash #---# Name: fstop..sh #

# Function : Forcing stop Database #---########### Variables #---############ TRUE=0 FALSE=1 DB2INSTANCE=$1 #db2 instance V8.1 #DB2INSTANCE=db2inst1 #db2 instance V7.2 #DB2INSTANCE=ldapdb2 #db2 instance DB2DIR=/opt/IBM/db2/V8.1 #DB2DIR=/usr/IBMdb2/V7.1 LANG=ja_JP.ujis

RETRY=1 # db2start,db2admin start retry SLEEPTIME=5 # period to sleep #LOGFILE="/tmp/fstop.log" LOGFILE="/tmp/db2fstop.log" return_cd=0 ########### End of Variables ############ # Exit program function exit_prog {

exitcode=$1 # exit code echo "$2"

exit ${exitcode} }

# Find home dir of the instance find_homedir ()

{

username=$1 # is the user valid?

if ${DB2DIR?}/bin/db2usrinf -q ${username?} then

USERHOME=`${DB2DIR?}/bin/db2usrinf -d ${username?}` else

exit_prog 1 "DBI1131E The user ID ${username} is invalid." fi

return 0 }

### Main program ### /bin/touch ${LOGFILE}

[[ $? -ne 0 ]] && exit_prog ${FALSE} echo "" >>${LOGFILE}

echo " #######################################" >> ${LOGFILE} echo " #### $(/bin/date) F_STOP #### " >> ${LOGFILE} echo " #######################################" >> ${LOGFILE} ###############

# DB2 Instance ###############

echo "Force-Stopping DB2 Instance "${DB2INSTANCE}"..." >> ${LOGFILE?} # check instance owener

find_homedir ${DB2INSTANCE} >>${LOGFILE} 2>&1 INSTHOME="${USERHOME?}"

(27)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

do

ABC="`su - ${DB2INSTANCE} -c \"source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/sqllib/db2profile >/dev/null 2>&1; db2stop force\"`"

if [ $? -ne 0 ] then

exit_prog 1 "su NG" >>${LOGFILE} 2>&1 fi

echo "${ABC}" >>${LOGFILE} 2>&1 echo $ABC|grep SQL1064N >/dev/null 2>&1 result=$?

echo $ABC|grep SQL1032N >/dev/null 2>&1 result2=$? if [ ${result} -eq 0 ] then break fi if [ ${result2} -eq 0 ] then break fi cnt=`expr ${cnt} + 1` sleep ${SLEEPTIME} done over=`expr ${RETRY} + 1` if [ ${cnt} -eq ${over} ] then

echo "Stopping database failed" >>${LOGFILE} 2>&1 # db2stop -kill

kill_res="`su - ${DB2INSTANCE} -c \"source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/ sqllib/db2profile >/dev/null 2>&1; db2stop -kill\"`"

echo "db2stop -kill " >>${LOGFILE} 2>&1 echo ${kill_res} >>${LOGFILE} 2>&1 echo ${kill_res}|grep 1064N >/dev/null 2>&1 kill_res_1=$?

echo ${kill_res}|grep 1032N >/dev/null 2>&1 kill_res_2=$?

# if db2stop -kill failed...

if [ ${kill_res_1} -ne 0 ] && [ ${kill_res_2} -ne 0 ] then

return_cd=1 fi

# Kill db2agent

ps -fu ${DB2INSTANCE} | grep db2agent | grep -v grep |while read procinfo # Read the process-info line do

# Get the process ID

pid=`echo ${procinfo?} | awk '{print $2}'`

cmd=`echo ${procinfo} | awk '{print $8}'` # command # If command is "db2agent", send a SIGKILL signal if expr "${cmd?}" : '\(.*db2agent.*\)' > /dev/null then

kill -9 ${pid?} 2>/dev/null fi

done

echo "Killed all db2agent" >>${LOGFILE} 2>&1 # Kill db2sysc

ps -fu ${DB2INSTANCE} | grep db2sysc | grep -v grep |while read procinfo # Read the process-info line do

# Get the process ID

pid=`echo ${procinfo?} | awk '{print $2}'`

cmd=`echo ${procinfo} | awk '{print $8}'` # get command name # If command is "db2sysc", send a SIGKILL signal

(28)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

kill -9 ${pid?} 2>/dev/null fi

done

echo "Killed db2sysc" >>${LOGFILE} 2>&1 # Run ipclean

su - ${DB2INSTANCE} -c "source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/sqllib/db2profile >/dev/null 2>&1; ${DB2DIR}/bin/ipclean 1>/dev/null 2>&1" >/dev/null 2>&1

echo "Complete ipclean" >>${LOGFILE} 2>&1 fi ######## # DAS ######## #DASINST="`${DB2DIR}/instance/dasilist`" #V7.2 #DASINST="`${DB2DIR}/instance/daslist`" #V8.1 #if [ $? -eq 0 ]; then

# echo "Stopping Administration Server "${DASINST?}"..." \ >> ${LOGFILE?} # if ${DB2DIR?}/bin/db2usrinf -q ${DASINST?} # then # USERHOME=`${DB2DIR?}/bin/db2usrinf -d ${DASINST?}` # fi # DASHOME="${USERHOME?}"

# su - ${DASINST?} -c "source ${INSTHOME}/sqllib/db2cshrc >/dev/null 2>&1; . ${INSTHOME}/sqllib/db2profile >/dev/null 2>&1; db2admin stop" >>${LOGFILE} 2>&1

#fi ####### # EXIT #######

if [[ ${return_cd} -eq ${FALSE} ]] then

exit_prog 1 " ### Force-Stopping DB FAILED ### " >>${LOGFILE} fi

exit_prog 0 " ### Force-Stopping DB SUCCEEDED ### " >>${LOGFILE}

connect.sh #!/bin/bash

#---# Name: connect.sh

# *This program is called in mon.sh #

# Function : connecting Database # if succeed, print DBCONNECTOK #---DB2DIR=/opt/IBM/db2/V8.1 DB2INSTANCE=$1 DBNAME=$2 TIMEOUT=20 while : do # connect to database

su - ${DB2INSTANCE} -c "db2 connect to ${DBNAME} >/dev/null 2>&1" result=$?

if [ ${result} -eq 0 ] then

echo "DBCONNECTOK" >/tmp/db2connect.log 2>&1 else

exit 1 fi

sleep ${TIMEOUT} done

(29)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

4.7. CLUSTERPRO の設定(アプリケーションの起動/停止)

起動

/停止用スクリプトを CLUSTERPRO マネージャから編集する。

※本検証では斜体文字部分を追記。

WAS、DB2 の起動/停止およびポーリングのスクリプトを定義。

start.bat #! /bin/sh #*************************************** #* START.BAT * #*************************************** if [ "$ARMS_EVENT" = "START" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "NORMAL1" sleep 20 #start db2 armlog "start db2 1"

if ! /tmp/db2/start.sh db2inst1; then armlog "start db2 error" -arm exit 1

fi

/opt/WebSphere/AppServer/bin/startWAS.sh >> /opt/WebSphere/AppServer/logs/test.log

armlog "Start WAS" -arm

armload WASC -M -FOV /opt/WebSphere/AppServer/bin/wasCheck.sh x440was/snoop

sleep 20

armlog "start db2 poling 1"

armload DB2POLING -M -FOV /tmp/db2/connect.sh db2inst1 Session armlog "start db2 poling 2"

if [ "$ARMS_SERVER" = "HOME" ] then armlog "NORMAL2" else armlog "ON_OTHER1" fi else

armlog "ERROR_DISK from START" fi

elif [ "$ARMS_EVENT" = "RECOVER" ] then

armlog "RECOVER" elif [ "$ARMS_EVENT" = "FAILOVER" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "FAILOVER1" sleep 20 #start db2 armlog "start db2 1"

if ! /tmp/db2/start.sh db2inst1; then armlog "start db2 error" -arm exit 1

fi

/opt/WebSphere/AppServer/bin/startWAS.sh >> /opt/WebSphere/AppServer/logs/test.log

armlog "Start WAS" -arm

(30)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

sleep 20

armlog "start db2 poling 1"

armload DB2POLING -M -FOV /tmp/db2/connect.sh db2inst1 Session armlog "start db2 poling 2"

if [ "$ARMS_SERVER" = "HOME" ] then armlog "FAILOVER2" else armlog "ON_OTHER2" fi else

armlog "ERROR_DISK from FAILOVER" fi else armlog "NO_ARM" fi armlog "EXIT" exit 0

(31)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

stop.bat #! /bin/sh #*************************************** #* STOP.BAT * #*************************************** arm_rel_path() { while [ "$1" != "" ] do

armrelpath $1 > /dev/null 2>&1 relret=$?

if [ "$relret" = "0" ] then

armlog "KILL NO PROCESS" elif [ "$relret" = "1" ]

then

armlog "KILL SOME PROCESS" else

armlog "ARMRELPATH ERROR" fi shift done } arm_rel_mntpoint() { mntpoint=`armlsmnt -l $ARMS_RESOURCELIST` mntret=$? if [ "$mntret" = "0" ] then if [ "$mntpoint" != "" ] then arm_rel_path $mntpoint else

armlog "NO MOUNT POINT" fi

else

armlog "ARMLSMNT ERROR" fi } if [ "$ARMS_EVENT" = "START" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "NORMAL1" armkill WASC

echo "stopWAS.sh Start for NOMAL" >> /opt/WebSphere/AppServer/logs/test.log /opt/WebSphere/AppServer/bin/stopWAS.sh >> /opt/WebSphere/AppServer/logs/test.log armlog "Stop WAS" -arm

#stop db2 poling armkill DB2POLING #stop db2 armlog "stop db2 1" /tmp/db2/fstop.sh db2inst1 armlog "stop db2 2" if [ "$ARMS_SERVER" = "HOME" ] then armlog "NORMAL2" else armlog "ON_OTHER1" fi

(32)

CLUSTERPRO 作業報告書

4. アプリケーションの設定

fi

elif [ "$ARMS_EVENT" = "FAILOVER" ] then

if [ "$ARMS_DISK" = "SUCCESS" ] then

armlog "FAILOVER1"

armkill WASC

echo "stopWAS.sh Start for FAILOVER" >> /opt/WebSphere/AppServer/logs/test.log /opt/WebSphere/AppServer/bin/stopWAS.sh >> /opt/WebSphere/AppServer/logs/test.log armlog "Stop WAS" -arm

#stop db2 poling armkill DB2POLING #stop db2 armlog "stop db2 1" /tmp/db2/fstop.sh db2inst1 armlog "stop db2 2" if [ "$ARMS_SERVER" = "HOME" ] then armlog "FAILOVER2" else armlog "ON_OTHER2" fi arm_rel_mntpoint else

armlog "ERROR_DISK from FAILOVER" fi else armlog "NO_ARM" fi armlog "EXIT" exit 0

(33)

CLUSTERPRO 作業報告書

5. クラスタ構成の検証

5. クラスタ構成の検証

WAS 、DB2 のクラスタ構成で WAS 、DB2 の動作およびリソースの引継ぎが正常に行われることを確認。

5.1. 検証項目

クラスターサーバ上で稼働する

IHS WAS、DB2 に対して行った検証項目および、検証結果は以下の通り。

内容は 「

5.2 検証内容」 を参照。

No

No

項目

項目

結果

結果

1

WAS 、IHS 障害時のシステムのテイクオーバー

OK

2

DB2 障害時のシステムのテイクオーバー

OK

3

システム・テイクオーバー時のセッションの引き継ぎ

OK

5.2. 検証内容

検証の内容は以下の通り。

1.

WAS 、IHS 障害時のシステムのテイクオーバー

WAS、IHS の障害とは、WAS モニタリング・スクリプトにより何らかの理由でアプリケーション・サーバー

へアクセスができなくなったと判断される状況を指します。

当動作検証では、

WAS プロセスを明示的に kill し、WAS モニタリング・スクリプトにより障害を自動検知さ

せました。障害検知後テイクオーバーが発生し、もう片側のサーバーで

IHS,WAS,DB2 が正常に起動すること

を確認しました。

2.

DB2 障害時のシステムのテイクオーバー

DB2 モニタリング・スクリプトにより DB2 の障害を自動検知させ、障害時には IHS,WAS,DB2 が正常にテイ

クオーバーされることを確認しました。

3. システム・テイクオーバー時のセッションの引継ぎ

上記の 1 および 2 においてテイクオーバー発生後、セッション・データが引き継がれていることを確認し

ました。当動作検証では、独自に作成したサンプル・アプリケーションを使用いたしました。

参照

関連したドキュメント

(1) テンプレート編集画面で、 Radius サーバ及び group server に関する設定をコマンドで追加して「保存」を選択..

事 業 名 夜間・休日診療情報の多言語化 事業内容 夜間・休日診療の案内リーフレットを多言語化し周知を図る。.

しかし,物質報酬群と言語報酬群に分けてみると,言語報酬群については,言語報酬を与

① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.

 模擬授業では, 「防災と市民」をテーマにして,防災カードゲームを使用し

「 SEED (しーど)きょうと」を立ち上げました。立ち上げ後より、 「きょうと摂食障害家 族教室」を開始し、平成

私たちは上記のようなニーズを受け、平成 23 年に京都で摂食障害者を支援する NPO 団 体「 SEED

私たちは上記のようなニーズを受け、平成 23 年に京都で摂食障害者を支援する任意団 体「 SEED