Db2 on Cloud Pak for Data 4.6.2 導入と構成
シリーズ"Db2 on CP4D 4.6.2 導入と構成"は 2023年02月の経験をベースに 次のようなCloud Pak for Data (以下CP4D)4.6.2環境へ Db2を導入デプロイする手順をご紹介します。
- Managed OpenShift cluster (ROKS) on IBM Cloud (VPC/"Gen2")
- OpenShift Container Platform (OCP) 4.10 , OpenShift Data Foundation (ODF) 4.10
- Cloud Pak for Data (CP4D) 4.6.2
本シリーズの目次はこちらです。
ここでは Db2専用ノードを設定します。
1.(準備)Db2専用ノードの設定
Db2では 専用ノードを使用することを推奨されています。 とくに 本番環境では専用ノードで稼働させる必要があります。ここでは Db2専用ノード 10.244.128.70
にして dedicated_specifier(ノードラベル)database-db2oltp
を設定します。
手順
作業は踏み台マシンでおこないます。
(1) 環境変数シェルスクリプトを次のようにして実行して環境変数を定義してOpenShiftクラスターにログインしましょう。 ここで実行している$OCLOGINはcpd_vars.sh内で環境変数として定義しています。
# source ./cpd_vars.sh
# $OCLOGIN
シリーズ"Db2 on CP4D 4.6.2 導入と構成"で使用している環境変数登録用のシェルcpd_vars.shについてはDb2 on CP4D 4.6.2 導入と構成 - 前提, 環境変数定義シェルcpd_vars.shをご参照ください。
(2) ワーカーノードをリストして Db2専用ノードにするノードを決定します。
# oc get nodes
NAME STATUS ROLES AGE VERSION
10.244.128.63 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.64 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.65 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.67 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.68 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.69 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.70 Ready master,worker 27h v1.23.12+8a6bfe4
10.244.128.72 Ready master,worker 27h v1.23.12+8a6bfe4
#
(3) この後の作業で使用するDb2専用ノード 10.244.128.70
dedicated_specifierdatabase-db2oltp
を環境変数に登録しておきましょう。
# db2node=10.244.128.70; dedicated_specifier=database-db2oltp
(4) NoSchedule オプションをつけて oc adm taint node
を実行します。 taintが適用されたノードにポッドがデプロイされないようにします。
# oc adm taint node ${db2node} icp4data=${dedicated_specifier}:NoSchedule --overwrite
node/10.244.128.70 modified
#
(5) oc adm drain
コマンドを実行して すべてのPodを taint したノードから 安全に退避させます。drainをオプションなしで実行するとほとんどのケースで 次のようなエラーがします。
(注)エラーの出力は異なる環境のものであるため nodeのIPアドレスが異なります。
# oc adm drain ${db2node}
node/10.245.0.96 cordoned
error: unable to drain node "10.245.0.96" due to error:[cannot delete Pods not managed by ReplicationController, (省略)
There are pending nodes to be drained:
10.245.0.96
cannot delete Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet (use --force to override): (省略)
cannot delete DaemonSet-managed Pods (use --ignore-daemonsets to ignore): (省略)
cannot delete Pods with local storage (use --delete-emptydir-data to override): (省略)
#
oc adm drain
コマンドで エラーが発生する場合、エラーメッセージを吟味して 問題ないようであれば エラーメッセージで指定されたオプションをつかって 再度 oc adm drain
コマンドを実行します。
# oc adm drain ${db2node} --ignore-daemonsets --delete-emptydir-data --force
node/10.244.128.70 cordoned
WARNING: deleting Pods not managed by ReplicationController,(省略)
evicting pod kube-system/ibm-worker-info-agent-10.248.128.75-yx1r2-drptv
evicting pod ibm-odf-validation-webhook/managed-storage-validation-webhooks-d9f78d586-xxxgb
:(省略)
pod/certified-operators-dsgpx evicted
node/10.244.128.70 drained
#
(6) oc adm drain
実行中にスケジュール対象外とされた(cordoned)ノードを スケジュール対象としてマーク(uncordon)します。
# oc adm uncordon ${db2node}
node/10.244.128.70 uncordoned
#
(7) ノードにラベルを付けます。
# oc label node ${db2node} icp4data=${dedicated_specifier} --overwrite
node/10.244.128.70 labeled
#
(8) 8. オプション : ノードにラベルがつけられたことを確認しましょう。
# oc get node --show-labels | grep ${dedicated_specifier}
10.244.128.70 Ready master,worker 28h v1.23.12+8a6bfe4 arch=amd64,(省略),icp4data=database-db2oltp,(省略)
#
↑の出力例は大半を省略していて、実際の出力では1000文字目以降にicp4data=database-db2oltp
が出現していました。
これで Db2専用ノードの設定ができました。
(メモ) taint の削除 node labelの削除方法
ノード 10.245.0.89につけたラベルキーicp4dataを削除するコマンドの例が次です。
oc adm taint nodes 10.245.0.89 icp4data-
oc label node 10.245.0.89 icp4data- --overwrite