db2cm を使用した Pacemaker の構成

2,214 views

db2cm を使用した Pacemaker の構成

ご存じの方もいるかと思いますが、クラウド環境で Db2 のクラスター環境を構築する場合、TSA がサポートされなくなりました。AWS だけでなく、IBM Cloud を含む全てのクラウド環境でサポートされなくなってます。
以下のリンク先を見るとタイブレーカーだけは使えるとありますが、そんな限定的な使用しませんよね。。。バージョン 11.5 モディフィケーションパック 5 以降からは Pacemaker を使用した HADR を含むクラスタ環境を構築する必要があるみたいです。現在検証用としての Pacemaker と db2cm (クラスター・マネージャー・ユーティリティー)が提供されていましたので試用してみました、インストール方法など参考になれば。それではよろしくお願いします。

db2cm の準備

Db2 クラスター・マネージャー (db2cm) ユーティリティー のダウンロード

以下のサイトから Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64.tar.gz をダウンロードします。今回は GCP 上の Red Hat Enterprise Linux release 8 の環境にインストールします。ダウンロードには IBM id が必要になります。

root ユーザーでの鍵交換

鍵交換

db2cm のインストール時に root での ssh が必要になるので、root ユーザー同士で鍵交換を行い、それぞれパスフレーズなしで ssh できるようにしておきます、鍵の交換方法は以下のページで説明しています。

root ログイン許可設定

今回は root でのログインが必要になるので、sshd の設定を変更します。
/etc/ssh/sshd_config の PermitRootLogin というエントリを “yes” に変更します。
デフォルトでは no になっています。

# cat /etc/ssh/sshd_config | grep Root
PermitRootLogin yes

sshd の再起動をします。

# service sshd restart

db2cm コマンドのインストール

解凍

今回 Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64.tar.gz は /work というディレクトリに配置して作業をしていますので、それぞれ読み替えて実施してください。まずは解凍します。

# cd /work
# tar -zxvf Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64.tar.gz

インストール

Pacemaker および、関連パッケージをインストールします。

# cd /work/Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64/RPMS
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf install */*.rpm

db2cm 内で使用されているので、入ってなければ念のためインストールしておきます。

# yum install bc

インストール後確認

# rpm -q corosync
corosync-3.0.4-1.db2pcmk.el8.x86_64
# rpm -q pacemaker
pacemaker-2.0.4-1.db2pcmk.el8.x86_64
# rpm -q crmsh
crmsh-4.2.0-0.db2pcmk.el8.noarch

db2cm コマンドのコピー

db2cm コマンドをインスタンスホームの sqllib/adm 以下にコピーし、権限変更しておきます。

# cp /work/Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64/Db2/db2cm /home/db2inst1/sqllib/adm
# chmod 755 /home/db2inst1/sqllib/adm/db2cm

リソースエージェント転送

db2cm コマンドを使用して必要なリソースエージェントを各ホストへ転送します。
今回の環境では instance-1 が Db2 HADR のプライマリー、instance-2 がスタンバイホストになっています。

# /home/db2inst1/sqllib/adm/db2cm -copy_resources /work/Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64/Db2agents -host instance-1
# /home/db2inst1/sqllib/adm/db2cm -copy_resources /work/Db2_v11.5.5.0_Pacemaker_20201118_RHEL8.1_x86_64/Db2agents -host instance-2

Pacemaker 構成

HADR_PEER_WINDOW 変更

Pacemaker との監視間隔と合わせるために、HADR_PEER_WINDOW の値を 60 以下にします。

$ db2 "UPDATE DB CFG FOR HADRDB  USING HADR_PEER_WINDOW 60"

クラスタードメイン作成

新規に Pacemaker のクラスターを作成します。

# /home/db2inst1/sqllib/adm/db2cm -create -cluster -domain hadom -host instance-1 -publicEthernet eth0 -host instance-2 -publicEthernet eth0

Db2 インスタンスリソース作成

Db2 インスタンスのリソースを定義します。

# /home/db2inst1/sqllib/adm/db2cm -create -instance db2inst1 -host instance-1
# /home/db2inst1/sqllib/adm/db2cm -create -instance db2inst1 -host instance-2

crm status コマンドで状態確認します。
現段階で 4つのリソースが正常にモニタリングできているはずです。

# crm status
:
:
:
Full List of Resources:
* db2_instance-1_eth0 (ocf::heartbeat:db2ethmon): Started instance-1
* db2_instance-2_eth0 (ocf::heartbeat:db2ethmon): Started instance-2
* db2_instance-1_db2inst1_0 (ocf::heartbeat:db2inst): Started instance-1
* db2_instance-2_db2inst1_0 (ocf::heartbeat:db2inst): Started instance-2

データベースリソース作成

Pacemaker でモニタリングするデータベースリソースを追加します。リソースを追加後、HDAR構成を判断して Master/Slave 構成が作成されます。

# /home/db2inst1/sqllib/adm/db2cm -create -db HADRDB -instance db2inst1
# crm status
:
:
:
Full List of Resources:
* db2_instance-1_eth0 (ocf::heartbeat:db2ethmon): Started instance-1
* db2_instance-2_eth0 (ocf::heartbeat:db2ethmon): Started instance-2
* db2_instance-1_db2inst1_0 (ocf::heartbeat:db2inst): Started instance-1
* db2_instance-2_db2inst1_0 (ocf::heartbeat:db2inst): Started instance-2
* Clone Set: db2_db2inst1_db2inst1_HADRDB-clone [db2_db2inst1_db2inst1_HADRDB] (promotable):
* Masters: [ instance-1 ]
* Slaves: [ instance-2 ]

VIP リソース 作成

VIP を付与します。

# /home/db2inst1/sqllib/adm/db2cm -create -primaryVIP 10.10.10.5 -db HADRDB -instance db2inst1

クラウド環境ではオンプレと異なりVIPの付与までに手順を踏む必要があります。以下が参考になると思います。

動作確認

TAKEOVER

以下のコマンドで Pacemaker で TAKEOVER を行ってみます。

# crm resource migrate db2_db2inst1_db2inst1_HADRDB-clone instance-2

crm status コマンドで確認してみます。Masters と Slaves のホストが入れ替わり、HADR の旧スタンバイが プライマリーになっています。

# crm status
:
:
:
* Masters: [ instance-2 ]
* Slaves: [ instance-1 ]
* db2_db2inst1_db2inst1_HADRDB-primary-VIP (ocf::heartbeat:IPaddr2): Started instance-2

再度同様のコマンドを実行し、元に戻します。

# crm resource migrate db2_db2inst1_db2inst1_HADRDB-clone instance-1

この状態で プライマリーをシャットダウンしてみます。

[root@instance-2 ~]# crm status
:
:
:
Node List:
Online: [ instance-2 ]
OFFLINE: [ instance-1 ]
Active Resources:
db2_instance-2_eth0 (ocf::heartbeat:db2ethmon): Started instance-2
db2_instance-2_db2inst1_0 (ocf::heartbeat:db2inst): Started instance-2
Clone Set: db2_db2inst1_db2inst1_HADRDB-clone db2_db2inst1_db2inst1_HADRDB: Masters: [ instance-2 ]
db2_db2inst1_db2inst1_HADRDB-primary-VIP (ocf::heartbeat:IPaddr2): Started instance-2

プライマリー がダウンしたことを検知して、スタンバイ へ TAKEOVER されサービスは継続されます。この状態で旧 プライマリーを起動すると再び プライマリーとして起動してくるので、
“START HADR ~ AS STANDBY” でスタンバイとして起動して切り戻してください。

db2cm コマンドのアンインストール方法は以下を参照ください。

さて、Db2 と Pacemaker の組み合わせで db2cm コマンドを触ってみましたが、個人的な感想としてはま簡単に Pacemaker のクラスターとリソースが作成できるので便利かなと思いました。
ただ、VIP を振らない場合の構成を考えると、ping や heartbeat 先を増やしたりしてスプリットブレイン対応をする必要があるのですが、db2cm で作成したリソース以外はサポート外となるっぽいので注意が必要ですね。

Db2 は、Pacemaker を統合クラスター・マネージャー・ソリューションとしてサポートします。ただし、これは、使用中の Pacemaker およびそのソフトウェア・スタックが、Db2 によって直接提供されており、特定の Db2 リリースに対応しており、新しい db2cm ユーティリティーを使用して構成されている場合に限られます。Db2 によって提供されていない Pacemaker ソフトウェア・スタックに関するクラスター・マネージャー関連の問題のサポートは、Pacemaker ソフトウェアのサプライヤーに依頼する必要があります。

https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_11.5.0/com.ibm.db2.luw.admin.ha.doc/doc/c_prereq_pacemaker.html

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA