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

CLUSTERPRO 作業報告書

N/A
N/A
Protected

Academic year: 2021

シェア "CLUSTERPRO 作業報告書"

Copied!
18
0
0

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

全文

(1)

Micro Focus Server Express + CLUSTERPRO

- 検証報告書 -

2003 年 12 月 16 日版

(2)

目次

目次

1. 概要...3

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

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

3. CLUSTERPRO の構築...5

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

3.2. Turbolinux 8 CLUSTERPRO SE...6

3.2.1. CLUSTERPRO インストール準備...6

3.2.2. CLUSTERPRO のインストール...6

3.2.3. クラスタの設定... 6

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

4.1. Server Express のインストール...8

4.2. Server Express のクラスタ設定...8

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

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

5.1. 検証項目...13

5.2. 検証内容...13

6. 付録...14

6.1. 検証用プログラムコード...14

(3)

CLUSTERPRO 作業報告書

1. 概要

1.

概要

この文書は、

Server Express 2.2 J の動作環境を Turbolinux 8 CLUSTERPRO SE によるクラスタ上に作成し、クラスタの動作

検証を行った際の手順を記載するものである。

作業場所

作業場所

郵便番号

住所

御担当者名

連絡先

作業日

作業者

作業者

会社名

マイクロフォーカス株式会社

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

この文章は

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

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

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

(4)

CLUSTERPRO 作業報告書

2. 対象システム

2. 対象システム

2.1. ハードウェア構成

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

項目

項目

内容

内容

メーカー名

DELL

製品名

PowerEdge 1300

プロセッサ

CPU

Pentium III

チップセット

メモリ

256MB

(5)

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 アドレス

192.168.3.230

ネットワーク

192.168.3.0 / 255.255.255.0

インターフェース

- eth1

インターコネクト

IP アドレス

10.1.1.1

ネットワーク

10.1.1.0 / 255.255.255.0

ホスト名

qa-230

クラスタサーバ2

項目

項目

内容

内容

インターフェース

- eth0

パブリック

LAN

IP アドレス

192.168.3.231

ネットワーク

192.168.3.0 / 255.255.255.0

インターフェース

- eth1

インターコネクト

IP アドレス

10.1.1.2

ネットワーク

10.1.1.0 / 255.255.255.0

ホスト名

qa-231

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

# mount /media/cdrom

# cd /media/cdrom

# ./install_update_rpms.sh

(6)

CLUSTERPRO 作業報告書

3. CLUSTERPRO の構築

3.2. Turbolinux 8 CLUSTERPRO SE

各サーバに次の

CLUSTERPRO をインストール。

製品名

製品名

Turbolinux 8 CLUSTERPRO SE

3.2.1. CLUSTERPRO インストール準備

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

ここでは共有ディスクへの接続設定は完了しているものとする。

片方のマシンから

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

# fdisk /dev/sdb

CLUSTER パーティション

/dev/sdc1

10MB

Server Express 用切替パーティション

/dev/sdc8

11GB

3.2.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.2.3. クラスタの設定

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

項目

項目

内容

内容

スーパークラスタ名

SuperCluster

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

ディスク

###NEC_NP1

COM ポート

-

サブクラスタ

サブクラスタ名

SubCluster

サーバ

qa-230 , qa-231

グループ

MFSE

(7)

CLUSTERPRO 作業報告書

3. CLUSTERPRO の構築

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

Server Express 用フェイルオーバグループの設定内容は以下の通り。

項目

項目

内容

内容

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

MFSE

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

qa-230 → qa-231

リソース

仮想

IP アドレス

192.168.3.232/255.255.255.0

切替パーティション名

/dev/sdc8

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

/mnt/raid1

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

11GB

ファイルシステム

ext3

マウントオプション

rw

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

CLUSTERPRO 用 fstab は以下の通り。

/etc/clusterpro/fstab

NP ###NEC_NP1 /dev/sdc1

SW sdc8 /dev/sdc8 /mnt/raid1 ext3 rw

WD ###NEC_NP1 /dev/sdc1

WD sdc8 /dev/sdc8

:fsckopt -y

:mnttimeout 300

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

  簡易設定手順書を参照。

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

(8)

CLUSTERPRO 作業報告書

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

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

各サーバに

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

4.1. Server Express のインストール

各サーバに次の

Server Express をインストール。

製品名

製品名

Micro Focus Server Express 2.2 J

各サーバに

Server Express をインストールする。

Server Express 本体はデフォルトのインストール先 /opt/lib/cobol を使用

・ライセンスデータベースはデフォルトのインストール先

/opt/lib/mflmf を使用

/opt は各サーバのローカルディスクに持つ

注)

Server Express のライセンスデータベースは共有ディスクに持つことができません。

   ライセンスデータベースを共有ディスクに置くと、待機系への切り替えでディスクが再マウントされるときに、

  ライセンスのコピープロテクションメカニズムが検知して、データベースの破損とみなされます。

ライセンスを各サーバにインストールする。

Micro Focus COP Framework を /mnt/raid1(共有ディスク)にインストールする。

※以下の

URL よりダウンロード

ダウンロード先

http://www.microfocus.co.jp/support/fixpacks/COP_Framework.html

/mnt/raid1(共有ディスク)上の COP Framework の配下に COBOL アプリケーションプログラムと、アプリ

ケーションデータファイルを配備する。

※「

6.1 検証用プログラムコード」 の 「サーバ側 COBOL プログラム」 参照

Windows クライアントの準備。

COBOL を呼び出す Java GUI クライアントとして使用。Java GUI から値を入力し、サーバ側 COBOL アプリ

ケーションが正しく値を受け取っていることを確認する。

※「

6.1 検証用プログラムコード」の「Windows クライアント側 Java プログラム」参照

4.2. Server Express のクラスタ設定

クラスタで使用する

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

クラスタの Server Express 用グループがアクティブなサーバからコピーを実行する。 

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

/mnt/raid1/mfdata

COBOL Server 用スクリプト

StartUp.sh

(9)

CLUSTERPRO 作業報告書

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

    ○スクリプト

       本検証で使用した

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

        ※デフォルトのスタートアップスクリプトを編集して使用。

   ・ 

"&" を付加してバックグラウンド処理にする

   ・ 

">> COBOLSrv.log" を付加してコンソール出力をログファイルに出力 

StartUp.sh

#!/bin/sh

 COBDIR=/opt/lib/cobol

 export COBDIR

 JH=/usr/java/jre1.3.1_08

 

export JH

 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$COBDIR/lib:$JH/lib/i386:$JH/lib/i386/client

 export LD_LIBRARY_PATH

 PATH=$PATH:$COBDIR/cobbin:$JH/bin

 export PATH

 TERM=vt100

 

export TERM

 export CLASSPATH=COPClient.jar:$JH/lib/rt.jar:$CLASSPATH

 echo COBOL Server Starting `date` >> COBOLSrv.log

 cobjrun -jar COPServer.jar $* >> COBOLSrv.log 2>> COBOLSrv.log &

(10)

CLUSTERPRO 作業報告書

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

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

起動

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

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

COBOL Server の起動および停止のスクリプトを定義。

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

MOUNTPOINT=`armlsmnt -l $ARMS_RESOURCELIST`

cd $MOUNTPOINT/mfdata; ./StartUp.sh

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"

MOUNTPOINT=`armlsmnt -l $ARMS_RESOURCELIST`

cd $MOUNTPOINT/mfdata; ./StartUp.sh

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

(11)

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"

killall -9 cobjrun

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

armlog "ERROR_DISK from START" fi

elif [ "$ARMS_EVENT" = "FAILOVER" ] then if [ "$ARMS_DISK" = "SUCCESS" ] then armlog "FAILOVER1"

killall -9 cobjrun

if [ "$ARMS_SERVER" = "HOME" ]

(12)

CLUSTERPRO 作業報告書

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

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

(13)

CLUSTERPRO 作業報告書

5. クラスタ構成の検証

5. クラスタ構成の検証

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

5.1. 検証項目

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

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

内容は 「

5.2 検証内容」 を参照。

No

No

項目

項目

結果

結果

1

スタートアップスクリプトによる 

COBOL Server の起動

OK

2

CLUSTERPRO マネージャによるグループの移動

OK

3

Windows クライアントからの COBOL の呼び出し (稼働系)

OK

4

Windows クライアントからの COBOL の呼び出し (待機系)

OK

5.2. 検証内容

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

1. スタートアップスクリプトによる 

COBOL Server の起動

CLUSTERPRO のスタートアップスクリプトより、COBOL Server の起動が正常に完了することを確認。

2. CLUSTERPRO マネージャによるグループの移動

CLUSTERPRO マネージャからグループの移動を実行し、待機系で正常に稼働することを確認。

3. Windows クライアントからの COBOL の呼び出し(稼働系)

稼働系で

COBOL Server を起動し、Windows 上の Java クライアントから COBOL の呼び出しができることを

確認。

4.

Windows クライアントからの COBOL の呼び出し(待機系)

(14)

CLUSTERPRO 作業報告書

6. 付録

6. 付録

6.1. 検証用プログラムコード

本検証で使用したプログラムは以下の通り。

サーバ側 COBOL プログラム

CustCob.cbl $set REENTRANT(2) FILE-CONTROL.

SELECT CUST-MASTER ASSIGN TO "CUST.dat"

ORGANIZATION INDEXED RECORD KEY FS-CUSTID ACCESS MODE RANDOM.

DATA DIVISION. FILE SECTION. FD CUST-MASTER.

01 CUST-REC.

05 FS-CustId PIC X(4) COMP-5. 05 FS-CustName PIC X(30). 05 FS-CustCompany PIC X(30). 05 FS-CustEmail PIC X(30). LINKAGE SECTION.

01 OPCODE PIC X(4) COMP-5. 01 CustId PIC X(4) COMP-5. 01 CustName PIC X(30). 01 CustCompany PIC X(30). 01 CustEmail PIC X(30). PROCEDURE DIVISION

USING OPCODE CustId CustName CustCompany CustEmail. 1.

DISPLAY "IN: CustId = ", CustId. OPEN I-O CUST-MASTER.

MOVE CustId TO FS-CustId. MOVE CustName TO FS-CustName. MOVE CustCompany TO FS-CustCompany. MOVE CustEmail TO FS-CustEmail. EVALUATE OPCODE WHEN 1 READ CUST-MASTER INVALID CONTINUE END-READ WHEN 2 WRITE CUST-REC INVALID CONTINUE END-WRITE WHEN 3 REWRITE CUST-REC INVALID CONTINUE END-REWRITE WHEN 4 DELETE CUST-MASTER INVALID CONTINUE END-DELETE END-EVALUATE. CLOSE CUST-MASTER.

DISPLAY "OUT: CustName = ", CustName. MOVE FS-CustId TO CustId. MOVE FS-CustName TO CustName. MOVE FS-CustCompany TO CustCompany. MOVE FS-CustEmail TO CustEmail. EXIT PROGRAM.

(15)

CLUSTERPRO 作業報告書

6. 付録

Windows クライアント側 Java プログラム

CustJava.java import java.awt.*; import java.awt.event.*; import com.microfocus.cobol.cop.*; import com.microfocus.cobol.cop.lang.*; import java.io.*; import java.net.*;

public class CustJava extends Frame {

// 画面上のコントロール

MenuBar ApplicationMenu = new MenuBar(); Menu menu1 = new Menu();

Menu menu2 = new Menu();

MenuItem menuItem1 = new MenuItem(); MenuItem menuItem3 = new MenuItem(); MenuItem menuItem4 = new MenuItem(); MenuItem menuItem5 = new MenuItem(); MenuItem menuItem6 = new MenuItem(); Label label1 = new Label();

Label label2 = new Label(); Label label3 = new Label(); Label label4 = new Label(); Label label5 = new Label(); Label label6 = new Label(); TextField tf3 = new TextField(); TextField tf4 = new TextField(); TextField tf5 = new TextField(); TextField tf6 = new TextField(); public static void main(String[] args) {

CustJava frame = new CustJava(); frame.validate(); frame.setVisible(true); } public CustJava() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } //Component initialization

private void jbInit() throws Exception { this.setSize(new Dimension(600, 200)); this.setTitle("顧客管理デモ Java 画面"); ApplicationMenu.setHelpMenu(menu2); menu1.setLabel("ファイル"); menuItem1.setLabel("終了"); menu2.setLabel("処理選択"); label1.setFont(new Font("Dialog", 1, 16)); label1.setAlignment(1); label1.setText("顧客マスターメンテナンス"); label2.setAlignment(0); label2.setText(""); label3.setAlignment(0); label3.setText("顧客 No."); label4.setAlignment(0); label4.setText("顧客名");

(16)

CLUSTERPRO 作業報告書

6. 付録

label5.setText("会社名"); label6.setAlignment(0); label6.setText("Email"); menuItem3.setLabel("参照"); menuItem4.setLabel("追加"); menuItem5.setLabel("更新"); menuItem6.setLabel("削除"); menuItem6.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) { menuItem6_actionPerformed(e); } }); menuItem5.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) { menuItem5_actionPerformed(e); } }); menuItem4.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) { menuItem4_actionPerformed(e); } }); menuItem3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) { menuItem3_actionPerformed(e); } }); menuItem1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(ActionEvent e) { menuItem1_actionPerformed(e); } }); this.setLayout(new GridLayout(6,2)); ApplicationMenu.add(menu1); ApplicationMenu.add(menu2); this.setMenuBar(ApplicationMenu); menu1.add(menuItem1); this.add(label1, null); this.add(label2, null); this.add(label3, null); this.add(tf3, null); this.add(label4, null); this.add(tf4, null); this.add(label5, null); this.add(tf5, null); this.add(label6, null); this.add(tf6, null); menu2.add(menuItem3); menu2.add(menuItem4); menu2.add(menuItem5); menu2.add(menuItem6);

WindowListener listener = new WindowListener(); addWindowListener(listener);

(17)

CLUSTERPRO 作業報告書

6. 付録

}

public void windowClosing(WindowEvent e) {

System.exit(0); }

}

private int call_cobol(int opcode) {

Pointer ptr;

ClientRequest cop = new ClientRequest(); try { cop.setMachine(InetAddress.getByName("qa-232")); // ホスト名 "qa-232" は、クラスタの仮想IPアドレス 192.168.3.232 // にマップして、hosts に定義しておく。 // 各ノードのホスト名を指定してはならない。 cop.setPort(9200); // ポート番号 9200 は、COBOL Server のデフォルト値 cop.connect(); } catch(Exception e) {

System.err.println("COBOL Server connection error : " + e.getMessage() + "\n"); return 1;

}

ParameterList inParams = new ParameterList(); inParams.add(opcode).add(new Integer(tf3.getText())); inParams.add(new Pointer(tf4.getText(), 30)); inParams.add(new Pointer(tf5.getText(), 30)); inParams.add(new Pointer(tf6.getText(), 30)); ParameterList outParams = new ParameterList(); try

{

cop.cobcall("CustCob", inParams, outParams); }

catch(Exception e) {

System.err.println("COBOL calling error : " + e.getMessage() + "\n"); return 2;

}

Integer custId = (Integer) outParams.getArgument(1); tf3.setText(custId.toString()); ptr = (Pointer) outParams.getArgument(2); tf4.setText(new String(ptr.getBytes())); ptr = (Pointer) outParams.getArgument(3); tf5.setText(new String(ptr.getBytes())); ptr = (Pointer) outParams.getArgument(4); tf6.setText(new String(ptr.getBytes())); return 0; } void menuItem1_actionPerformed(ActionEvent e) { System.exit(1); } void menuItem3_actionPerformed(ActionEvent e) { call_cobol(1); } void menuItem4_actionPerformed(ActionEvent e)

(18)

CLUSTERPRO 作業報告書

6. 付録

call_cobol(2); } void menuItem5_actionPerformed(ActionEvent e) { call_cobol(3); } void menuItem6_actionPerformed(ActionEvent e) { call_cobol(4); } void this_windowClosed(WindowEvent e) { System.exit(0); } }

参照

関連したドキュメント

調査対象について図−5に示す考え方に基づき選定した結果、 実用炉則に定める記 録 に係る記録項目の数は延べ約 620 項目、 実用炉則に定める定期報告書

約3倍の数値となっていた。),平成 23 年 5 月 18 日が 4.47~5.00 (入域の目 的は同月

data-set-name BOOLEAN 参照 DataSet true(レポート内に収容). data-reference BOOLEAN データ項目情報

確認事項 確認項目 確認内容

確認事項 確認項目 確認内容

確認事項 確認項目 確認内容

検証の流れ及び検証方法の詳細については、別途、「特定温室効果ガス排出量検証 ガイドライン

検証を進めていくうえで、登録検証機関が本ガイドラインによる規準では判断ができ