OpenShift/Kubernetes環境でDb2を動かすには、マイクロサービスとして開発される、k8s環境専用のDb2製品を導入します。
このDb2は、Db2 for Red Hat OpenShift and Kubernetes、別名Db2Uとも呼ばれます。
Db2として公式の Kubernetes Operator が提供され、カスタムリソースのインスタンスを作成することでDb2をデプロイします。
※ オンプレミス版のように db2setupやdb2_installコマンドによってDb2デプロイを行うことはできません。
Db2U でも、従来のオンプレミス版Db2同様にライセンスファイルを適用することで、製品サポートを受けられるようになります。
ライセンスファイルの適用手順は、オンプレミス版とは少し異なります。
以下の手順でライセンスファイルを適用することができました。
環境
全体構成
- Red Hat OpenShift Kubernetes Service (ROKS) 上に Db2 for OpenShift and K8s をデプロイ
- Db2uClusterインスタンスデプロイ済
- ライセンスファイルは作業用PCローカルに配置
コンポーネント | バージョン |
---|---|
OpenShift | 4.10.52 |
OpenShift Data Foundation | odf-operator.v4.10.9 |
Db2 for OpenShift | s11.5.8.0-cn2 |
Db2uInstanceに対しても同じ手順でライセンス適用は可能なようですが、今回はDb2uCluster環境を利用しています。
※Db2uClusterはStatefulSetベースの古いアーキテクチャのカスタムリソースであり、2023年7月現在Db2uInstanceの利用が推奨されます。今回は手元にデプロイ済Db2uCluster環境があったため、こちらを活用しました。
Db2U:ライセンスファイル適用
製品マニュアルの記載に従って、進めます。
Db2 Community Edition ライセンス証明書キーのアップグレード
全体の流れ
- Db2ライセンスファイルの入手
- Db2ライセンスファイルを base64 にエンコード
- ライセンスファイル適用(oc edit)
- Db2U Podの再起動
- ライセンス確認
(事前確認) ライセンス適用前のdb2licm -lコマンド出力
ライセンス適用前は、ライセンス管理ツールで適用状況を確認すると、以下のように出力されます。
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$ db2licm -l
Product name: "DB2 Enterprise Server Edition"
License type: "License not registered"
Expiry date: "License not registered"
Product identifier: "db2ese"
Version information: "11.5"
Product name: "DB2 Community Edition"
License type: "Community"
Expiry date: "Permanent"
Product identifier: "db2dec"
Version information: "11.5"
Max amount of memory (GB): "16"
Max number of cores: "4"
Max amount of table space (GB): "100"
Features:
IBM DB2 Performance Management Offering: "Not licensed"
Step1. Db2ライセンスファイル入手
Db2Uを使う場合も、オンプレミス版とライセンス体系は変わりません。
適用するライセンスファイルも共通のものが利用可能です。
Advanced エディションおよび Standard エディションのライセンス・キーは、 IBM Passport Advantage サイトからダウンロードできます。
- ライセンスファイル名
- Db2 Advanced Edition: db2adv_vpc.lic
- Db2 Standard Edition: db2std_vpc.lic
- 補足:ライセンスをダウンロードするには、ライセンスを使用する資格が必要となります(IBMとのサポート契約)
ダウンロードしたライセンスファイルは、ライセンス適用作業を行う端末のローカルディレクトリに配置しておきます。
Step2. Db2ライセンスファイルを base64 にエンコード
ライセンス適用を行う端末にて、ライセンスファイルをエンコードします
cd <ライセンスファイル配置ディレクトリ>
LICENSE_KEY="./db2adv_vpc.lic"
cat ${LICENSE_KEY} | base64 | tr -d '\n'
出力例:
# cat ${LICENSE_KEY} | base64 | tr -d '\n'
W0xpY2Vuc2VDZXJ0aWZpY..
(略)
R1cmF0aW9uPQo=
出力されたテキストの内容は、後ほどDb2UのYamlファイルにCopy&Pasteするため、必要に応じてローカルにテキストファイルとして保存しておきます。
Step3. ライセンスファイル適用(oc edit)
Db2uClusterデプロイメントのカスタムリソース名(今回は「db2ucluster-4」)を取得し、OS環境変数 INSTANCE に設定します
oc get db2ucluster
NAME STATE MAINTENANCESTATE AGE
db2ucluster-4 Ready None 38d
INSTANCE_NAME="db2ucluster-4"
カスタムリソースを編集します
oc edit db2ucluster ${INSTANCE_NAME}
編集モードで、YAML ファイルの spec のひとつ下の階層に存在する license キーの値として、Step2.でエンコードして取得された文字列を入力します。
spec:
license:
value: <エンコード文字列を貼付>
注意点
- Db2uCluster v11.5.8-cn2 のYamlには、"license"キーは2か所存在し、このうち、specの直下にあるlicenseキーに入力する必要があります
- addOn用のlicenseキーの値としてDb2ライセンスのエンコードを入力してしまうと、oc edit自体は成功しますが、無効な入力値であるため、反映されません
Yamlファイルを保存して閉じます。
viエディタであれば、[:wq]でクローズすることにより、元のターミナルに戻ります。
標準出力に" ... edited" と出力されていることを確認します。
oc edit db2ucluster db2ucluster-4
db2ucluster.db2u.databases.ibm.com/db2ucluster-4 edited
Step4. Db2U Podの再起動
Db2 Podを再起動し、新しいライセンスを有効にします。
oc delete $(oc get po -l type=engine,formation_id=${INSTANCE_NAME} -oname)
pod "c-db2ucluster-4-db2u-0" deleted
Step5. ライセンス確認
Db2 Pod にログインし、インスタンスオーナーにスイッチします
oc rsh c-db2ucluster-4-db2u-0 bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2ucluster-4-db2u-0 /]$ su - db2inst1
Last login: Fri Jul 14 11:39:23 UTC 2023
ライセンス適用状況を確認します
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$ db2licm -l
Product name: "DB2 Advanced Edition"
License type: "Virtual Processor Core"
Expiry date: "Permanent"
Product identifier: "db2adv"
Version information: "11.5"
Enforcement policy: "Hard Stop"
Features:
IBM DB2 Performance Management Offering: "Not licensed"
"DB2 Advanced Edition"と出力され、ライセンスが適用されていることが確認できました。
(Option) Db2Uのスケールアップ
CPU数、メモリーサイズの拡張が必要となった場合には、oc patch コマンドにて実施可能です。
参考:Db2マニュアル[Db2 のスケールアップ]