IBM Support

[Db2] Microsoft フェールオーバー・クラスター (MSFC) に Db2 のクラスター・インスタンスを構成する方法

Question & Answer


Question

Db2 サーバー製品と Db2 Connect 製品は Windows のフェールオーバー・クラスター (MSCS/MSFC) をサポートしていますが、データベース・マネージャーをクラスター化するにはどのように構成すればよいでしょうか。

Answer

Db2 による Microsoft Failover Clustering サポートの概要

Microsoft Failover Clustering は、Windows オペレーティング・システム上でサーバーのクラスターをサポートします。これはサーバーまたはアプリケーションの障害を自動的に検出し対応します。
Db2 インスタンス (データベース・マネージャー: db2syscs.exe) は Microsoft Failover Clustering に対応したクラスター・リソース (Db2 リソース: db2server.dll) で管理され、クラスター・サービスによる障害検知とリカバリーを利用できます。
Db2 の Microsoft Failover Clustering サポートの詳細は、以下のマニュアル・ページを参照してください。
Microsoft Failover Clustering のサポート (Windows)

この文書では Windows Server 2008 以降の Microsoft Failover Clustering (MSFC) に Db2 のクラスター化インスタンスを作成する手順を案内します。
注: Db2 がサポートする Windows Server のバージョンは System requirements for IBM DB2 for Linux, UNIX, and Windows で確認してください。

前提となるクラスター構成

既存の Microsoft クラスターにパブリック・ネットワークと少なくとも一つの (クォーラム以外の) ディスク・リソースが必要です。
以下の構成ではパブリック・ネットワークとして「クラスタ ネットワーク 2」、ディスク・リソースとして「クラスタ ディスク 2」を使います。

a) クラスター名

PowerShell: Get-Cluster コマンド
PS C:\> Get-Cluster

Name
----
CLUS01
Cluster コマンド
C:\>cluster /list
クラスタ名
---------------
CLUS01


b) クラスター・ネットワーク (今回はクラスタ ネットワーク 2 (10.2.0.0/24) がパブリック・ネットワークです。)

PowerShell: Get-ClusterNetwork コマンド
PS C:\> Get-ClusterNetwork
Name                            State 
----                            ----- 
クラスタ ネットワーク 1                  Up 
クラスタ ネットワーク 2                  Up 
Cluster コマンド
C:\>cluster net /prop
すべてのネットワークのプロパティの一覧を作成しています:
T  ネットワーク             名前                   値
-- ------------------------ ---------------------- -----------------------
SR クラスタ ネットワーク 2  Name                   クラスタ ネットワーク 2
MR クラスタ ネットワーク 2  IPv4Addresses          10.2.0.0
MR クラスタ ネットワーク 2  IPv4PrefixLengths      24
SR クラスタ ネットワーク 2  Address                10.2.0.0
SR クラスタ ネットワーク 2  AddressMask            255.255.255.0
S  クラスタ ネットワーク 2  Description
D  クラスタ ネットワーク 2  Role                   3 (0x3)
SR クラスタ ネットワーク 1  Name                   クラスタ ネットワーク 1
MR クラスタ ネットワーク 1  IPv4Addresses          192.168.235.0
MR クラスタ ネットワーク 1  IPv4PrefixLengths      24
SR クラスタ ネットワーク 1  Address                192.168.235.0
SR クラスタ ネットワーク 1  AddressMask            255.255.255.0
S  クラスタ ネットワーク 1  Description
D  クラスタ ネットワーク 1  Role                   1 (0x1)


c) クラスター・リソース (少なくともひとつのディスク・リソースが必要です。クォーラムを流用してはいけません。)

PowerShell: Get-ClusterResource コマンド
PS C:\> Get-ClusterResource
Name                 State         Group                 ResourceType
—-                   —–            —–                    ————
クラスタ ディスク 1  オンライン    クラスタ グループ     Physical Disk
クラスタ ディスク 2  オンライン    利用可能記憶域        Physical Disk
クラスタ IP アドレス オンライン    クラスタ グループ     IP Address
クラスタ名           オンライン    クラスタ グループ     Network Name
Cluster コマンド
C:\>cluster res
利用可能なリソースすべての状態の一覧を作成しています:
リソース             グループ             ノード          状態
-------------------- -------------------- --------------- ------
クラスタ IP アドレス クラスタ グループ    host01          オンライン
クラスタ ディスク 1  クラスタ グループ    host01          オンライン
クラスタ ディスク 2  利用可能記憶域       host01          オンライン
クラスタ名           クラスタ グループ    host01          オンライン


追加の前提条件:

  • Db2 クラスター・グループが新規作成するネットワーク名を登録するために、DNS の動的更新を有効にしておきます。
  • 一つのクラスター・ノードから他のクラスター・ノードのレジストリを更新するため、すべてのノードで Remote Registry サービスを開始しておきます。


(重要) 前提となるユーザーおよびグループ

  • 構成作業はすべてのノードおよびドメインに対する管理者権限が必要なので、クラスター・ノードにドメイン管理者でログオンして行います。
  • 複数のコンピューターで同じ SID を使うため、Db2 サービス起動アカウントはドメイン・ユーザーを使います。
  • Db2 サービスの起動アカウントは、各クラスター・ノードの管理者権限が必要です。(ドメインの管理者権限は不要です。)
  • Db2 サービス起動アカウントは、クラスター・ノードで以下のユーザー権利が必要です。
    • オペレーティング・システムの一部として機能
    • プログラムのデバッグ
    • トークン・オブジェクトの作成
    • クォータの増加
    • メモリー内のページのロック
    • サービスとしてログオン
    • プロセス・レベル・トークンの置き換え
  • 以下の手順では、Db2 サービス起動のアカウントに対するクラスター・ノードの管理者権限とユーザー権利は Db2 のインストーラーが自動的に付与します。
  • Db2 の拡張セキュリティを有効にする場合 (デフォルト) クラスター名のコンピューター・オブジェクトを、ドメインの DB2ADMNS グループに所属させる必要があります。


Db2 クラスター・インスタンスの構成

1. ドメイン・グループおよびアカウントの設定 (拡張セキュリティを有効にする場合)

  1. ドメイン・コントローラーにドメイン管理者としてログオンします。
  2. Active Directory ユーザーとコンピューター (dsa.msc) を起動します。
  3. DB2USERS および DB2ADMNS ローカルグループ (セキュリティ グループ) を作成します。
  4. クラスター名のコンピューター・オブジェクト (今回の例では CLUS01) を DB2ADMNS グループに所属させます。
    結果は以下のように確認できます。GroupCategory、GroupScope が期待通りであることと、member にクラスター名のコンピューターがあることを確認します。
    PS C:\> Get-ADGroup -Identity DB2ADMNS -Properties member
    
    DistinguishedName : CN=DB2ADMNS,CN=Users,DC=ad01,DC=local
    GroupCategory     : Security
    GroupScope        : DomainLocal
    member            : {CN=CLUS01,CN=Computers,DC=ad01,DC=local}
    Name              : DB2ADMNS


2. Db2 のインストール (各クラスター・ノードで行います。)

注1: Db2 製品のダウンロードとインストール方法の概要は [Db2] Db2 製品のダウンロードとインストール方法を参照します。
注2: クラスター・インスタンスを構成する場合、Windows のビット数と、Db2 製品のビット数は一致させる必要があります。

  1. ドメイン管理者としてクラスター・ノードにログオンします。
  2. [管理者として実行] で Db2 の setup を起動し、Db2 をインストールします。
  • 拡張セキュリティを有効にする場合、セキュリティグループとしてドメインの DB2USERS および DB2ADMNS を指定します。
    (UPN は使用できません。グループ名に 2 パート名を使うため、ドメイン名はプルダウン・リストから選択してください。)
    応答ファイルを使ってインストールする場合、DB2_ADMINGROUP_DOMAIN と DB2_USERSGROUP_DOMAIN キーワードで短いドメイン名を指定してください。
  • Db2 サービス起動アカウントは、ドメイン・ユーザー (ドメインの db2admin など) を指定します。

注:
以下の手順は、Db2 セットアップが作成した「DB2」インスタンスをクラスター化する例です。
セットアップ後に新規作成したインスタンスをクラスター化することも可能です。その場合はクラスター化を行うノードでのみ db2icrt コマンドを使って新規インスタンスを作成してください。なお、過去のバージョンでは Windows 版の db2icrt コマンドはデフォルトで WSE インスタンスを作成するので、ESE インスタンスを作成する場合は明示的に -s ESE オプションを付加してください。ただし、Db2 11.5 以降は ESE インスタンスのみをサポートしています。また、-p でプロファイル・パスに共有ディスクを指定しないでください。
新規インスタンス作成の例:

C:\>db2icrt <新規インスタンス名> -s ESE -u <ドメイン名>\db2admin,<パスワード>
セットアップが作成した「DB2」インスタンスをドロップする場合、必ず DB2INSTDEF 変数を存在するインスタンス名に再設定してください。DB2INSTDEF が正しく設定されていないと、後続のステップで予期しない問題が発生します。
再設定の例:
db2set -g DB2INSTDEF=<新規作成したインスタンス名>

3. Db2 サービスの変更 (クラスター化作業を行うノードで行います。)

  1. ドメイン管理者としてクラスター・ノードにログオンします。
  2. 管理ツールの「サービス」を起動し、Db2 サービス (DB2-コピー名-インスタンス名: DB2-DB2COPY1-DB2 など) のプロパティを開きます。
  3. スタートアップの種類(E) を「手動」に変更して OK します。


4. Db2 サービスの削除 (クラスター化作業を行うノード以外で行います。)
セットアップ後に手動で新規作成したインスタンスを使う場合、この手順は不要です。

  1. ドメイン管理者としてクラスター・ノードにログオンし、「DB2 コマンド・ウィンドウ - 管理者」を開きます。
  2. 以下のコマンドで Db2 セットアップ時に作成したインスタンスを削除します。
    C:\>db2stop force
    C:\>db2idrop DB2

5. インスタンスのクラスター化 (クラスター化作業を行うノードで行います。)

  1. ドメイン管理者としてクラスター・ノードにログオンし、「コマンド・ウィンドウ - 管理者」 を開きます。
  2. <Db2 インストールパス>\cfg にある db2mscs.wse もしくは db2mscs.ese を参考に構成ファイルを作成します。
  3. db2mscs コマンドに構成ファイル名を指定してインスタンスをクラスタ化します。
    例: カレント・ディレクトリーの構成ファイル db2mscs.ese を使用し、db2mscs.trc にコマンドのトレースを記録
    注: カレント・ディレクトリーにファイルを配置していない場合は各ファイルをフル・パスで指定する必要があります。
    C:\>db2mscs -f:db2mscs.ese -d:db2mscs.trc

注: 現在使用中のインスタンス・タイプは、DB2 コマンド・ウィンドウで get dbm cfg コマンドを実行し、「ノード・タイプ」に Enterprise Server Edition という文字があれば ESE、そうでない場合は WSE です。

構成ファイルの例 (WSE インスタンス:Db2 11.5 以降は使用不可)

# クラスター化するインスタンス名を指定します。
# インスタンス名の一覧は db2ilist コマンドで表示できます。
DB2_INSTANCE=DB2
# Db2 サービス起動ユーザー名とパスワードを指定します。
DB2_LOGON_USERNAME = <domain_netbios_name>\db2admin
DB2_LOGON_PASSWORD = <password>

# クラスター・リソースを作成するクラスター名を指定します。
# クラスター名は Get-Cluster コマンドで表示されます。
CLUSTER_NAME=CLUS01

# 新規作成クラスター・リソースを格納するリソース・グループ名を指定します。
# 「クラスタ グループ」でない既存のクラスター・グループを指定することも、新しいグループを作成することも可能です。
GROUP_NAME=DB2Group

# クラスターに新規作成する任意の IP アドレス・リソース名です。
IP_NAME=IP Address for DB2
# パブリック・ネットワークに属する他と重複しない IP アドレスを指定します。
 IP_ADDRESS=10.2.0.11
 IP_SUBNET=255.255.255.0
# パブリック・ネットワークのネットワーク名を指定します。
# クラスター・ネットワークの一覧は Get-ClusterNetwork コマンドで表示されます。
 IP_NETWORK=クラスタ ネットワーク 2

# クラスターに新規作成する任意のネットワーク名リソース名です。
NETNAME_NAME=Network Name for DB2
# 新規作成するネットワーク名です。指定したクラスター・ネットワークで他と重複しないコンピューター名を指定します。
 NETNAME_VALUE=DB2SRV
# ネットワーク名リソースの前提 IP アドレスリソース名です。IP_NAME と一致している必要があります。
 NETNAME_DEPENDENCY=IP Address for DB2

# Get-ClusterResource コマンドで表示される利用可能記憶域のいずれか指定します。
# 複数のディスクを割り当てる場合、DISK_NAME を複数行記述します。
DISK_NAME=クラスタ ディスク 2
# 上で指定したディスクを、ディスクマネージャで割り当てたドライブ名以下のパスを指定します。
# このパスへすでに同名のインスタンスを作成している場合、db2mscs コマンドは失敗します。
INSTPROF_PATH=M:\db2profs


構成ファイルの例 (ESE インスタンス - シングル・パーティション)

# クラスター化するインスタンス名を指定します。
# インスタンス名の一覧は db2ilist コマンドで表示されます。
DB2_INSTANCE=DB2
# Db2 サービス起動ユーザー名とパスワードを指定します。
DB2_LOGON_USERNAME = <domain_netbios_name>\db2admin
DB2_LOGON_PASSWORD = <password>

# クラスター・リソースを作成するクラスター名を指定します。
# クラスター名は Get-Cluster コマンドで表示されます。
CLUSTER_NAME=CLUS01

# 新規作成クラスター・リソースを格納するリソース・グループ名を指定します。
# 「クラスタ グループ」でない既存のクラスター・グループを指定することも、新しいグループを作成することも可能です。
GROUP_NAME=DB2Group

# データベース・パーティション番号 (シングル・パーティションの場合は 0) を指定します。
DB2_NODE=0

# クラスターに新規作成する任意の IP アドレスリソース名です。
IP_NAME=IP Address for DB2
# パブリック・ネットワークに属する他と重複しない IP アドレスを指定します。
 IP_ADDRESS=10.2.0.11
 IP_SUBNET=255.255.255.0
# パブリック・ネットワークのネットワーク名を指定します。
# クラスター・ネットワークの一覧は Get-ClusterNetwork コマンドで表示されます。
 IP_NETWORK=クラスタ ネットワーク 2

# クラスターに新規作成する任意のネットワーク名リソース名です。
NETNAME_NAME=Network Name for DB2
# 新規作成するネットワーク名です。指定したクラスター・ネットワークで他と重複しないコンピューター名を指定します。
 NETNAME_VALUE=DB2SRV
# ネットワーク名リソースの前提 IP アドレスリソース名です。IP_NAME と一致している必要があります。
 NETNAME_DEPENDENCY=IP Address for DB2

# Get-ClusterResource コマンドで表示される利用可能記憶域のいずれか指定します。
# 複数のディスクを割り当てる場合、DISK_NAME を複数行記述します。
DISK_NAME=クラスタ ディスク 2
# 上で指定したディスクを、ディスクマネージャで割り当てたドライブ名以下のパスを指定します。
# このパスへすでに同名のインスタンスを作成している場合、db2mscs コマンドは失敗します。
INSTPROF_PATH=M:\db2profs


6. クラスター化の検証

  1. 管理者としてクラスター・ノードにログオンし、「DB2 コマンド・ウィンドウ - 管理者」を開きます。
  2. db2ilist および db2set コマンドでインスタンスがクラスター化されたことを確認します。
    db2ilist でインスタンス名の右に C: <クラスター名> が表示されればクラスター化されています。
    db2set で DB2CLUSTER にクラスター名、DB2CLUSTERLIST にクラスターホスト名が表示されていれば該当クラスターの該当ホストでクラスターが構成されています。
    C:\>db2ilist
    DB2             C : CLUS01
    
    C:\>db2set -all | findstr DB2CLUSTER
    [i] DB2CLUSTER=CLUS01
    [i] DB2CLUSTERLIST=HOST01 HOST02
  3. Get-ClusterResource コマンドで、指定されたリソースが作成され、オンラインになっていることを確認します。
    ESE インスタンスでは、インスタンス・プロファイルをネットワーク共有するためのファイルサーバー・リソースも作成されます。
    PS C:\> Get-ClusterResource
    Name                          State   Group                  ResourceType
    ----                          -----   -----                  ------------
    DB2-0                         オンライン  DB2Group           DB2 Server
    ファイル サーバー(\\DB2SRV)   オンライン  DB2Group           File Server
    IP Address for DB2Group       オンライン  DB2Group           IP Address
    Network Name for DB2Group     オンライン  DB2Group           Network Name
    クラスタ IP アドレス          オンライン  クラスタ グループ  IP Address
    クラスタ ディスク 1           オンライン  クラスタ グループ  Physical Disk
    クラスタ ディスク 2           オンライン  DB2Group           Physical Disk
    クラスタ名                    オンライン  クラスタ グループ  Network Name
    
  4. フェールオーバー クラスター マネージャーを起動します。
  5. コンソールツリーから [クラスタ名]>[役割(Roles)] から DB2Group を開きます。
  6. [リソース] タブですべてのクラスター・リソースが正常にオンラインになっていることを確認します。
  7. 役割の名前 (今回の例では DB2Group) を右クリックし [移動 (Move)] からフェールオーバーをテストします。image-20240221174251-1
    図1: フェールオーバー クラスター マネージャーからみたクラスター化完了後の DB2 Group の状態


Db2 クラスター・インスタンスの起動と終了

クラスター化された Db2 インスタンスは、クラスター・サービス経由で起動/終了する必要があります。
例えば、「サービス」で自動起動するとクラスター・レジストリーが利用できず、インスタンスが正しく動作しない可能性があります。
また、db2start/db2stop コマンドで起動/停止すると、クラスター・マネージャーからリソース状態を正しく把握できなかったり、リソース障害と認識される可能性があります。

Db2 インスタンスの起動

  1. サーバー マネージャーから「フェールオーバー クラスター マネージャー」を起動します。
  2. コンソールツリーの [<クラスター名>]-[役割] から Db2Group を選択します。
  3. Db2 リソース名 (今回の例では DB2-0) を右クリックし、[オンライン] をクリックします。
    注: 依存関係の前提リソースがオンラインになっている場合のみオンライン化可能です。


Db2 インスタンスの停止

  1. サーバー マネージャーから「フェールオーバー クラスター マネージャー」を起動します。
  2. コンソールツリーの [<クラスター名>]-[役割] から Db2Group を選択します。
  3. Db2 リソース名 (今回の例では DB2-0) を右クリックし、[オフライン] をクリックします。

参考: cluster resource コマンドの /online と /offline オプションまたは PowerShell の Start-ClusterResource と Stop-ClusterResource を使ってコマンドラインでも起動と停止が可能です。

コマンドでの起動例

PS C:\>Start-ClusterResource DB2-0
または
C:\>cluster resource DB2-0 /online


コマンドでの停止例

PS C:\>Stop-ClusterResource DB2-0
または
C:\>cluster resource DB2-0 /offline


新規データベースの作成

クラスター・インスタンスでは、Db2 のクラスター・グループに所属するディスク・リソース (今回の例では M ドライブ) にデータベースを作成する必要があります。

  1. 管理者としてクラスター・ノードにログオンし、「DB2 コマンド・ウィンドウ - 管理者」を開きます。
  2. 以下のようなコマンドでディスク・リソースに割り当てたドライブ名を指定してデータベースを作成します。
    C:\>db2 create database <データベース名> on M

既存データベースの移動

既存のデータベースをクラスター・インスタンスで利用する場合、以下のいずれかの方法でデータベースを Db2 グループに所属するディスク・リソース (今回の例では M ドライブ) へ移動します。

a) db2relocatedb コマンド


b) リダイレクト・リストア


クライアントからクラスター・インスタンスへの接続

データベース・アプリケーションからクラスター・インスタンスに接続するには、Db2 グループに所属するネットワーク名もしくは IP アドレスを指定してカタログします。
他のネットワーク名や IP アドレスを指定すると、フェール・オーバー後に接続できない等の問題が発生する可能性があります。

  1. Db2 クライアント・コンピュータに管理者としてログオンし、「DB2 コマンド・ウィンドウ - 管理者」を開きます。
  2. 以下のコマンドで、クラスター・インスタンスとデータベースをカタログします。
    C:\>db2 catalog tcpip node <ノード名> remote <Db2 グループの IP アドレス> server <ポート番号>
    C:\>db2 catalog database <データベース名> at node <ノード名>
    例:
    C:\>db2 catalog tcpip node DB2CLUS remote 192.168.75.140 server 50000
    C:\>db2 catalog database SAMPLE at node DB2CLUS
    Db2 インスタンスのポート番号は、データベース・サーバーのデータベース・マネージャー構成パラメーター SVCENAME で指定されたポート番号またはサービス名です。
    CATALOG コマンドで指定するノード名は、クライアントのノードカタログで一意な任意の名前です。


フィックスパックの適用

クラスター化したインスタンスが存在する場合、Db2 のフィックスパック適用方法はマニュアルの以下のページを参照してください。
Microsoft Cluster Server 環境でのフィックスパックのインストール (Windows)

注: フィックスパックによってデータベース・マネージャー構成ファイルの形式が変更される場合、一度クラスターを解除してからフィックスパックを適用する必要があります。Db2 v10.5 以前のマニュアルに記載された手順ではデータベース・マネージャー構成ファイルの形式が正しく更新されず、フィックスパック適用後に問題が起きることがあります。
How can we make sure that DB2 MSCS both hosts are updated correctly?

関連情報
Microsoft Failover Clustering のサポート (Windows)
Db2 サーバー製品のインストールに必要なユーザー・アカウント (Windows)
Windows Server フェールオーバー クラスタリング
パスポート・アドバンテージによく寄せられる質問
 

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008Pm2AAE","label":"High Availability-\u003EMSCS-Microsoft Cluster Server"}],"ARM Case Number":"","Platform":[{"code":"PF033","label":"Windows"}],"Version":"All Versions"}]

Document Information

Modified date:
07 March 2024

UID

swg21575350