Hitachi

ノンストップデータベース HiRDB Version 9 システム運用ガイド(UNIX(R)用)


26.2.8 LifeKeeperに関する準備

クラスタソフトウェアにLifeKeeperを使用している場合にこの項をお読みください。

なお,これらのリソースは,下記の順序で作成する必要があります。また,HiRDBが停止した状態で作成してください。

LifeKeeperの環境設定方法の詳細については,LifeKeeperのマニュアルを参照してください。

注意事項

HiRDBがLifeKeeperでの動作を保証するクラスタ構成は,1:1接続構成(1:1系切り替え構成,及び相互系切り替え構成)だけです。

また,ディスク構成は次のどちらかを選択してください。

  • 共有ディスク(SAN/SCSI)構成

  • DataKeeperによる複製ディスク構成

なお,DataKeeperによる複製ディスク構成は,ディスク間の整合性を保つ必要があるため,同期レプリケーションを選択してください。

また,DataKeeperによる複製ディスク構成は,ネットワーク性能がトランザクション性能に影響を及ぼすことがあります。十分に性能検証をして,運用方法を検討してください。

〈この項の構成〉

(1) IPリソースの作成

IPリソースを作成して,LifeKeeperに仮想IPアドレス(HiRDBのエイリアスIPアドレス)を設定します。IPリソースは,系切り替え後,IPアドレスを引き継ぐ場合だけ作成する必要があります。

システム共通定義のpdunitオペランドの-xオプションで指定したホスト名を仮想IPアドレスとして設定します。

仮想IPアドレスの設定は,LifeKeeperのGUI画面から[Edit]−[Server]−[Create Resource Hierarchy]−[IP]を選択して表示される画面で,次の表に示す項目を選択,又は指定します。

項目

選択値,又は指定値

Switchback Type

「intelligent」を選択します。

Server

現用系のホスト名を指定します。

IP Resource

pdunitオペランドの-xオプションで指定したホスト名,又はIPアドレスを指定します。

Netmask

pdunitオペランドの-xオプションで指定したホスト名,又はIPアドレスのネットマスクを指定します。

Network Interface

仮想IPアドレスを割り当てるインタフェースを指定します。

IP Resource Tag

LifeKeeper管理上の任意のIPリソース名を指定します。

現用系での設定が完了した後は,予備系でも設定を行います。上記の表の項目について予備系としての設定をしてください。

(2) ディスクに関連するリソースの作成

HiRDBファイルシステム領域を配置するディスクをLifeKeeperに設定します。

HiRDBファイルシステム領域は次の領域に配置できます。

(a) ファイルシステムリソースの作成

ファイルシステムリソースを作成して,LifeKeeperに共有ディスクを設定します。ファイルシステムリソースは,HiRDBファイルシステム領域を通常ファイル上に作成する場合に作成する必要があります。

なお,この設定は,共有ディスクが現用系に割り当てられていることを確認してから行ってください。

共有ディスクの設定は,LifeKeeperのGUI画面から[Edit]−[Server]−[Create Resource Hierarchy]−[File System]を選択して表示される画面で,次の表に示す項目を選択,又は指定します。

項目

選択値,又は指定値

Switchback Type

「intelligent」を選択します。

Server

現用系のホスト名を指定します。

Mount Point

共有ディスクのマウントポイントを選択します。

Root Tag

LifeKeeper管理上の任意の名称を指定します。

現用系での設定が完了した後は,予備系でも設定を行います。上記の表の項目について予備系としての設定をしてください。

(b) Rawデバイスリソースの作成

Rawデバイスリソースを作成して,LifeKeeperに共有ディスクを設定します。Rawデバイスリソースは,HiRDBファイルシステム領域を共有ディスクに対応したキャラクタ型スペシャルファイル上に作成する場合に作成する必要があります。

共有ディスクの設定は,LifeKeeperのGUI画面から[Edit]−[Server]−[Create Resource Hierarchy]−[Raw Device]を選択して表示される画面で,次の表に示す項目を選択,又は指定します。

項目

選択値,又は指定値

Switchback Type

「intelligent」を選択します。

Server

現用系のホスト名を指定します。

Raw Partition

共有ディスクのパーティションを選択します。

Root Tag

LifeKeeper管理上の任意の名称を指定します。

現用系での設定が完了した後は,予備系でも設定を行います。上記の表の項目について予備系としての設定をしてください。

(c) データレプリケーションリソースの作成

データレプリケーションリソースを作成して,DataKeeperによる複製ディスクを設定します。

DataKeeperによる複製ディスクの設定は,LifeKeeperのGUI画面から[Edit]−[Server]−[Create Resource Hierarchy]−[Data Replication]を選択して表示される画面で,次の表に示す項目を選択,又は指定します。

項目

選択値,又は指定値

Switchback Type

「intelligent」を選択します。

Server

現用系のホスト名を指定します。

Hierarchy Type

「Data Replication Resource」を選択します。

Source Disk

HiRDBファイルシステム領域を配置する現用系のディスクを指定します。

Data Replication Resource Tag

LifeKeeper管理上の任意の名称を指定します。

Bitmap File

DataKeeperがディスクの更新状態を記録するファイルの現用系のパスを指定します。

Enable Asynchronous Replication?

「no」を選択します。

現用系での設定が完了した後は,次の表に示す項目を選択,又は指定して予備系としての設定をしてください。

項目

選択値,又は指定値

Target Server

予備系のホスト名を指定します。

Switchback Type

「intelligent」を選択します。

Template Priority

現用系の優先度を指定します。

Target Priority

予備系の優先度を指定します。

Target Disk

HiRDBファイルシステム領域を配置する予備系のディスクを指定します。

Data Replication Resource Tag

LifeKeeper管理上の任意の名称を指定します。

Bitmap File

DataKeeperがディスクの更新状態を記録するファイルの予備系のパスを指定します。

Replication Path

データレプリケーションに使用するネットワークを選択します。

データレプリケーションリソースを作成すると,現用系にソフトウェアRAIDデバイス(/dev/md0など)が作成され,「Source Disk」及び「Target Disk」で指定したデバイス(/dev/sdaなど)にはアクセスできなくなります。

キャラクタ型スペシャルファイルを作成する場合や,HiRDBファイルシステム領域を作成する場合は,ソフトウェアRAIDデバイス(/dev/md0など)を指定してください。

(3) Generic ARKリソースの作成

Generic ARKリソースを作成して,HiRDBをLifeKeeperに設定し,HiRDB(HiRDB/パラレルサーバの場合はユニット)のリソースを作成します。

(a) スクリプトの作成

次に示すスクリプトを準備します。HiRDB(HiRDB/パラレルサーバの場合はユニット)のシェルスクリプトを作成した後,LifeKeeperから提供されているスクリプトにHiRDB(ユニット)のシェルスクリプトのパスを指定してください。

LifeKeeperから提供されているスクリプト

LifeKeeperから提供されているサンプルスクリプトを使用して,次のスクリプトを作成します。「HiRDB/シングルサーバの場合」又は「HiRDB/パラレルサーバの場合」の例を参照して作成してください。

  • 起動(Restore)スクリプト

  • 停止(Remove)スクリプト

HiRDBのシェルスクリプト

次のシェルスクリプトを作成します。「HiRDB/シングルサーバの場合」又は「HiRDB/パラレルサーバの場合」の例を参照して作成してください。

  • HiRDB(ユニット)を開始するシェルスクリプト(pdstart.sh)

  • HiRDB(ユニット)を終了するシェルスクリプト(pdstop.sh)

  • HiRDBの状態(ユニットの稼働状態)を表示するシェルスクリプト(pdls.sh)

シェルスクリプトの実行権限は,HiRDB管理者,又はルートユーザに与えてください。なお,これらのスクリプトは現用系,予備系の両方に格納する必要があります。

次にそれぞれのスクリプトの例を示します。この例ではHiRDB管理者のユーザIDをhirdb,スクリプトタイムアウトを600(秒)として作成しています。

HiRDB/シングルサーバの場合
●起動(Restore)スクリプト,及び停止(Remove)スクリプト

HiRDB/シングルサーバでは,起動(Restore)スクリプトと停止(Remove)スクリプトで同一の内容を指定します。例では,HiRDBの設定を指定する保護対象パラメータ設定(ユーザ定義)部分,及びパラメータ初期化部分だけを示します。

    :
 
#######################################
# 保護対象パラメータ設定 (ユーザ定義) #
#######################################
 
    :
APP_START="su - hirdb -c /HiRDB_S/conf/pdstart.sh" 
                                           # 起動コマンド.............1
APP_START_ARGS=""                          # 起動コマンドの引数
 
APP_STOP="su - hirdb -c /HiRDB_S/conf/pdstop.sh" 
                                           # 停止コマンド.............2
APP_STOP_ARGS=""                           # 停止コマンドの引数
 
APP_FORCE_STOP=""                          # 強制停止コマンド
APP_FORCE_STOP_ARGS=""                     # 強制停止コマンドの引数
 
APP_CHECK[0]="/HiRDB_S/conf/pdls.sh"       # 動作確認コマンド1........3
APP_CHECK_ARGS[0]=""                       # 上記コマンドの引数
 
# APP_CHECK[1]=""                          # 動作確認コマンド2
# APP_CHECK_ARGS[1]=""                     # 上記コマンドの引数
 
 
####################
# パラメータ初期化 #
####################
 
    :
DEFAULT_TIMEOUT=600         # スクリプトタイムアウト値
START_SUCCESS_CODE=0        # 動作確認コマンドの起動状態の戻り値
STOP_SUCCESS_CODE=12        # 動作確認コマンドの停止状態の戻り値
CHECK_RETRY_CODE=4          # 動作確認コマンドのリトライが必要な戻り値
    :
〔説明〕
  1. 起動コマンドに,HiRDBを開始するシェルスクリプト(pdstart.sh)のパスを記載します。

  2. 停止コマンドに,HiRDBを終了するシェルスクリプト(pdstop.sh)のパスを記載します。

  3. 動作確認コマンド1に,HiRDBの状態を表示するシェルスクリプト(pdls.sh)のパスを記載します。

●HiRDBを開始するシェルスクリプト(pdstart.sh)
#!/bin/sh -x
 
PDDIR=/HiRDB_S
PDCONFPATH=${PDDIR}/conf
LD_LIBRARY_PATH=${PDDIR}/lib:${LD_LIBRARY_PATH}
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH PATH LD_LIBRARY_PATH
 
$PDDIR/bin/pdstart
●HiRDBを終了するシェルスクリプト(pdstop.sh)
#!/bin/sh -x
 
PDDIR=/HiRDB_S
PDCONFPATH=${PDDIR}/conf
LD_LIBRARY_PATH=${PDDIR}/lib:${LD_LIBRARY_PATH}
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH PATH LD_LIBRARY_PATH
 
$PDDIR/bin/pdstop -f -q...................................1
〔説明〕
  1. 系が短時間で切り替わるように,終了コマンドには強制終了(pdstop -f -q)を用いてください。

●HiRDBの状態を表示するシェルスクリプト(pdls.sh)
#!/bin/sh -x
 
PDDIR=/HiRDB_S
PDCONFPATH=${PDDIR}/conf
LD_LIBRARY_PATH=${PDDIR}/lib:${LD_LIBRARY_PATH}
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH PATH LD_LIBRARY_PATH
 
$PDDIR/bin/pdls -d ust
HiRDB/パラレルサーバの場合

HiRDB/パラレルサーバでは,起動(Restore)スクリプトと停止(Remove)スクリプトで指定する内容が異なります。例では,HiRDBの設定を指定する保護対象パラメータ設定(ユーザ定義)部分,パラメータ初期化部分,Function部分及びMain(restore)部分だけを示します。

注意事項

HiRDB/パラレルサーバでユニットのリソースを起動する場合,ユニットを開始するシェルスクリプトを実行した時点で,LifeKeeperのGUI画面上ではユニットのリソースは稼働状態になります。また,ユニットのリソースを系切り替えする場合も,系切り替え先のユニットを開始するシェルスクリプトを実行した時点で,LifeKeeperのGUI画面上ではユニットのリソースは稼働状態になります。ユニットの起動が完了したかどうか,又は系切り替えが完了したかどうかはsyslogfileのKFPS05110-Iメッセージを確認してください。KFPS05110-Iメッセージが出力されていれば,ユニットの起動,又は系切り替えは完了しています。

また,syslogfileにエラーメッセージが出力され,ユニットの起動が失敗している場合は,起動失敗の要因を取り除いた後,LifeKeeperのGUI操作で[Out of Service]を選択し,ユニットのリソースを停止してから再起動してください。

●起動(Restore)スクリプト
    :
 
#######################################
# 保護対象パラメータ設定 (ユーザ定義) #
#######################################
 
    :
APP_START="su - hirdb -c /HiRDB_P/conf/pdstart.sh" 
                                            # 起動コマンド.............1
APP_START_ARGS=""                           # 起動コマンドの引数
 
APP_STOP="su - hirdb -c /HiRDB_P/conf/pdstop.sh" 
                                            # 停止コマンド.............2
APP_STOP_ARGS=""                            # 停止コマンドの引数
 
APP_FORCE_STOP=""                           # 強制停止コマンド
APP_FORCE_STOP_ARGS=""                      # 強制停止コマンドの引数
 
APP_CHECK[0]=""                             # 動作確認コマンド1........3
APP_CHECK_ARGS[0]=""                        # 上記コマンドの引数
 
# APP_CHECK[1]=""                           # 動作確認コマンド2
# APP_CHECK_ARGS[1]=""                      # 上記コマンドの引数
 
 
####################
# パラメータ初期化 #
####################
 
    :
DEFAULT_TIMEOUT=600         # スクリプトタイムアウト値
START_SUCCESS_CODE=0        # 動作確認コマンドの起動状態の戻り値
STOP_SUCCESS_CODE=12        # 動作確認コマンドの停止状態の戻り値
CHECK_RETRY_CODE=4          # 動作確認コマンドのリトライが必要な戻り値
    :
 
##################
# ログ出力関数   #
##################
 
    :
logcmd()...............................................................4
{
lklogmsg -l $1 -s "$APP" -a "$ACTION" -i $(($MSGID + $2)) -t $TAG -c $3 -- $4 &
}
 
    :
 
##################
# Main (restore) #
##################
 
    :
# 起動.................................................................5
APP_start
 
exit 0
〔説明〕

HiRDB/パラレルサーバの場合,ユニットを開始するシェルスクリプト(pdstart.sh)の終了を待たないようにするため,3.〜5.を満たす必要があります。

  1. 起動コマンドに,ユニットを開始するシェルスクリプト(pdstart.sh)のパスを記載します。

  2. 停止コマンドに,ユニットを終了するシェルスクリプト(pdstop.sh)のパスを記載します。

  3. 動作確認コマンド1を指定しないでください。

  4. ログ出力関数内のログ出力コマンド実行後のwaitの処理を削除します。

  5. 起動処理実行後の動作確認コマンド実行処理部分を削除します。また,起動(Resotre)スクリプトが正常終了するように,起動コマンド実行後に戻り値0がリターンする処理を入れます。

●停止(Remove)スクリプト
    :
 
#######################################
# 保護対象パラメータ設定 (ユーザ定義) #
#######################################
 
    :
APP_START="su - hirdb -c /HiRDB_P/conf/pdstart.sh"
                                               # 起動コマンド...........1
APP_START_ARGS=""                              # 起動コマンドの引数
 
APP_STOP="su - hirdb -c /HiRDB_P/conf/pdstop.sh"
                                               # 停止コマンド...........2
APP_STOP_ARGS=""                               # 停止コマンドの引数
 
APP_FORCE_STOP=""                              # 強制停止コマンド
APP_FORCE_STOP_ARGS=""                         # 強制停止コマンドの引数
 
APP_CHECK[0]="/HiRDB_P/conf/pdls.sh"
                                               # 動作確認コマンド1......3
APP_CHECK_ARGS[0]=""                           # 上記コマンドの引数
 
# APP_CHECK[1]=""                              # 動作確認コマンド2
# APP_CHECK_ARGS[1]=""                         # 上記コマンドの引数
 
 
####################
# パラメータ初期化 #
####################
 
    :
DEFAULT_TIMEOUT=600          # スクリプトタイムアウト値
START_SUCCESS_CODE=0         # 動作確認コマンドの起動状態の戻り値
STOP_SUCCESS_CODE=12         # 動作確認コマンドの停止状態の戻り値
CHECK_RETRY_CODE=4           # 動作確認コマンドのリトライが必要な戻り値
    :
〔説明〕
  1. 起動コマンドに,ユニットを開始するシェルスクリプト(pdstart.sh)のパスを記載します。

  2. 停止コマンドに,ユニットを終了するシェルスクリプト(pdstop.sh)のパスを記載します。

  3. 動作確認コマンド1に,ユニットの稼働状態を表示するシェルスクリプト(pdls.sh)のパスを記載します。

●ユニットを開始するシェルスクリプト(pdstart.sh)
#!/bin/sh -x
 
PDDIR=/HiRDB_P
PDCONFPATH=${PDDIR}/conf
LD_LIBRARY_PATH=${PDDIR}/lib:${LD_LIBRARY_PATH}
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH PATH LD_LIBRARY_PATH
 
$PDDIR/bin/pdstart -q &....................................1
〔説明〕
  1. HiRDB/パラレルサーバの場合,ユニットを開始するシェルスクリプトの終了を待たないようにするため,pdstart -qコマンドに「&」を付けて,バックグラウンドで実行します。

●ユニットを終了するシェルスクリプト(pdstop.sh)
#!/bin/sh -x
 
PDDIR=/HiRDB_P
PDCONFPATH=${PDDIR}/conf
LD_LIBRARY_PATH=${PDDIR}/lib:${LD_LIBRARY_PATH}
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH PATH LD_LIBRARY_PATH
 
$PDDIR/bin/pdstop -z -q....................................1
〔説明〕
  1. 系が短時間で切り替わるように,終了コマンドには強制終了(pdstop -z -q)を用いてください。

●ユニットの稼働状態を表示するシェルスクリプト(pdls.sh)
#!/bin/sh -x
 
PDDIR=/HiRDB_P
PDCONFPATH=${PDDIR}/conf
LD_LIBRARY_PATH=${PDDIR}/lib:${LD_LIBRARY_PATH}
PATH=${PATH}:${PDDIR}/bin
export PDDIR PDCONFPATH PATH LD_LIBRARY_PATH
 
$PDDIR/bin/pdls -d ust

(b) スクリプトの登録

スクリプトを登録し,HiRDB(HiRDB/パラレルサーバの場合はユニット)のリソースを作成します。

スクリプトの登録は,LifeKeeperのGUI画面から[Edit]−[Server]−[Create Resource Hierarchy]−[Generic Application]を選択して表示される画面で,次の表に示す項目を選択,又は指定します。

項目

選択値,又は指定値

Switchback Type

「intelligent」を選択します。

Server

現用系のホスト名を指定します。

Restore Script

起動(Restore)スクリプトの格納場所を指定します。

Remove Script

停止(Remove)スクリプトの格納場所を指定します。

QuickCheck Script

指定しません。

Application Info

指定しません。

Bring Resource In Service

「No」を選択します。

Resource Tag

LifeKeeper管理上の任意のリソース名を指定します。

現用系での設定が完了すると,予備系を設定するための[Pre-Extend Wizard]画面に移りますが,[Cancel]を選択して,LifeKeeperのGUI画面で現用系にHiRDBのリソースが作成されていることを確認してください。なお,HiRDB/パラレルサーバで複数のユニットが存在する場合は,ユニット数分の設定を行い,ユニット数分のリソースが作成されていることを確認してください。

その後,HiRDB(ユニット)のリソースのアイコン上で右クリックのメニューから[In Service]を選択し,HiRDB(ユニット)を起動してください。HiRDB(ユニット)の起動完了後,GUI画面上でHiRDB(ユニット)のリソースが有効になったことを確認してから,[Extend Resource Hierarchy]を選択して予備系の設定を行ってください。

(4) リソース階層の作成

作成したリソースの階層を設定します。

リソース階層の設定は,HiRDB(HiRDB/パラレルサーバの場合はユニット)のリソースのアイコン上で右クリックのメニューから[Create Dependency]を選択します。親リソース,及び子リソースは,次のように設定します。

親リソース

子リソース