Comments
Transcript
DB2 for WindowsとMSCSを組み合わせた構成ガイド(DB2 V8.1
DB2 for Windows と MSCS を組み合わせた 構成ガイド(DB2 V8.1 ESE 編) 第一版 日本アイ・ビー・エム株式会社 ソフトウェア事業 1 本書について 目的 本書は、Windows プラットフォーム上において MSCS と DB2 を組み合わせた構成方法を簡単にまと めたガイドです。 商標について 本書に掲載されているシステム名、製品名等は、一般にその開発元の商標または登録商標です。 Microsoft, Windows, Windows NT および、Windows2000 は Microsoft Corporation の米国および その他の国における商標です。 本書では、本書を製作する目的でのみそれらの商品名、団体名を記載しており、弊社としては、その 商標権を侵害する意思目的のないことを申し述べておきます。 おことわり 本書で記載した内容は必ずしもユーザー様の実環境に適した内容ではございません。あくまでも、一つ の目安として捉えていただき、実環境を把握したユーザー様の十分なご判断の元にご使用いただくよう お願い申し上げます。 2 目次 本書について.................................................................................................................................................... 2 1 2 MSCS(Microsoft Cluster Service)............................................................................................................ 4 1.1 Microsoft のクラスタリング機能概要 ......................................................................................................... 4 1.2 MSCS の概要............................................................................................................................................ 4 1.2.1 MSCS のリソース間の依存関係 ....................................................................................................... 5 1.2.2 MSCS を用いたクラスター構成の形態............................................................................................. 5 MSCS と DB2 UDB を組み合わせた実装方法 ....................................................................................... 7 2.1 2.1.1 システム構成 ..................................................................................................................................... 7 2.1.2 ネットワーク情報 ................................................................................................................................ 8 2.1.3 DB2 のディスク配置 .......................................................................................................................... 8 2.2 DB2 導入前の準備 ................................................................................................................................... 9 2.3 DB2 の導入............................................................................................................................................... 9 2.3.1 アクティブ・ノード(ixa001)への DB2 ESE のインストール ............................................................... 9 2.3.2 Fixpak の適用 ................................................................................................................................. 10 2.3.3 共有ディスクの引継ぎ(手動) ......................................................................................................... 10 2.3.4 スタンバイ・ノード(ixa002)への DB2 ESE のインストール ............................................................. 11 2.3.5 Fixpak の適用 ................................................................................................................................. 11 2.4 3 4 MSCS と DB2 を組み合わせた構成例..................................................................................................... 7 DB2MSCS ユーティリティを用いた設定................................................................................................. 12 2.4.1 DB2MSCS ユーティリティの概要.................................................................................................... 12 2.4.2 DB2MSCS ユーティリティ用構成ファイル(db2mscs.cfg)の設定 .................................................. 12 2.4.3 DB2MSCS ユーティリティの実行.................................................................................................... 17 2.5 フェールオーバーの稼動確認 ............................................................................................................... 21 2.6 補足事項 ................................................................................................................................................. 22 2.6.1 フェールオーバープロセス ............................................................................................................. 22 2.6.2 スクリプト .......................................................................................................................................... 22 2.6.3 管理サーバーについて .................................................................................................................. 22 2.6.4 インスタンスのデクラスタリング ........................................................................................................ 23 障害を想定したフェールオーバーのテスト ............................................................................................ 24 3.1 テストシナリオ .......................................................................................................................................... 24 3.2 テスト結果 ................................................................................................................................................ 25 参考文献 ................................................................................................................................................. 26 3 1 MSCS(Microsoft Cluster Service) 1.1 Microsoft のクラスタリング機能概要 Microsoft のサーバーは、ネットワーク負荷分散(NLB)、コンポーネント負荷分散(CLB)、Microsoft Cluster Service(MSCS)の 3 つのテクノロジを用いてクラスタリングをサポートします。 NLB はフロントエンドクラスターとして動作し、着信した IP トラフィックを複数のサーバーからなるクラス ターに分配する機能で、スケーラビリティと高度な可用性を実現します。 CLB は、サイトのビジネスロジックを実行している複数のサーバー間で、COM+コンポーネントの動的 なバランシングを行い、作業負荷を分散します。CLB は、NLB と MSCS の両方と連携し、多層形式の クラスター化されたネットワークの中間層の役割を果たします。 MSCS はバックエンドクラスターとして動作し、データベース、メッセージング、ファイルおよびプリントサ ービスといったアプリケーションの高度な可用性を実現します。クラスター内のいずれかのサーバーに 障害が発生したり、オフラインになった時のシステムに対する影響を最小限に抑えるよう働きます。 NLB がネットワークの可用性を高めるのに効果があるのに対し、MSCS はアプリケーション自体の可用 性を高めるところに大きな違いがあります。 1.2 MSCS の概要 MSCS を利用するには以下の製品が必要です。 ・Windows NT Server,Enterprise Edition 4.0(SP3∼) ・Windows 2000 Advanced Server ・・・最大 2 ノードのクラスタリング ・・・最大 2 ノードのクラスタリング ・Windows 2000 Datacenter Server ・・・最大 4 ノードのクラスタリング ・Windows Server 2003,Enterprise Edition ・・・最大 8 ノードのクラスタリング ・Windows Server 2003,Datacenter Edition ・・・最大 8 ノードのクラスタリング クラスター内の各ノードは、独自のメモリ、システムディスク、OS、クラスターのリソースのサブセットを持 っています。MSCS がサポートするリソースとは、IP アドレス、ネットワーク名、物理ディスク、ファイル共 有、汎用アプリケーションなどのことをいいます。 MSCS は、アプリケーションやサーバーの障害発生を検知するために「ハートビート」ソフトウェアを使 用しており、いずれかのノードが障害を起こすと、MSCS は自動的に、他の正常に稼動するノードへリ ソースのオーナーシップを移します。この処理のことを「フェールオーバー」といいます。フェールオー バーはリソース・グループ単位で行われ、グループに登録した全てのリソースが他の正常に稼動するノ ードに引き継がれ、再起動されます。 アプリケーションは、仮想的なネットワーク名と仮想的な IP アドレスを持つ仮想サーバ上で動作してい るので、ノードが切り替わっても、クライアントは引き続きサービスを受けることができます。 1 つのネットワーク障害によってクラスター全体がダウンする状況を回避するため、クライアントとの通信 とハートビートは別々のネットワークを使用します。 4 図 1.MSCS 構成例 クライアント Public Network 仮想サーバ グループ グループ Private Network リソース リソース リソース リソース リソース リソース アクティブ・ノード スタンバイ・ノード 共有ディスク 1.2.1 MSCS のリソース間の依存関係 リソースには、「オンライン」、「オンライン待ち」、「オフライン」、「オフライン待ち」、「障害」の状態があり ます。 各リソースには、依存関係を設定する必要があるものがあります。依存関係の設定は、グラフィカルな 管理ツールである「クラスタアドミニストレータ」を使用して行うことができます。例えば、ネットワーク名リ ソースのオンライン化の前には、IP アドレスリソースがオンラインになっていなければ意味がないような 場合、ネットワーク名リソースに IP アドレスリソースへの依存を指定します。 依存関係を指定すると、オンライン化、オフライン化の順序が決定します。依存されるリソースから順に オンライン化され、依存するリソースから順にオフライン化されます。 図 2.オンライン化、オフライン化順の例 リソース ネットワーク名 オ ンラ イ ン 化 オフライン化 IP アドレス 物理ディスク アプリケーション クラスター環境では、クォーラム・リソースというクラスターの回復に必要なデータを持つ特別なリソース が存在します。クォーラム・リソースとして指定できるのは原則として物理ディスク・リソースのみで、一度 に 1 つのノードにのみ所有、制御されます。 1.2.2 MSCS を用いたクラスター構成の形態 以下のような構成が可能です。 5 ・ホット・スタンバイ構成 アクティブ・スタンバイ、ホット・スペアなどとも呼ばれます。 平常時は一方のノードが稼動状態、他方のノードは待機状態であり、障害発生時には待機していたノ ードが処理を引き継ぐ構成です。 障害時のフェールオーバー後のパフォーマンスは、2 つのノードが同等の処理能力を持っていた場合 は平常時とほぼ同じです。 ・相互テイクオーバー構成 アクティブ・アクティブなどとも呼ばれます。 平常時は双方のノードがそれぞれのアプリケーションを実行しており、障害発生時には正常なノードが 障害の起きたノードの処理を引き継ぐ構成です。 障害時のフェールオーバー後のパフォーマンスは、一方のノードに処理が集中するため平常時よりも 下がります。一方のノードに処理が集中するケースを考慮した、余裕のあるシステム構築が必要です。 ・N+1ホット・スタンバイ構成 平常時は N ノードが稼動状態、専用に設けた 1 つのノードが待機状態であり、障害発生時には待機し ていたノードが処理を引き継ぐ構成です。スタンバイ・ノードが新たな障害に備えられるよう、この構成 では即時フェールバックの設定を行うことが重要です。 障害時のフェールオーバー後のパフォーマンスは、1 つのノードだけに障害が発生した場合は平常時 とほぼ同じですが、複数のノードがダウンした場合は低下します。 図 3.クラスターの形態 ■ホット・スタンバイ 1 ■N+1 ホット・スタンバイ 1 1 2 2 3 1 ■相互テイクオーバー 1 2 2 1 3 6 2 MSCS と DB2 UDB を組み合わせた実装方法 MSCS では DB2 インスタンスを共有ディスク上に配置することで高可用性を実現します。DB2 インスタ ンスは一度ローカルに作成した後、DB2MSCS ユーティリティを使用して共有ディスク上へ再配置しま す。 DB2MSCS ユーティリティが行う作業は以下の通りです。 ・ DB2 リソース・タイプ(db2wolf.dll)を登録 ・ MSCS グループ(1 つ、または複数)を作成 ・ IP アドレス、Network Name 等のリソースを作成、グループへ追加 ・ MSCS ディスクをグループへ移動 ・ DB2 リソース(1 つ、または複数)を作成、グループへ追加 ・ リソース間の依存関係を設定 ・ DB2 非クラスター・インスタンスを、クラスター・インスタンスへ変換 ・ 全てのリソースをオンライン化 DB2 リソースは DB2 インスタンスを管理し、その名前は DB2 インスタンスと同じになります。(例:DB2) パーティション・データベース環境では、DB2 リソースはそれぞれパーティションを管理し、その名前は インスタンス名およびパーティション (またはノード) 番号によって構成されます。(例: DB2MPP−0) 単一パーティション、またはパーティション・グループは、1 つの MSCS グループに属することができま す。パーティションが同一グループにある場合、それらは常に同時に同一ノード上に存在します。同時 に異なるノード上に異なるパーティションを持つ必要がある場合、パーティションは異なる MSCS グル ープに配置される必要があります。 2.1 MSCS と DB2 を組み合わせた構成例 Windows 用のサーバー2 台に MSCS を導入し、ホット・スタンバイ構成を組む際の構成例を以下に示 します。 2.1.1 システム構成 図 4.システム構成例 クライアント Public Network DB2 Cluster Service DB2 Private Network OS C ドライブ Cluster Service OS 一次マシン 二次マシン クォーラム・リソース M ドライブ DB2 データ、ログ N ドライブ RAID5 共有ディスク 7 D ドライブ 形態:ホット・スタンバイ構成 H/W:IBM xSeries440 ×2 −Type:8687−3RY −CPU:Xeon2.40GHz ×2 −Memory:2GB −Hard Disk:36.4GB ×2 :IBM FAStT200 ストレージ・サーバー −Type:3542−1RU −Hard Disk:18.2GB ×10 S/W:Windows2000 Advanced Server Service Pack3 :DB2 UDB v8.1 Enterprise Server Edition Fixpak4 2.1.2 ネットワーク情報 クラスター環境では、複数のサーバーを 1 つの仮想サーバーとして定義することで、クライアントからは どのサーバーにアクセスしているのか常に意識しなくても良い仕組みを作っています。仮想サーバー 名と仮想 IP アドレスを定義するために、複数のサーバーは同一ネットワーク上の同一ドメインに参加し ている必要があります。 今回の環境での値は、以下の通りです。 表 1.ネットワーク情報 サーバー名 実 IP アドレス 仮想 IP アドレス 仮想サーバー名 プライベート IP アドレス アクティブ・ノード ixa001 172.16.228.1 スタンバイ・ノード ixa002 172.16.228.2 DB2SRV 172.16.228.200 10.1.1.2 2.1.3 DB2 のディスク配置 DB2 コード :ローカルマシンに配置 インスタンス情報 :共有ディスクに配置 (下表を参照) データやログ :共有ディスクに配置 (下表を参照) DAS インスタンス情報 :ローカルマシンに配置 表 2.共有ディスク上のデータベース構成例 ドライブ名 用途 M クォーラム・リソース 10.1.1.1 インスタンス情報 8 データベースディレクトリー システムカタログ表スペース 一時表スペース ユーザー表スペース N ログディレクトリー 上記の配置の場合、Fixpak の適用、DB2 レジストリー変数の変更、データベースマネージャー構成フ ァイルの設定等、インスタンスに対しメンテナンスを行う場合は、それぞれのノードに対して処理を行う 必要があります。UDF やプロシージャなどもローカルディスクに保存した場合は、コピーをして両ノード で保持し、フェールオーバー後も実行できるようにします。 2.2 ¾ DB2 導入前の準備 ユーザー DB2 をデフォルトで導入した場合、ローカルに「db2admin」という管理ユーザーが作成されます。 MSCS はドメイン環境を前提とするため、ドメイン・コントローラーに「db2admin」ユーザーを作成します。 Windows ドメイン環境のデフォルトでは、インスタンスに対する SYSADM 権限を付与されるのは、ド メイン・コントローラーの管理者グループ(Domain Admins)に属しているドメイン・ユーザーだけである ため、「db2admin」ユーザーは Domain Admins に所属させ、SYSADM 権限を与えます。 ¾ TCP ポート DB2 はデフォルトでは 6 個の TCP ポートを使用します。高速コミュニケーション・マネージャー (FCM) 通信用に 4 ポート(60000∼60003)、DB2 のサービスに 1 ポート(50000)、DAS 用に 1 ポート(523)で す 。 特 に DAS が 使 用 す る ポ ー ト は 変 更 で き な い の で 注 意 が 必 要 で す 。 事 前 に%SystemRoot%¥system32¥drivers¥etc¥services ファイルや、netstat で予約済み、もしくは使用中で ないか確認しておきます。 ¾ データベース・ディレクトリーのアクセス権 両ノードから、共有ディスク上のドライブ名が見えることを確認します。 共有ディスク上にデータベース・ディレクトリーを作成する場合には、ディレクトリーへの“読み取り”、 “書き込み”のアクセス権があることを確認します。この作業は、ixa001 と ixa002 の両方で行います。 2.3 DB2 の導入 2.3.1 アクティブ・ノード(ixa001)への DB2 ESE のインストール 2.3.1.1 GUI インストール インストール CD を使用し、DB2 セットアップ・ウィザードに従ってインストールを行います。 クラスター環境では、アクティブ・ノード、スタンバイ・ノードの設定は同じである必要があ ります。スタンバイ・ノードへ DB2 ESE をインストールする際に応答ファイルを使用する場合は、インスト ールタイプを選択する画面で「カスタム」を選択し、「設定を応答ファイルに保管する(S)」にチェックを 付けて先へ進みます。応答ファイルは、デフォルトでは C:¥Documents and Settings¥<ログインユーザ ー名>¥My Documents¥PROD_ESE.rsp に保存されます。 9 DB2 は、デフォルトでは C:¥Program Files¥IBM¥SQLLIB へ導入されます。空白を含むディレクトリー 名はバッチファイルで扱いづらいので、C:¥SQLLIB 等に変更します。 また、ここで DAS とインスタンスを作成しておきます。デフォルトでは、DB2 という名のインスタンスが作 成されます。「DB2 インスタンスの構成」画面の「スタートアップ」でサービスの開始モードを「手動」に設 定します。クラスター環境では、DB2 の起動、停止はクラスターソフトから行うため、DB2 が自動起動し ないように設定しておくことが必要です。 2.3.1.2 CUI インストール 応答ファイル・インストールは、ユーザー入力なしで DB2 をインストールすることができます。応答ファイ ルを使用してインストールを行う際は、以下のコマンドを実行します。 (例)D:¥>setup –u 応答ファイルの完全パスとファイル名 応答ファイルは、GUI インストールで生成した応答ファイルを使用するほかに、インストール CD の以下 の場所にあるサンプルを環境に合わせて編集して使用します。 Z:¥db2¥windows¥samples (Z:は、CD-ROM ドライブ) 2.3.2 Fixpak の適用 OS の管理ツール−サービスから、DB2 関連のサービスを確実に停止した状態で Fixpak を適用します。 適用後は、ノードを再起動します。 2.3.3 共有ディスクの引継ぎ(手動) 手動で共有ディスクを ixa002 へ引き継ぎます。 クラスタアドミニストレータで MSCS グループを指定し「グループの移動」を選択します。 図 5.「グループの移動」画面 10 2.3.4 スタンバイ・ノード(ixa002)への DB2 ESE のインストール 2 台サーバーのインストールオプションは同じにする必要があるので、ご注意ください。 2.3.4.1 GUI インストール インストール CD を使用し、DB2 セットアップ・ウィザードに従ってインストールを行います。ixa001 でカ スタムインストールを選択した場合には、ixa002 で同じオプションを選択します。また、DAS は作成しま すが DB2 インスタンスの作成は必要ありません。 2.3.4.2 CUI インストール ixa001 への DB2 インストール時に作成した応答ファイルを使用してインストールを行います。 DAS は作成しますが DB2 インスタンスの作成は必要ないので、応答ファイルのインスタンス の部分を削除、編集し以下のコマンドを実行します。 (例)D:¥>setup –u 応答ファイルの完全パスとファイル名 2.3.5 Fixpak の適用 OS の管理ツール−サービスから、DB2 関連のサービスを確実に停止した状態で Fixpak を適用します。 適用後は、ノードを再起動します。 11 2.4 DB2MSCS ユーティリティを用いた設定 2.4.1 DB2MSCS ユーティリティの概要 MSCS を使用する Windows 環境で DB2 のフェールオーバーを実現させるためには、DB2MSCS コマ ンドを使用して、DB2 インスタンスをクラスター・インスタンスへ変換します。DB2MSCS コマンドは、 db2mscs.cfg という名のファイルを入力として受け取ります。db2mscs.cfg ファイルは、X:¥SQLLIB¥cfg の下にあるサンプルファイルを環境に合わせて修正し、db2mscs.cfg へ名前を変えて使用します。 (X:¥SQLLIB は DB2 を導入したディレクトリー) X:¥SQLLIB¥cfg ディレクトリーには、以下の 3 つのサンプルファイルが用意されています。 ・ db2mscs.das ・・・管理サーバーをクラスター環境に変換する場合に使用します。 ・ db2mscs.ee ・・・DB2 UDB v8 Workgroup Server Edition がインストールされた環境 で、DB2 インスタンスをクラスター環境に変換する場合に使用します。DB2 UDB v8 Enterprise Server Edition 環境では使用しません ・ db2mscs.eee ・・・DB2 UDB v8 Enterprise Server Edition がインストールされた環境 で使用します。相互テイクオーバー構成用に構築した 2 ノードパーティション データベースシステムで、DB2 インスタンスをクラスター環境に変換する場合 に使用します。 今回の環境では、DB2 UDB v8 Enterprise Server Edition を導入しているので、db2mscs.eee を db2mscs.cfg へ名前を変えて使用します。 2.4.2 DB2MSCS ユーティリティ用構成ファイル(db2mscs.cfg)の設定 以下に、db2mscs.cfg ファイルのパラメーターについて説明します。 図 6.クラスタアドミニストレータ画面 CLUSTER_NAME GROUP_NAME IP_NETWORK 指定時に注目します クラスター環境に変換された DB2 インスタンスです 指定時に注目します DISK_NAME 指定時に注目します 12 ◇DB2_INSTANCE DB2 インスタンスの名前を指定します。 db2mscs.cfg ファイル内で一度だけ指定します。 ◇DB2_LOGON_USERNAME DB2 サービス用ドメイン・アカウントのユーザーの名前を指定します。(例:domain¥user) db2mscs.cfg ファイル内で一度だけ指定します。パーティション・データベース環境では必須です。 ◇DB2_LOGON_PASSWORD DB2 サービス用ドメイン・アカウントのパスワードを指定します。 db2mscs.cfg ファイル内で一度だけ指定します。省略可ですが、省略した場合は、DB2 コマンド行プロセッサー等で DB2MSCS ユーティリティ実行時に要求されます。 (例:domain¥user の現行パスワードを入力してください: ) パーティション・データベース環境では必須です。 ◇CLUSTER_NAME MSCS クラスターの名前を指定します。 この行に続いて指定される全てのリソースは、別の CLUSTER_NAME パラメーターが指定されるまでこのクラスターに 作成されます。 ◇GROUP_NAME MSCS グループの名前を指定します。 このパラメーターが指定された時、指定された名前の MSCS グループが存在していない場合は、新しく作成されます。 この行に続いて指定される全てのリソースは、別の GROUP_NAME パラメーターが指定されるまでこのグループに作成、 または移動されます。 ◇DB2_NODE 現行の MSCS グループに組み込むデータベース・パーティション・サーバー、またはデータベース・パーティションのパ ーティション番号を指定します。 同じノード上に複数の論理データベース・パーティションが存在する場合は、データベース・パーティションごとに別々 の DB2_NODE パラメーターが必要です。DB2 リソースが正しい MSCS グループに作成されるよう、このパラメーターは GROUP_NAME パラメーターの後に指定する必要があります。パーティション・データベース環境では必須です。 概して、パーティション・データベース環境では、パーティション間通信のためのプライベート・ネットワークと、クライアン ト接続のためのパブリック・ネットワークがあります。DB2 がパーティション間通信のために、正確にプライベート・ネットワ ークを使用するように、DB2_NODE の第二引数にプライベート・ネットワークと関連したネットワーク名や IP アドレスを明 示的に指定することができます。 (例:DB2_NODE = 0 mscs1 ・・・ノード番号 0、ネットワーク名 mscs1) ◇IP_NAME IP アドレス・リソースの名前を指定します。 値は任意ですが、クラスター内で固有である必要があります。クライアントからの TCP/IP 接続に必要です。パーティショ ン・データベース環境では必須で、インスタンス所有ノードに指定する必要があります。 通常は仮想 IP アドレスとプライベート IP アドレスに対して設定します。 (p8 表 1 参照) ◇IP_ADDRESS 先行する IP_NAME パラメーターで指定した IP アドレス・リソースの TCP/IP アドレスを指定します。 13 IP アドレスのフェールオーバーを行う場合、通常このパラメーターには仮想 IP アドレス、およびプライベート IP アドレス を指定します。(p8 表 1 参照) クライアントから接続を行う際には、この仮想 IP アドレスを用いてノードのカタログを行います。 (例:catalog tcpip node ノード名 ・・・) IP_NAME パラメーターを指定した場合に必須です。 ◇IP_SUBNET 先行する IP_NAME パラメーターで指定した IP アドレス・リソースの TCP/IP サブネット・マスクを指定します。 IP_NAME パラメーターを指定した場合に必須です。 ◇IP_NETWORK 先行する IP アドレス・リソースが属している MSCS ネットワークの名前を指定します。 このパラメーターはオプションです。指定する場合は、「クラスタアドミニストレータ」画面の、「ネットワーク」の下に示され ている通りに、正確にネットワーク名を指定します。省略した場合は、システムが最初に検出した MSCS ネットワーク名が 使用されます。インターコネクトを選択してしまう可能性があるので、省略は避けた方が良いでしょう。 ◇NETNAME_NAME NIC に対してつける、ネットワーク名リソースの任意の名前を指定します。 このパラメーターはネットワーク名リソースを作成する場合に指定します。IP アドレス・リソースと対に持つことにより、グル ープは仮想サーバーとして構成されます。単一パーティション・データベース環境では任意ですが、複数パーティショ ン・データベース環境では必須で、インスタンス所有ノードに指定する必要があります。 ◇NETNAME_VALUE ネットワーク名リソースの値を指定します。 通常はマシンのコンピューター名を指定します。NETNAME_NAME パラメーターを指定する場合に必須です。 ◇NETNAME_DEPENDENCY ネットワーク名リソースが依存する IP アドレス・リソースの名前を指定します。 各ネットワーク名リソースには、必ず IP アドレス・リソースへの依存関係が必要です。通常はプライベート・ネットワークで 定義された TCP/IP アドレスを指定します。このパラメーターはオプションで、省略した場合は、グループ内で最初の IP アドレス・リソースに依存するように設定されます。 ◇SERVICE_DISPLAY_NAME 汎用サービス・リソースの表示名を指定します。 このパラメーターは、汎用サービス・リソースを作成する場合に指定します。 ◇SERVICE_NAME 汎用サービス・リソースのサービス名を指定します。 SERVICE_DISPLAY_NAME パラメーターを指定する場合に必須です。 ◇SERVICE_STARTUP 汎用サービス・リソースの始動パラメーターを指定します。 このパラメーターはオプションです。 ◇DISK_NAME DB2 用リソース・グループに移動させる物理ディスク・リソースの名前を指定します。 DB2 を稼動させるために必要な全ての共有ディスクを指定します。(p8 表 2 参照) 既に存在しているディスク・リソースを指定する必要があり、複数指定することができます。「クラスタアドミニストレータ」画 面の、「リソース」に示されている通りに、正確にディスク名を指定します。クラスター環境用に DB2 インスタンスを変換す 14 る場合、グループで最初の MSCS 物理ディスク・リソースにインスタンス・ディレクトリーがコピーされます。インスタンス・ ディレクトリーに別の MSCS 物理ディスク・リソースを指定する場合は、INSTPROF_DISK パラメーターを指定します。 ◇INSTPROF_DISK DB2 インスタンス・ディレクトリーを配置する MSCS 物理ディスク・リソースの名前を指定します。 このパラメーターはオプションで、省略した場合は、DB2MSCS ユーティリティは同じグループに属する最初の物理ディ スク・リソースを使用します。 ◇INSTPROF_PATH インスタンス・ディレクトリーのコピー先の正確なパスを指定します。 このパラメーターはオプションで、DB2MSCS ユーティリティがディスク・リソースのドライブ文字を取得できない場合に、 このパラメーターを使用します。IPSHA ディスク、つまり ServerRAID Netfinity ディスク・リソースを使用する場合には、 必ずこのパラメーターを指定する必要があります。INSTPROF_DISK と INSTPROF_PATH の両方が指定されている場 合は、INSTPROF_PATH の方が優先されます。 ◇TARGET_DRVMAP_DISK 複数パーティション・データベース・システムのためのデータベース・ドライブ・マッピングのターゲット MSCS ディスクを指 定します。 このパラメーターは CREATE DATABASE コマンドで指定するドライブからのマッピングによって、データベースが作成 される先のディスクを指定します。このパラメーターはオプションで、省略した場合は、DB2DRVMP ユーティリティを使 用して手動でデータベース・ドライブ・マッピングを登録する必要があります。 ◇DB2_FALLBACK DB2 リソースがオフラインになった時にアプリケーションを強制終了するかどうかを YES/NO で指定します。このパラメー ターはオプションで、省略した場合は、YES の設定になります。 各パラメーターの特徴と、設定のポイントをまとめると以下のようになります。 表 3.db2mscs.cfg ファイルパラメータリスト パラメーター DB2_INSTANCE DB2_LOGON_USERNAME DB2_LOGON_PASSWORD CLUSTER_NAME GROUP_NAME DB2_NODE IP_NAME IP_ADDRESS IP_SUBNET IP_NETWORK NETNAME_NAME NETNAME_VALUE NETNAME_DEPENDENCY SERVICE_DISPLAY_NAME SERVICE_NAME SERVICE_STARTUP DISK_NAME INSTPROF_DISK 必須項目 (パーティション・データベー ス環境で必須) 省略時は DB2INSTANCE の値 省略後で設定が必要な場合は、管理ツール→サービスで設定する DB2_LOGON_USERNAME を 指 定 し つ つ 省 略 し た 場 合 は 、 DB2MSCS ユーティリティ実行時にコマンドラインで入力が要求され る 省略時はローカルマシンの MSCS クラスター名 (○) (○) ○ (○) (○) (○) (○) クライアントからの TCP/IP 接続に使用される 仮想 IP アドレスを指定する 仮想 IP アドレスのサブネット・マスクを指定する 省略時はシステムが検出した最初の MSCS ネットワーク名 インターコネクトを防ぐために、省略は避けたほうが良い IP アドレスと対に持つことで、仮想サーバーを構成する (○) (○) 省略時は NETNAME_NAME はグループで最初の IP リソースに従 属することになる ○ 複数指定できる 省略時はインスタンスディレクトリーはグループで最初の MSCS ディ スクへコピーされる INSTPROF_PATH TARGET_DRVMAP_DISK 15 DB2_FALLBACK 図 7. 省略時は DB2_FALLBACK=YES db2mscs.cfg ファイルの設定例 16 2.4.3 DB2MSCS ユーティリティの実行 2.4.3.1 DB2MSCS ユーティリティ実行前の確認事項 MSCS ユーティリティを実行する前に、以下の事柄を確認します。 各ノードを再起動します。 アクティブ・ノード(ixa001)にログオンします。DB2MSCS ユーティリティは、MSCS クラスター内の各 ノードの管理者グループに属するドメイン・ユーザー・アカウントにログオンした状態で、インスタンス 所有パーティションから実行する必要があります。 アクティブ・ノード(ixa001)で、DB2 インスタンスが停止されていることを確認します。 DB2 がインストールされたローカル・ドライブ上に、インスタンス・ディレクトリーが保管されていること を確認します。 (例)インスタンス・ディレクトリーの保管先確認方法 D:¥>db2ilist DB2 D:¥>db2set DB2INSTPROF D:¥SQLLIB DB2 セットアップ・ウィザードで作成された DB2 インスタンスには、パーティション間通信用に 4 つの ポートが services ファイルの中で予約されます。これらのポートがクラスター内の全ノードで利用でき ることを確認します。 (例)C:¥WINNT¥system32¥drivers¥etc¥services DB2_DB2 60000/tcp DB2_DB2_1 60001/tcp DB2_DB2_2 60002/tcp DB2_DB2_END 60003/tcp db2c_DB2 50000/tcp 2.4.3.2 DB2MSCS ユーティリティの実行 DB2MSCS コマンドと db2mscs.cfg ファイルを使用して、DB2 インスタンスをクラスター・インスタンス へ変換します。 (例)D:¥>db2mscs –f: D:¥SQLLIB¥cfg¥db2mscs.cfg 入力ファイルの指定は省略することもできます。その場合、カレントディレクトリーの db2mscs.cfg が使 用されます。 (例)D:¥SQLLIB¥cfg>db2mscs DB2MSCS コマンドが正常終了すると、クラスタアドミニストレータ画面に、db2mscs.cfg ファイルの GROUP_NAME で指定した[DB2]という名のリソース・グループが作成されます。 DB2MSCS は以下の作業を内部的に実行します。 ・ DB2 リソース・タイプ(db2wolf.dll)を登録 17 ・ MSCS グループ(1 つ、または複数)を作成 ・ IP アドレス、Network Name 等のリソースを作成、グループへ追加 ・ MSCS ディスクをグループへ移動 ・ DB2 リソース(1 つ、または複数)を作成、グループへ追加 ・ リソース間の依存関係を設定 ・ DB2 非クラスター・インスタンスをクラスター・インスタンスへ変換 ・ すべてのリソースをオンライン化 DB2MSCS ユーティリティを実行すると、DB2 インスタンスは CLUSTER_NAME で指定した [CLUSTER845]内の クラスター・インスタンスに変換されます。また DB2 インスタンス・ディレクトリーは、 [DB2]グループ内の[DB2MSCS-DB2]という名で作成されたファイル共有リソースに移動されます。 (例)インスタンス・ディレクトリーの保管先確認方法 D:¥>db2ilist DB2 C : CLUSTER845 D:¥>db2set DB2INSTPROF ¥¥DB2SRV¥DB2MSCS-DB2 2.4.3.3 DB2MSCS ユーティリティの実行後の詳細な設定 DB2MSCS ユーティリティによって作成された[DB2]グループ、[DB2]グループ内の各リソースに対して、 詳細な設定を行います。 ☆[DB2]グループのプロパティ 新たに作成されたグループは、初期状態では、障害があった際に手動でノードを切り替える設定にな っています。自動的にフェールオーバーさせたい場合は、[DB2]グループのプロパティの設定が必要 です。 ■全般タブ 「変更」ボタンを押して、優先所有者を追加します。 (例) [ixa001]、[ixa002]の 2 ノードを追加します。 18 ■フェールオーバータブ フェールオーバーの制限回数を設定します。 (例) 6 時間の間に 10 回までフェールオーバーを実行可能とする、 という設定を行っています。 ■フェールバックタブ フェールバック、つまり優先ノードが障害から回復した後、[DB2]リソース・グループを優先ノ ードに自動的に切り替えるかどうかを設定します。 ※フェールバック設定に関する注意点 フェールオーバーした後に、優先ノードの障害が復旧し、元のノードへフェールバックされる 時に、クライアントからの接続があるとフェールバックは失敗します。クライアントからの接続が あっても、フェールバックを正常に処理させるためには、インスタンスごとに次のレジストリー 変数を設定します。この変数を使用するとフェールバック中に強制的に全てのデータベース 接続を切断するため注意が必要です。 (例)D:¥>db2set DB2_FALLBACK=ON ☆[DB2-0]リソースのプロパティ DB2 グループの各リソース間の依存関係は、DB2MSCS ユーティリティによって自動的に設定され ますが、必要に応じて修正します。 (例)「クラスタアドミニストレータ」画面の「リソース」の DB2 リソース[DB2-0]の設定 19 ■全般タブ 実行可能な所有者欄には、フェールオーバーの対象である[ixa001]、[ixa002]の 2 ノードが 追加されています。 ■依存関係タブ DB2MSCS ユーティリティによって、DB2 クラスター・インスタンスが依存するリソースが追加さ れています。「変更」ボタンで、その他のリソースの追加、削除ができます。 ■詳細設定タブ 障害発生時に、リソースを再開するかどうかの設定ができます。 スタンバイ・ノードへフェールオーバーするには、「再開する」、「グループに適用する」にチェッ クをいれます。 「しきい値」フィールドに 3 を設定した場合、障害が発生した際、グループがフェールオーバー する前に同じノード上で 3 回リソースの再起動を試みることになります。障害が発生した場合に、 すぐにフェールオーバーを実行するためには、「しきい値」を 0 に設定します。 20 2.5 フェールオーバーの稼動確認 クラスタアドミニストレータ画面を使用して DB2 のインスタンスに障害を発生させることが可能です。 この機能を用いてフェールオーバーが正常に実行されること、スタンバイ・ノード(ixa002)からデータベ ースへ接続できることを確認します。 ①アクティブ・ノード(ixa001)から共有ディスク上にデータベースを作成します。 (例)SAMPLE データベースの作成 D:¥>db2sampl M: ②アクティブ・ノード(ixa001)から SAMPLE データベースへ接続できることを確認します。 クラスタアドミニストレータ画面で、DB2 グループのリソースが全て ixa001 でオンラインの状態であること を確認し、以下のコマンドを実行します。 (例)SAMPLE データベースへの接続 D:¥>db2 connect to sample DB2 グループのリソースの所有者が ixa001 である場合、ixa001 から SAMPLE データベースへの接続 は成功します。 ③クラスタアドミニストレータ画面を使用して、DB2 インスタンスに障害を発生させます。 [DB2]リソースを右クリックし、「障害の発生」を選択します。 ④DB2 グループのリソースが、従属関係の順にスタンバイ・ノード(ixa002)へフェールオーバーし、 ixa002 でオンラインの状態になります。DB2 グループの所有者は ixa001 から ixa002 へ移ったため、 ixa001 から SAMPLE データベースへの接続はできなくなります。 21 ⑤アクティブ・ノード(ixa001)で SAMPLE データベースへの接続を試みます。 (例)SAMPLE データベースへの接続 D:¥>db2 connect to sample 接続は失敗します。 ⑥スタンバイ・ノード(ixa002)で SAMPLE データベースへの接続を試みます。 (例)SAMPLE データベースへの接続 D:¥>db2 connect to sample リソースがフェールオーバーし、ixa002 がアクティブになったので ixa002 では接続が成功しま す。 2.6 補足事項 2.6.1 フェールオーバープロセス MSCS はクラスタアドミニストレータを使用してオンラインにされたすべてのリソースとグループをモニタ ーします。クラスタアドミニストレータを使用しての DB2 リソースのオンラインが db2start、オフラインが db2stop にあたります。クラスター・インターフェースを使用せずに db2start/db2stop を実行した場合、 MSCS でモニターできないので、必ずクラスタアドミニストレータから実行します。 リソースに障害が起きると、MSCS はそのリソースをまず同一ノード上で最大試行回数に至るまでオン ラインに戻そうと試みます。同一ノード上での再始動に最大試行回数失敗した場合に、MSCS はそのリ ソースの属すグループ全体をフェールオーバーします。オンラインに戻す再試行回数は、クラスタアド ミニストレータ画面で、リソースの「プロパティ」の「詳細設定」タブを設定します。(p18 [DB2]グループ のプロパティ画面参照) DB2 リソースの障害は DB2 内の例外や OS のリソース不足、DB2 プロセスが終了した場合に検知され ます。DB2 プロセスがハングアップした状態では MSCS が障害を検知できないので、その場合は管理 者が手動でプロセスを再起動、またはフェールオーバーを実行する必要があります。 2.6.2 スクリプト DB2 リソースのオンライン化前後にスクリプトを実行することができます。これにより、フェールオーバー 後の環境に合わせた設定を自動的に行うことができます。 スクリプトをオンライン化前に実行したい場合は db2cpre.bat を、オンライン化後に実行したい場合は db2cpost.bat を作成し、インスタンス・プロファイル・ディレクトリーの下のインスタンス・ディレクトリー(例: ¥¥DB2SRV¥DB2MSCS-DB2¥DB2) へ保管します。 オンライン前スクリプトは、DB2 リソースがオンラインにされる前に実行されるので、DB2 コマンドライン プロセッサー(db2CLP)を直接使用することはできません。使用する場合は、db2CLP 用に DB2 環境を 初期化するプログラムからコマンドを実行します。X:¥SQLLIB¥bin の下の db2clpex.exe を利用すること ができます。(X:¥SQLLIB は DB2 を導入したディレクトリー) 2.6.3 管理サーバーについて DB2 管理サーバーを DB2 サーバーと一緒にフェールオーバー、フェールバックするように構成するこ ともできます。DB2 管理サーバーは、コントロール・センターや構成アシスタントなどの DB2 ツール用の 22 サポート・サービスを提供します。DB2 管理サーバーをクラスター化することにより、DB2 サーバーに対 して実行すべきスケジュール済みジョブがある場合に、フェールオーバー後もジョブは有効となりま す。 2.6.4 インスタンスのデクラスタリング インスタンスや管理サーバーをクラスタリングする必要がなくなった場合、DB2MSCS ユーティリティを 使用してデクラスタリングすることができます。 (例)ホット・スタンバイ単一パーティション構成のデクラスタリング手順 ・インスタンス内に存在するデータベースをバックアップした後、ドロップします。 ・ DB2 グループ内のリソースで他グループから移動したものがあれば、初期グループへ戻 します。 ・以下のコマンドを使用して、DB2MSCS ユーティリティを実行します。 D:¥>db2mscs –u:インスタンス名(または DAS 名) インスタンスは非クラスター・インスタンスへ復帰します。 ・バックアップしておいたデータベースをリストアします。 管理サーバーはインスタンスよりも前にデクラスタリングされる必要があります。管理サーバーの出クラ スタリングもインスタンス所有パーティションから実行します。 23 3 障害を想定したフェールオーバーのテスト 参考までに第 3 節で設定した環境を用いて、データベースに一定の負荷をかけた状態で障害を発生させ た場合の動作テストの結果をこちらに記載します。 テストシナリオ テスト時の負荷用アプリケーションには、Web から入手できる OLTP ベンチマーク・ツールキット (http://www.ibm.com/jp/software/data/developer/library/techdoc/oltptool.html) を 使 用 し ま し た 。 OLTP ベンチマーク・ツールキットには、データ作成に使用する DDL ファイルやデータベースに負荷を与え るストレスプログラム(TPC-C ベンチマークと同等のプログラム)が用意されています。詳細は上記 URL を参照ください。 テスト環境の概要とテスト時の条件を以下に記載します。 図 8. テスト環境とテスト時の条件 SELECT ・・・ ■テスト環境 SELECT ・・・ データベースのサイズ:約 785MB ・ ・ ・ ・ ・ ・ 3.1 TPCD クライアント数:10 TPS:10(transaction/sec) INSERT ・・・ UPDATE ・・・ 24 3.2 テスト結果 2 パターンのテスト結果を以下に示します。 テスト1:クラスタアドミニストレータを使用しての障害発生のテスト クライアントからプログラムを実行 アクティブ スタンバイ ixa001 ixa002 >>>クライアントがクエリーを実行している状態 プログラム実行可 >>>アクティブ・ノード(ixa001)がアクティブな状態 障害 クラスタアドミニストレータで「DB2」リソースの「障害の発生」を選択 アクティブ >>>クライアントアドミニストレータ画面では、DB2 グループの各リソースが依存関係の順にオフ ラインにされ、スタンバイ・ノード(ixa002)でオンラインにされていく様子を確認 クライアントのコマンドプロンプトの画面では、プログラムがエラー終了したことを確認 ixa001 ixa002 再度、クライアントからプログラムを実行 >>>クライアントのコマンドプロンプト画面では、プログラムが正常に実行できていることを確認 テスト2:サーバーの電源を切断することによる電源障害のテスト クライアントからプログラムを実行 ixa001 スタンバイ ixa002 >>>クライアントがクエリーを実行している状態 プログラム実行可 アクティブ >>>アクティブ・ノード(ixa001)がアクティブな状態 障害 アクティブ・ノード(ixa001)の電源を切断 アクティブ >>>クライアントのコマンドプロンプトの画面では、プログラムがエラー終了したことを確認 ixa001 再度、クライアントからプログラムを実行 ixa002 >>>クライアントのコマンドプロンプト画面では、プログラムが正常に実行できていることを確認 いずれの場合も障害発生時に実行中のコミットしていないトランザクションはロールバックされますが、 クライアントからは接続ノードが切り替わったことに伴っての設定変更を一切することなく、再度プログラ ムを実行することが可能です。グループの全リソースがオンラインになる前にプログラムを実行した場 合エラーが返される場合がありますが、全リソースがオンラインになれば、実行が可能となります。 25 4 参考文献 ・DB2 UDB の高可用性 http://www.ibm.com/jp/software/data/db2univ/data/v7opeavail.pdf ・Microsoft Cluster Server を使用した IBM DB2 Universal Database V8.1 Enterprise Server Edition の実装 http://www.ibm.com/jp/software/data/developer/library/techdoc/pdf/implementmscs.pdf ・DB2 for UNIX HA 構成ガイド(V8.1 ESE 共通編) http://www.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/0045934A ・Microsoft Cluster Server を使用した DB2 UDB for Windows 高可用性サポート-概要 http://www.ibm.com/jp/software/data/developer/library/techdoc/db2mscs_i.html ・Windows Server 2003 の Microsoft Cluster Service(MSCS)について http://www.microsoft.com/japan/msdn/windows/windows.netserver/wns-introclustermscs.asp ・OLTP ベンチマーク・ツールキット http://www.ibm.com/jp/software/data/developer/library/techdoc/db2mgmt.html#pf ・Microsoft Windows 2000(SP3) Microsoft Cluster Service (MSCS) 構成・導入・操作ガイド http://www.ibm.com/jp/domino04/pc/support/Sylphd07.nsf/jtechinfo/SYJ0-036701A ・日本 IBM ホームページ http://www.ibm.com/jp/ ・Microsoft ホームページ http://www.microsoft.com/japan/ 以上 26