Db2 on OpenShift 11.5.6 アップグレード手順


Db2 on OpenShift のアップグレード

オンプレミス環境で稼働するDb2に、現在稼働中のOS上でFix適用を行う場合には

  • 新しいFixPackのモジュールをダウンロード
  • FixPackをインストール(もしくは、新しいパスに新規導入)
  • インスタンスのアップグレード

といった手順を踏みますが、
Db2 on OpenShift(Db2U) の場合は、Db2ユーザ(管理者)が行う手順は以下のようになります。

  • 新しいCNリリース(※)に対応した新しいバージョンのDb2オペレータにアップグレード
  • Db2クラスタ(Db2サーバ本体の動くコンテナ群) のアップグレード

(※) CN(container-enhanced) 各リリースレベルにおける変更点はこちらを参照
  Db2マニュアル:Container layer enhanced (cn) releases

Db2クラスタの最新cnリリースを利用するには、Db2オペレータも最新にしておく必要があります。
Db2オペレータ、Db2クラスタ のアップグレードはいずれも、OpenShift Container Platform(OCP) Webコンソール上で行うことができ、アップグレード作業は実質ほとんどGUIベースで実施可能といえます。

Db2サーバとDb2オペレータの関係

OpenShift の世界では、Db2サーバは下記の要領でデプロイします。

  • Db2 Operator を導入
  • カスタムリソースであるDb2クラスタ(Db2uCluster)のインスタンスを作成
    • クラスタという名称ですが、レプリカ数は1、Db2エンジンが動くPodが1つ稼働する構成です
    • Db2サーバ本体のPod以外にもldap,etcdなどの周辺機能を提供するPodもあわせて作成されます

Db2サーバのアップグレードにあたって、Db2ユーザ(管理者)が行うのはYamlベースになっている構成情報のテキスト編集だけで、Db2サーバのアップグレードはDb2オペレータにより行われます。
この前提として、Db2オペレータが新しいバージョンに上がっていないと新しいDb2サーバにリリースアップすることができないため、Db2サーバのアップグレード前に、Db2オペレータのアップグレードを行います。

例えば、Db2 11.5.6.0-cn3 から cn5 にアップグレードするには、あらかじめ Db2u Operator を cn5 に対応するバージョンである V1.1.8 にアップグレードしておく必要があります。
Db2オペレータとDb2クラスタのバージョンの対応については、マニュアルに一覧化されています。

参考:Db2マニュアル Upgrading and updating your Db2 on Red Hat OpenShift cluster

Db2 11.5.6.0-cn5 について

今回検証したのは Db2 on OpenShift 11.5.6 cn3 から cn5 へのアップグレードです。
なお cn5 はいくつかの不具合が修正されているもので、機能追加は含まれないリリースとなります。

アップグレード後もDb2バージョン(Fixレベル)は V11.5.6.0 と同一ですが、 db2level コマンドの出力結果はに含まれる Informational tokens が変更されていて、Db2エンジンのマイナーバージョンアップが行われているようです。

CNリリース db2level出力抜粋(Informational tokens)
V11.5.6.0-cn3 "DB2 v11.5.6.0", "s2109240421", "DYN2109240421AMD64",and Fix Pack "0".
V11.5.6.0-cn5 "DB2 v11.5.6.0", "s2111010843", "DYN2111010843AMD64",and Fix Pack "0".

ここから、実際にアップグレードを行っていきます。

Step1. Db2 オペレータのアップグレード手順

1. OCP Webコンソールにログイン

[Operator] > [インストールされたOperator]の画面を開きます。
更新可能な場合、[IBM Db2] のステータス欄に「利用可能なアップグレード」というリンクが表示されます。
このリンクをクリックし、アップグレードを開始します。

2. InstallPlanのプレビュー

[InstallPlanのプレビュー]ボタンを押下します。

3. 承認(オプション)

今回の環境では「更新の承認(Approval Policy)」をデフォルトの「自動」から「手動」へ変更しているため、承認が求められます。(→[承認]を押下)

インストールプランの右横にステータスが表示され、Installing → Complete と状態が遷移します。

4.更新されていることを確認

[インストールされたOperator] の一覧画面に戻ると、V1.1.8 へアップグレードされていることがわかります。

補足:CUIベースのDb2オペレータの更新

IBM Cloud 環境であれば CUIベースでDb2オペレータをアップグレードすることもできるようです。
参考:Upgrading the Db2 Operator

Step2. Db2サーバ本体のアップグレード手順

Db2サーバ本体のアップグレードは、Db2 on OpenShift クラスタに関連付けられているカスタムリソース(CR)のソースYAMLを編集することで行います。

このアップグレードのプロセスはGUI/CUI(oc edit db2uclusters ...)、どちらでも実行することができます。

1. OCP Webコンソールへログイン

[Operator] > [インストールされたOperator]の画面を開きます。
[IBM Db2]を選択しDb2オペレータの詳細画面に入ります。

2. [Db2u Cluster]タブを選択

3. 構成情報(Yaml)編集画面を開く

更新対象のカスタムリソース(CR)を探し、右端の列から楕円形(...)をクリックして「Db2uClusterを編集」を選択すると、Yaml編集画面が開きます。

4. Yaml編集箇所の特定

Yaml編集画面(黒地)を選択した状態で [Ctrl]+F を押下すると検索バーが右上に開かれ、Yaml内をキーワード検索できるようになります。
この検索バーで "version" という文字を検索します。

5. バージョンの値を変更

バージョンストリングを編集します。
Yamlファイル中、versionという文字列自体は複数回登場します。
編集するのは、spec配下にあるversionの値です。

<編集前>   version: 11.5.6.0-cn3
<編集後>   version: 11.5.6.0-cn5

6. 変更内容を保存

編集画面下にある [保存]ボタンを押下し、変更内容を保存します。

保存が完了すると、Yaml編集画面下に「<db2ucluster-name>がnnnnnnnnに更新されました」というメッセージが表示されます。

7.アップグレード済であることの確認

<< Db2uCluster Yaml定義の確認 >>
OCP Webコンソールに表示されるYamlの定義内容を改めて確認すると、先の手順で変更した spec だけでなくstatus 内に記載されるバージョンストリングも、Db2 11.5.6.0-cn5 に上がっていることがわかります。

<< OCP Webコンソール上の表示の確認 >>
OCP Webコンソール Db2オペレータのDb2u Clusterタブより、今回アップグレードを行ったインスタンスを選択し詳細表示を行います。

Version の項目が、cn3 から cn5 に変わっていることが確認できます。

補足:Db2サーバアップグレード後のJob/Pod

上記操作にてCNリリースアップを行った後の oc get all 出力を添付します。
アップグレード用のJob/Podが実行されていたことがわかります。

  • Job ... c-db2ucluster-sample-11.5.6.0-cn3-to-11.5.6.0-cn5
  • Pod ... c-db2ucluster-sample-11.5.6.0-cn3-to-11.5.6.0-cn5-7w9mn
[utsumi@k3bastion ~]$ oc get all -o wide
NAME                                                          READY   STATUS      RESTARTS   AGE    IP             NODE      NOMINATED NODE   READINESS GATES
pod/c-db2ucluster-sample-11.5.6.0-cn3-to-11.5.6.0-cn5-7w9mn   0/1     Completed   0          39m    10.131.1.97    worker2   <none>           <none>
pod/c-db2ucluster-sample-db2u-0                               1/1     Running     0          58m    10.129.2.155   worker3   <none>           <none>
pod/c-db2ucluster-sample-etcd-0                               1/1     Running     0          53m    10.128.3.239   worker1   <none>           <none>
pod/c-db2ucluster-sample-instdb-4fwnx                         0/1     Completed   0          11d    10.131.1.81    worker2   <none>           <none>
pod/c-db2ucluster-sample-ldap-8c9dcb5d9-bmmjt                 1/1     Running     0          59m    10.128.3.237   worker1   <none>           <none>
pod/c-db2ucluster-sample-restore-morph-lvr9w                  0/1     Completed   0          11d    10.131.1.82    worker2   <none>           <none>
pod/db2u-operator-manager-55bb58dfd8-twrtt                    1/1     Running     13         120m   10.128.3.224   worker1   <none>           <none>

NAME                                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                           AGE   SELECTOR
service/c-db2ucluster-sample-db2u            ClusterIP   172.30.60.2      <none>        50000/TCP,50001/TCP,25000/TCP,25001/TCP,25002/TCP,25003/TCP,25004/TCP,25005/TCP   11d   app=db2ucluster-sample,component=db2oltp,formation_id=db2ucluster-sample,role=db,type=engine
service/c-db2ucluster-sample-db2u-engn-svc   NodePort    172.30.217.115   <none>        50000:31545/TCP,50001:30675/TCP                                                   11d   app=db2ucluster-sample,component=db2oltp,formation_id=db2ucluster-sample,role=db,type=engine
service/c-db2ucluster-sample-db2u-internal   ClusterIP   None             <none>        50000/TCP,9443/TCP,50052/TCP                                                      11d   app=db2ucluster-sample,component=db2oltp,formation_id=db2ucluster-sample,role=db,type=engine
service/c-db2ucluster-sample-etcd            ClusterIP   None             <none>        2379/TCP,2380/TCP                                                                 11d   app=db2ucluster-sample,component=etcd,formation_id=db2ucluster-sample
service/c-db2ucluster-sample-ldap            ClusterIP   172.30.89.239    <none>        50389/TCP                                                                         11d   app=db2ucluster-sample,formation_id=db2ucluster-sample,role=ldap

NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES                                                                                                    SELECTOR
deployment.apps/c-db2ucluster-sample-ldap   1/1     1            1           11d   ldap         icr.io/db2u/db2u.auxiliary.auth@sha256:d3f4668425c2f0c303c3507b9d899ceeff4c7127e718662466bbf4a86b166731   app=db2ucluster-sample,formation_id=db2ucluster-sample,role=ldap
deployment.apps/db2u-operator-manager       1/1     1            1           20d   manager      docker.io/ibmcom/db2u-operator@sha256:c6d918de8092cdc6ae58087718413567d22920562a777a448d56a4fa3c57d6e4    control-plane=db2u-operator-manager

NAME                                                  DESIRED   CURRENT   READY   AGE    CONTAINERS   IMAGES                                                                                                     SELECTOR
replicaset.apps/c-db2ucluster-sample-ldap-7d6d659bc   0         0         0       11d    ldap         cp.icr.io/cp/db2u.auxiliary.auth@sha256:34c5d313843262d4027fcf84eeed8ed8ec0886b7361796ee493bd42b9224bc4a   app=db2ucluster-sample,formation_id=db2ucluster-sample,pod-template-hash=7d6d659bc,role=ldap
replicaset.apps/c-db2ucluster-sample-ldap-8c9dcb5d9   1         1         1       59m    ldap         icr.io/db2u/db2u.auxiliary.auth@sha256:d3f4668425c2f0c303c3507b9d899ceeff4c7127e718662466bbf4a86b166731    app=db2ucluster-sample,formation_id=db2ucluster-sample,pod-template-hash=8c9dcb5d9,role=ldap
replicaset.apps/db2u-operator-manager-55bb58dfd8      1         1         1       120m   manager      docker.io/ibmcom/db2u-operator@sha256:c6d918de8092cdc6ae58087718413567d22920562a777a448d56a4fa3c57d6e4     control-plane=db2u-operator-manager,pod-template-hash=55bb58dfd8
replicaset.apps/db2u-operator-manager-7b5dfb5bc7      0         0         0       20d    manager      docker.io/ibmcom/db2u-operator@sha256:5dc50046595172f94fd37ef8497e2b4f2fdf2c12dff4885b6397969bdade11a5     control-plane=db2u-operator-manager,pod-template-hash=7b5dfb5bc7

NAME                                         READY   AGE   CONTAINERS   IMAGES
statefulset.apps/c-db2ucluster-sample-db2u   1/1     11d   db2u         icr.io/db2u/db2u@sha256:fa30d2c32cde7882cac6a49938b324011d0521b9300cd565230589c983212617
statefulset.apps/c-db2ucluster-sample-etcd   1/1     11d   etcd         icr.io/db2u/etcd@sha256:621d9a72ec012ed64f8b56cc56b3ec613d81367fc0ef235d06d44cd2823fca8d

NAME                                                          COMPLETIONS   DURATION   AGE   CONTAINERS      IMAGES                                                                                             SELECTOR
job.batch/c-db2ucluster-sample-11.5.6.0-cn3-to-11.5.6.0-cn5   1/1           43m        59m   engn-update     icr.io/db2u/db2u.tools@sha256:867277235139cd0f32341b68f423bd720be30d4019d67c0ff24d4e5279d44f6e     controller-uid=04cf2fa0-5520-498b-9600-1b91dbc3e1df
job.batch/c-db2ucluster-sample-instdb                         1/1           33s        11d   instdb          cp.icr.io/cp/db2u.instdb@sha256:c35d117b57a57971afb24dbe60f34cc0c496fba46d7f11756d80a25bf4edf3c1   controller-uid=e762b583-29cb-43db-8e41-efb95191eaf9
job.batch/c-db2ucluster-sample-restore-morph                  1/1           25m        11d   restore-morph   cp.icr.io/cp/db2u.tools@sha256:a981cb52a2d87416417fd58e434c9dbeff6115f8656dc8dea4f89b25271fbaf0    controller-uid=99941ba6-bb8a-4536-a753-aa2106bea80b
$

参考