バックボーン ソフトウエア株式会社 163-0711 東京都新宿区西新宿 2-7-1 新宿第一生命ビル 11 階 Phone: (03) 5908-3511 Fax: (03) 5908-3512 www.bakbone.co.jp Article ID: NVSI-040063JP Created: 2004/09/03 Revised: -- NetVault on Serviceguard for Linux 動作検証 1. NetVault のクラスタ対応 適切な構成を行うことにより クラスタ上で稼動するアプリケーションのバックアップをフェールオーバを意識することなく NetVault として管理する事が可能です つまり どのクラスタノードでアプリケーションが稼動していても NetVault はそれに対するバックアップを同一の物として管理します このようなバックアップは 以下のような条件の元に構成可能です クラスタがフェールオーバ型クラスタである バックアップ対象のアプリケーションが Active-Standby 構成を取っている バックアップ サーバは クラスタ ノードとは別に用意する バックアップ デバイスは クラスタ ノードとは別のマシンに接続する 上記条件を満たさなくても 手法により NetVault でバックアップを取ることは可能です 例えば 各クラスタ ノードを独立した NetVault クライアントとして構成することで バックアップが行えます 2. 検証の目的 Serviceguard for Linux ( 以下 SGLX) は Hewlett-Packard 社のフェールオーバ タイプのクラスタ ソリューションです 本検証では SGLX と NetVault を統合し 以下の動作を確認することを目的としました 2004 BakBone Software Page(s): 1/9
SGLX 上で稼動する PostgreSQL のオンライン バックアップを行う際 フェールオーバを介しても 同一の NetVault クライアントからのバックアップとして認識される事を確認します 3. 検証結果概要 NetVault のクラスタ対応機能が SGLX と協調して稼動することを確認しました 4. 検証環境 クラスタ管理用ネットワーク (10Mbps) Public LAN (100Mbps) 172.16.0.6/16 172.16.3.201/16 172.16.3.202/16 192.168.10.100/24 192.168.10.1/24 192.168.10.2/24 SGLX Quorum Server (NetVault Server) SGLX Node-1: SGLX01 (NetVault Client) SGLX Node-2: SGLX02 (NetVault Client) オートローダ (SCSI) 共有ディスク (SCSI) SGLX Quorum Server/Backup Server (rhas3) メーカー 機種 ProLiant DL360G1 CPU PentiumIII 800MHz x 1 メモリ 384MB 内蔵ディスク容量 18GB x1 (Smart2: RAID0) OS Red Hat Enterprise Linux AS ver.3 Update1 Serviceguard ver. A.11.15 NetVault ver. NetVault7.1 server(r2004feb13-chief) オートローダ (SCSI) メーカー機種ドライブ SSL1016 LTO-2 SGLX Node-1 (SGLX01) メーカー 機種 ProLiant DL380G2 CPU PentiumIII 1.26GHz x 2 メモリ 1GB 内蔵ディスク 72GB x1 (SmartArray5i: RAID0) OS Red Hat Enterprise Linux AS ver.3 Update1 NetVault ver. NetVault7.1 client(r2004feb13-chief) SGLX Node-2 (SGLX02) メーカー 機種 ProLiant DL380G2 CPU PentiumIII 1.26GHz x 2 メモリ 1GB 2004 BakBone Software Page(s): 2/9
内蔵ディスク OS NetVault ver. 72GB x1 (SmartArray5i: RAID0) Red Hat Enterprise Linux AS ver.3 Update1 NetVault7.1 client(r2004feb13-chief) 共有ディスク (SCSI) メーカー機種ディスク MSA500 18GB x 2 (RAID1) + 18GB x 2 (RAID0) 5. SGLX 上での NetVault のインストール 前提条件 1. Serviceguard 環境 (Quorum サーバ 2 台のクラスタノード ) はすでに構築されており その上で PostgreSQL が Active-Standby で稼動していることとします 2. バックアップ サーバには オートローダが接続されており OS から認識できていることとします NetVault サーバの構成 1. 本検証環境では Quorum サーバに NetVault サーバ モジュールをインストールします 2. NetVault サーバに SSL1016 オートローダーを登録します Node-1 での NetVault クライアントのインストール時のポイント 1. NetVault をクラスタ対応で構成するには NetVault クライアントモジュールを共有ディスク上にインストールします そのために Node-1 に NetValut をインストールするディスクが見えるようにします 本検証では PostgreSQL がインストールされた共有ディスク上に NetVault をインストールするので Node-1 で PostgreSQL パッケージを稼動させます 2. Node-1 で NetVault のインストールスクリプトを起動します #./install Installer invoked in /mnt/cdrom/netvault710/linux24/netvault Using default /tmp as the temporary directory Expanding distribution file NetVault Copyright (c) BakBone Software Inc. 2000-2004 Have you read and agreed to the terms of the license? (y = yes, n = no, d = display license) (y n d) [d] : y 3. 各ノードでは NetVault クライアントをインストールすることが重要です Should a client or server version of NetVault be installed? (c s) [c] : c Select language? (1 English, 2 JapaneseEUC) [1] : 1 - English selected 4. インストール先としては PostgreSQL をインストールしている共有ディスク上のディレクトリ (/pgsql1/netvault) に NetVault クライアントをインストールします Where should NetVault be installed? [/usr/netvault] : /pgsql1/netvault Where should NetVault database be installed? [/pgsql1/db] : /pgsql1/netvault/db 5. NetVault マシン名として クラスタ内で共有する名前を付けます 別のクラスタノードで NetValut をインストールする際にも同じ名前を使用し NetVault サーバからはどのクラスタノードで NetVault クライアント プロセスが稼動しても同一の NetVault クライアントとして認識されるようになります 2004 BakBone Software Page(s): 3/9
Please enter a NetVault machine name using A-Z, a-z, _ and 0-9 [demo2rhas] : nvonsglx Please enter the NetVault password for this machine: Please confirm password: checkinstall running Installation completed successfully 6. NetVault プロセスの起動や停止をクラスタソフトからのみ制御させるために OS 起動時等の NetVault プロセスの自動起動の設定を削除します これにより rcx.d ディレクトリ以下にインストール時に自動的に作成されるスクリプトを削除します # nvpmgr remove 7. NetVault モジュールがインストールされたディスクが切り離されてしまう事態が発生した場合 NetVault プロセスを正常停止することが出来なくなってしまいます それを回避するために必要なファイルをローカルディスク上にコピーします # rm /usr/bin/nvpmgr # cp -r $NV_HOME/bin/nvpmgr /usr/bin # cd /usr/lib # rm libnv6.so libnv6plugin.so libnv6jobs.so libnv6audit.so libnv6db.so # cd $NV_HOME/lib # cp -r libnv6.so /usr/lib # cp -r libnv6plugin.so /usr/lib # cp -r libnv6jobs.so /usr/lib # cp -r libnv6audit.so /usr/lib # cp -r libnv6db.so /usr/lib $NV_HOME は NetVault モジュール インストール先を意味し 本ドキュメントでは /pgsql1/netvault に相当します 8. Node-2 での NetVault クライアントのインストールに備えて インストールした NetVault を削除します # rm -rf /pgsql1/netvault Node-2 での NetVault クライアントのインストール時のポイント 1. Node-2 でもインストール先を共有ディスク上のディレクトリとしてインストールを行います そのため PostgreSQL パッケージをフェールオーバさせ Node-2 からアクセスができるようにしておく必要があります 両ノードでインストール作業を繰り返すのは NetVault の稼動に必要なファイルが共有ディスク上以外のローカルディスクにも書き込まれるためです 2. Node-1 でのインストール手順 2 から手順 7 までを行います 指定するパラメータも同一にして下さい NetVault でのクラスタ関連の設定 NetVault をクラスタ環境で稼動させるために接続 IP アドレスの設定を行います $NV_HOME/config/nvnmgr.cfg を編集します [Network:Barred Addresses] Tab Name = Connections 2004 BakBone Software Page(s): 4/9
Tab Name Id = 3625 Type= String Width= 32 Label= Comma separated list of barred address(es) Label Id = 4027 Value=192.168.10.1,192.168.10.2,172.16.3.198 [Network:Fallback Addresses] Tab Name = Connections Tab Name Id = 3625 Type = String Width = 32 Label = Comma separated list of fallback address(es) Label Id = 3477 Value =172.16.3.201,172.16.3.202 [Network:Barred Addresses] の Value= には NetVault が使用しない IP アドレスを指定します 一般的には 仮想 IP アドレスやクラスタ間通信用の IP アドレスを指定します [Network:Fallback Addresses] の Value= には NetVault が使用する IP アドレスを指定します 各ノードでバックアップに使用する実 IP アドレスを指定します 上記の設定を行う事で クラスタ上で稼動する NetVault クライアントプロセスは Node-1 で稼動している時は Node-1 の実 IP アドレスを使用し Node-2 で稼動している時は Node-2 の実 IP アドレスを使用し NetVault サーバと通信する事が可能になります APM のインストール NetVault の APM(Application Plugin Module) を利用したバックアップを行う場合には対象の APM をインストールする必要があります 本検証では PostgreSQL のオンライン バックアップを行うために PostgreSQL APM を使用します 1. installplugin コマンドを用いて PostgreSQL APM(pos2210.npk) をインストールします # /pgsql1/netvault/bin/installplugin <cdrom_dir>/linux24/postgresql/v2.2/pos2210.npk 2. NetVault はその動作にライセンスが必要です NetVault クライアントの基本機能については NetVault サーバでライセンス管理がされますが NetVault クライアント上で稼動する APM は個々のクライアントでライセンスが必要になります APM をインストールした直後は 期間限定の評価用のライセンスで稼動します ライセンス情報はファイルとして存在し 実際のホスト名を元に作成されます よって 一つのクラスタノードに APM をインストールし作成されたライセンスファイルを元に別のクラスタノード用のライセンスファイルを生成します # cd /pgsql1/netvault/nvdb/bkl # cp plg-1044000-sglx01.bkl plg-1044000-sglx02.bkl 正規のライセンスを適応する場合は Node-1 で対象のアプリケーションを稼動させた状態で Node-1 用のライセンスキーを適応し さらにフェールオーバをさせ Node-2 で Node-2 用のライセンスキーを適応してください 6. SGLX への NetVault プロセスの統合 NetVault プロセスの起動 停止 監視の準備 2004 BakBone Software Page(s): 5/9
本検証環境では PostgreSQL を SGLX へ統合する為に SGLX PostgreSQL 用 Toolkit を使用しています 1. NetVault の起動の処理を PostgreSQL を制御するスクリプトに追加します /usr/local/cmcluster/conf/pgsql1/pgsql_pkg.cntl の function_customer_defined_run_cmds で PostgreSQL の起動の処理の後に NetVault の起動の処理を追加します # START OF CUSTOMER DEFINED FUNCTIONS # This function is a place holder for customer define functions. # You should define all actions you want to happen here, before the service is # started. You can create as many functions as you need. # function customer_defined_run_cmds { # Start the PostgreSQL Database Server. /usr/local/cmcluster/conf/pgsql1/toolkit.sh start test_return 51 # Start the NetVault Client process /pgsql1/netvault/etc/startup.sh start test_return 51 } 2. NetVault の停止の処理を PostgreSQL を制御するスクリプトに追加します /usr/local/cmcluster/conf/pgsql1/pgsql_pkg.cntl の function_customer_defined_halt_cmds で PostgreSQL の停止の処理の前に NetVault の停止の処理を追加します # This function is a place holder for customer define functions. # You should define all actions you want to happen here, before the service is # halted. # function customer_defined_halt_cmds { # Stop the NetVault Client process /pgsql1/netvault/etc/startup.sh stop test_return 51 sleep 10 # Stop the PostgreSQL Database Server /usr/local/cmcluster/conf/pgsql1/toolkit.sh stop test_return 51 2004 BakBone Software Page(s): 6/9
} # END OF CUSTOMER DEFINED FUNCTIONS 3. NetVault プロセスを監視するスクリプトを作成します ( 監視そのものの動作に関しては 本検証ではフォーカスしていないため 常時 真を返すような擬似スクリプトを用意しました ) また そのスクリプトを PostgreSQL を制御するスクリプトに登録します /usr/local/cmcluster/conf/pgsql1/pgsql_pkg.cntl というファイルの SERVICE NAME AND COMMANDES に監視用スクリプトを指定します SERVICE_NAME[0]="pgsql1_monitor" SERVICE_CMD[0]="/usr/local/cmcluster/conf/pgsql1/toolkit.sh monitor" SERVICE_RESTART[0]="-r 2" SERVICE_NAME[1]="netvault_monitor" SERVICE_CMD[1]="/usr/local/cmcluster/conf/pgsql1/netvault_monitor.sh" SERVICE_RESTART[1]="-r 2" 4. 本検証では 下記のような擬似スクリプトを作成しました このファイルは "/usr/local/cmcluster/conf/pgsql1/netvault_monitor.sh" として保存します #!/bin/sh while true do sleep 60 done パッケージ コンフィグレーション ファイルの編集 1. /usr/local/cmcluster/conf/pgsql1/pgsql_pkg.conf に NetVault のエントリを追加します # To configure a service, uncomment the following lines and # fill in the values for all of the keywords. # SERVICE_NAME pgsql1_monitor #SERVICE_FAIL_FAST_ENABLED NO #SERVICE_HALT_TIMEOUT 300 # Added to support NetVault SERVICE_NAME netvault_monitor SERVICE_FAIL_FAST_ENABLED NO SERVICE_HALT_TIMEOUT 300 以上の設定を クラスタの両ノードで行います SGLX 上で上記の構成を有効にします (cmapplyconf コマンド および SGLX の再起動を行います 詳細は SGLX のドキュメントをご参照ください ) 2004 BakBone Software Page(s): 7/9
7. NetVault のジョブの構成 クライアントの NetVault サーバへの追加 1. NetVault サーバにおいて上記の構成を行った NetVault クライアント ( 本検証では nvonsglx) をクライアントとして追加します PostgreSQL APM の構成 1. NetVault のバックアップ画面において NetVault クライアントのアイコン (nvonsglx) 配下にある PostgreSQL APM に PostgreSQL の情報を構成します PostgreSQL のデフォルト ポートは 5432 ですが SGLX 用の Toolkit を導入した場合には 5433 が推奨されます 設定値としては 実際に使用されているポート番号を指定します 2. バックアップ画面において PostgreSQL APM を展開して PostgreSQL に作成されたデータベースに接続できる事を確認します 3. PostgreSQL のデータベースや個々のテーブルなどをバックアップ対象として選択し さらに必要があれば その他の設定を別のタブで行い バックアップジョブを実行します 8. 検証項目と結果 2004 BakBone Software Page(s): 8/9
1. SGLX01 上で PostgreSQL を稼動させます NetVault クライアント (nvonsglx) から PostgreSQL APM によりオンライン バックアップが行える事を確認します 2. PostgreSQL パッケージを SGLX02 にフェールオーバさせます NetVault クライアント (nvonsglx) から PostgreSQL APM によりオンライン バックアップが行える事を確認します 3. SGLX02 上で稼動する PostgreSQL の特定のテーブル (test) を削除した後 手順 2 で取得したバックアップ データからリストアを行い テーブルがリストアされることを確認します 4. 手順 3 で 手順 2 で取得したバックアップ データの代わりに 手順 1 で取得したデータからリストアが問題なく行える事を確認します 5. PostgreSQL パッケージを SGLX01 にフェールオーバさせます 再度 nvonsglx から PostgreSQL APM によりオンライン バックアップが行える事を確認します 6. SGLX01 上で稼動する PostgreSQL の特定のテーブル (test) を削除した後 手順 5 で取得したバックアップ データからリストアを行い テーブルがリストアされることを確認します 7. 手順 6 で 手順 5 で取得したバックアップ データの代わりに 手順 2 で取得したデータからリストアが問題なく行える事を確認します 8. /pgsql1 以下のディレクトリを対象とした File System プラグインでの フルバックアップ 差分バックアップを行い フェ ルオーバを介しても 1 台の NetVault クライアント (nvonsglx) として一貫した差分バックアップ 及び世代管理が行える事も確認します 上記検証項目において 正常稼動を確認しました 以上 2004 BakBone Software Page(s): 9/9