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 on OpenShift で利用可能なアップグレードおよびアップデートのオプションはオペレータによって決定されます。)例えば、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のプレビュー
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を編集することで行います。
[](CR のバージョンを更新すると、Db2 オペレータは、CR が最初に作成されたときに Db2 オペレータが作成および管理していたすべてのオブジェクトを自動的に調整します。また、Db2 オペレータは、Db2 on OpenShift のステートフルセットを編集して新しいイメージを指すようにし、Db2 エンジンポッドが新しいイメージを使用して再作成されるようにします。)
このアップグレードのプロセスは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
$