LoginSignup
0

More than 1 year has passed since last update.

Db2 11.5.5 on OpenShift:GUIベースのデプロイ手順

Last updated at Posted at 2021-02-01

Db2 11.5.5 on OpenShift は、Operator対応されたことによって、OCP WebコンソールからGUIベースでインストールすることができるようになりました。
OCP WebコンソールからDb2をデプロイするための手順を試してみたので、手順・ポイントなどメモとしてまとめておこうと思います。

  • 前提となるDb2 Operator導入まで実施完了していることを前提とします
  • Db2 Operator導入などの、前提となる手順はこちらに書いています
      → Db2 11.5.5 on OpenShift デプロイ手順
  • すべての作業をGUIだけで行うことができるわけではなく、一部の手順はコマンドラインから実行します

導入環境

今回は、以下のような環境に Db2 11.5.5 on OpenShift をデプロイしました。

項目 バージョン
OS(bastion) RHEL 7.7
OS(worker) RHEL 7.7
OCP(Client) ※ 4.5.0-202007240519.p0-b66f2d3
OCP(Server) ※ 4.5.7
Kubernetes v1.18.3+2cf11e2
NFS 4.2
Db2 OLTP 11.5.5

構成

今回は、以下のような構成のOCP環境にDb2をデプロイします。
Db2はStatefulSetとしてデプロイされます。

  • Bastion Node x1
  • Master Node x3
  • Worker Node x3

image.png

ストレージには、当該環境では最も準備が容易だったNFS-静的プロビジョニング構成を選択しています。
今回はBastionサーバをNFSサーバとして構築し、Bastionサーバのローカルファイルシステムの1つをNFSボリュームとしてexportする単純な構成としています。
ストレージ構成は今回の導入検証のための簡易テスト環境であり、実際の本番環境での利用にあたっては技術的な構成確認の場をメーカー(IBM)側にとるようにお願いします。

作業を行うノード / ユーザ

ここから先で実行するコマンドはすべてBastionノードから実行しています。
また、ユーザは以下の用途で使い分けています。

ユーザ 用途/補足
rootユーザ NFSサーバのセットアップ用
OCPユーザ ocコマンド実行
(cluster-admin権限付与)

コマンド実行ノード・ユーザについてはご使用の環境に応じて決めてください。
また、ocコマンド実行前には、oc login が必要となります。

導入の流れ

  1. ストレージ構成
  2. Db2uCluster(≒シングル構成Db2)導入
  3. 動作確認

(補足)導入の全体としての流れは以下の通りで、ここから先の手順はグレーの作業(新規プロジェクト作成、Db2 Operator導入)までは完了していることを前提とします
image.png

Step1. ストレージ構成

Db2uCluster(Db2本体)導入時は、メタデータ/ユーザデータを配置するためのストレージとして、ストレージクラス、もしくは作成済のPVを指定します。
ここでは、作成済PVを指定してDb2uClusterを導入する手順を想定しています。

Step1-1. NFSサーバの構成

今回は検証環境であるため、セットアップの容易なNFSをストレージとして利用します。
(※本番稼働環境であれば、性能/可用性/バックアップ取得要件等を考慮した上でストレージ構成を検討することが望ましい)
NFSサーバ(=bastion) へログインし、root ユーザ にて以下の手順を実行します。

① 空のディレクトリを作成

メタデータ、ユーザデータ用に2つのディレクトリを作成します

# mkdir -p /work/nfsdir/Db2NFS_Data2
# mkdir -p /work/nfsdir/Db2NFS_Meta2

② NFSサーバ上で、エクスポートオプションを指定

Db2U 11.5.5 におけるNFS利用のための前提条件は、Db2製品マニュアルに記載されます。
Db2 11.5 KnowledgeCenter[NFS storage requirements for Db2]

  • Db2 のPersistent Volume として NFS を利用する場合、NFSサーバ側で以下のエクスポートオプションを指定
    rw,sync,no_root_squash,no_all_squash

  • IPアドレスは環境に応じて書き換える(db2_openshiftworkerN_IP_address の箇所)

# echo "/work/nfsdir/Db2NFS_Data2 10.1.1.1/27(rw,sync,no_wdelay,no_root_squash,insecure)" >> /etc/exports
# echo "/work/nfsdir/Db2NFS_Meta2 10.1.1.1/27(rw,sync,no_wdelay,no_root_squash,insecure)" >> /etc/exports

/etc/exportsファイルでのNFSの設定を反映する (exportfs -a または exportfs -r)

# exportfs -a

補足:

Knowledge Center には、/etc/fstab ファイルを編集するよう指示があるが、設定するよう指示される hard オプションは後で Persistent Volume の属性に設定するため、この手順はスキップする。

抜粋:

各 Db2OpenShiftワーカー・ノードで、マウント・オプションを/etc/fstabに追加します。
NFS ソフト・マウントは NFS タイムアウトの超過後に停止し、呼び出し元に正しくエラーを返さない可能性があります。
この問題によって、クラスター・アプリケーションでデータ破損が生じることがあります。これが、hard オプションを使用する理由です。

例えば、以下のシェル・スニペットを使用して更新を行うことができます。
cat <<'EOF' > /etc/fstab
hostname_OR_IP_address_of_NAS/NFS_server:NAS/NFS_share_exported /nfsmount/ nfs
rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,intr,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,nolock 0 0
EOF


Step1-2. Persistent Volume(PV) 作成

OCP Webコンソールから、メタデータ用とユーザーデータ用の2つのPVを作成します。
左のメニューから [Storage] -> [Persistent Volumes]を選択します。
image.png

右上の [Create Persistent Volume] ボタンを押下します。
image.png

Yaml編集画面が開くので、環境に応じた定義内容を記載し、[Create]ボタンを押下しPVを作成します
image.png

以下①、②に、今回使用したNFSのPVの定義サンプルを添付します。

①メタデータ用PVのYamlサンプル

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-db2meta2
  labels:
    type: nfs-meta2
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: slow
  mountOptions:
    - v4.2
    - context="system_u:object_r:container_file_t:s0"
    - hard
  nfs:
    path: /work/nfsdir/Db2NFS_Meta2
    server: 10.1.1.1

②ユーザデータ用PVのYamlサンプル

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-nfs-db2data2
  labels:
    type: nfs-data2
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: slow
  mountOptions:
    - v4.2
    - context="system_u:object_r:container_file_t:s0"
    - hard
  nfs:
    path: /work/nfsdir/Db2NFS_Data2
    server: 10.1.1.1

Step2. Db2uCluster デプロイ(Db2 on OpenShiftの導入)

OCP Webコンソールにログインし、[Operators] -> [Installed Operators] の画面を開き、「IBM Db2」を選択します。
※Db2 Operatorが表示されない場合は、「all project」もしくは、作業対象のプロジェクト(ネームスペース)が選択されていることを確認してください
image.png

「Provided APIs」の一覧に並ぶアイコン「Db2u Cluster」の下にある「Create Instance」ボタンを押下します。
image.png

Db2インスタンスのデプロイ画面が表示され、各種設定項目と[Create]ボタンが表示されます。

  • ライセンス承諾設定等が必要となります。設定の編集を行った後に[Create]します
  • OCP Webコンソールでは、設定項目の一部がGUI入力画面にて設定できるようになっています
  • GUIはすべての設定項目を網羅していないため、GUIベースのデプロイを行う際、設定項目が無い項目についてはYamlファイルビューで直接Yamlファイルの編集を行います

image.png

下記項目を順次編集していきます。

①名称、ライセンス

image.png

②Image Pull Secret指定

Acount > Image Pull Secrets 下の「Add imagePullSecret」を押下し、[ibm-registry]を指定します
(ibm-registryは既に作成済の前提。作成手順はこちらに記載 -> Link)

image.png

(imagePullSecret入力後の画面例)
image.png

③インスタンスのパスワード情報

image.png

④ストレージ構成 (一部はYaml編集が必要)

GUI画面のデフォルトでは1つのストレージにメタデータ/ユーザデータを共存させる設定となっています。
また、無指定の状態ではストレージサイズは100Giとなります。
その他、ユーザ要件/環境に沿って、GUIで設定できる項目はGUIで、GUIでは指定できない条件についてはYamlビューにて編集していきます。

  • メタデータ、ユーザデータそれぞれのPVを指定
    (Step1.で作成しておいたPVに指定したラベル値をmatchExpressionで指定)
  • ユーザデータについてデフォルト100GiB確保される定義を、テスト環境では10GiBへ変更
  • アクセスモードをマニュアルの推奨(※)に合わせて変更

(※)Db2 11.5 KnowledgeCenter[Configuring database storage for Db2] より引用

When provisioning the database, for user data (the main database data), select ReadWriteOnce (RWO) access mode for your storage.

以下はメタデータ用ストレージの定義画面。
1つめのストレージについて、アクセスモードはデフォルトでReadWriteManyとなっているため変更不要です。
Step1.で作成済PVに定義したラベル(nfs-meta2)を指定するため、Selector > MatchExpressions の下の「Add matchExpression]を押下します。
image.png

Step1.でPVに定義したラベルは、キー(type)とバリュー(nfs-meta2)のペアで構成されます。
Db2uClusterでのストレージ定義にmatchExpressionsでセレクター要件(→PVのラベルのキー値とバリュー値)を記述することによって、作成済のPVをDb2uClusterのPodに使わせることができます。
Valueは、「Add value]ボタン押下により入力可能となります。
image.png

(key - operator - value 入力イメージ)
image.png

つづいて、[Add Storage] を押下し、ユーザデータ用ストレージの定義を追加します。

1つ目のメタデータ用ストレージと同様に、name, selector(match expressions)値を入力します。
また、1つ目のストレージと異なり、Access Mode / type の値が空白値となるため、明示的に指定します。

  • Access Mode : ReadWriteOnce
  • type : create

image.png

ここまで編集できたら、Yaml Viewに切り替えます。
image.png

デフォルトでは、メタデータ用ストレージサイズは下記抜粋のように100GiBが指定されるため、環境に応じて変更します。
(編集前:100GiB)
image.png
(編集後:10GiB)
image.png

ユーザデータ用領域も同様に編集します。
 *ユーザデータ用領域については、[resources]の定義文自体が無いため、meta用の定義をコピーする。

(メタデータ、ユーザデータ用のストレージ定義)
image.png

⑤podConfig (オプション)(要Yaml編集)

想定リソースについて記述できるpodConfig定義についても、GUI画面には登場しないため、
変更したい場合はYamlビューで記述します。
記述する位置はユーザが意識する必要はなく、Yaml末尾に記述しておくとビュー切替時などに自動的に配置変更されます。

podConfig定義(デフォルト内容):


  podConfig:
    db2u:
      resource:
        db2u:
          requests:
            cpu: 2
            memory: 4Gi
          limits:
            cpu: 2
            memory: 4Gi

podConfig定義を手動で追記すると、Formビューにも項目として登場し、GUIベースで編集できるようになります。

⑥ インストール

[Create]ボタンを押下し、Db2uCluster導入を行います。

image.png

[Create]押下後の応答は即時に戻り、作成済Db2uClusterの一覧が表示され、「Status」列で状況がリアルタイムに更新されます。
Db2uClusterデプロイは裏で進行していて、環境によりますが、完了までには数分~十数分程度かかります。

image.png

⑦ Db2 on OpenShift デプロイ完了確認

デプロイが完了すると、Statusが「Ready」に変更されます。
image.png

Step3. 動作確認

Db2 の Pod「c-[name]-db2u-0」 にログインし、データベースに接続できることを確認する。
Podには以下のコマンドでログインする。

 $ oc rsh c-db2u-nfs1-db2u-0 /bin/bash

【動作確認例】
ログイン時のユーザは Db2コマンド実行権限を持たないdb2uadm であるため、Podへのログインが成功したらdb2inst1 ユーザに su します。
db2 list db directory コマンドにより、この環境に作成されるデータベース名がBLUDBであると確認できます。
以下は、DBに接続しテスト用テーブルを作成し、データを挿入することで動作確認を行う例。

$ oc rsh c-db2ucluster-2-db2u-0 /bin/bash
[db2uadm@c-db2ucluster-2-db2u-0 /]$ whoami
db2uadm
[db2uadm@c-db2ucluster-2-db2u-0 /]$ su - db2inst1
Last login: Tue Dec 29 10:43:15 UTC 2020 on pts/4
[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ which db2
~/sqllib/bin/db2
[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 list db directory

 System Database Directory

 Number of entries in the directory = 1

Database 1 entry:

 Database alias                       = BLUDB
 Database name                        = BLUDB
 Local database directory             = /mnt/blumeta0/db2/databases
 Database release level               = 15.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            = c-db2u-cluster-1-db2u-engn-svc
 Alternate server port number         = 50000

[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 connect to bludb

   Database Connection Information

 Database server        = DB2/LINUXX8664 11.5.5.0
 SQL authorization ID   = DB2INST1
 Local database alias   = BLUDB

[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 list tables

Table/View                      Schema          Type  Creation time
------------------------------- --------------- ----- --------------------------

  0 record(s) selected.

[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 "create table t1 (c1 integer,c2 char(8))"
DB20000I  The SQL command completed successfully.
[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 "insert into t1 values(3,'c'),(4,'d')"
DB20000I  The SQL command completed successfully.

[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 "select * from t1"

C1          C2
----------- --------
          3 c
          4 d

  2 record(s) selected.

[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.
[db2inst1@c-db2ucluster-2-db2u-0 - Db2U db2inst1]$ exit

db2 terminate
DB20000I  The TERMINATE command completed successfully.

---> 導入したDb2は問題なく稼働していることが確認できました。

Step4. ライセンスの登録状況確認

Db2 V11.5では、ライセンスを適用しなくても Community Editionという無償版ライセンスが適用された状態となっている。旧バージョンのDb2試用版のように90日経過したらDb2が起動しなくなるということはありません。
この点はDb2 on OpenShiftも共通です。

導入したDb2のライセンス確認/更新を行うには、下記マニュアルに記載コマンドを実行します。

Db2 11.5 KnowledgeCenter[Upgrading your Db2 Community Edition license certificate key]

接続情報

Liberty など、OCPクラスタ内からのDB接続時に必要となる接続情報として、クラスターIPアドレスとポート番号を確認する。

① クラスターIPアドレス

プロジェクト名、リリース名は環境に応じて書き換えて実行する。

$ oc get svc -n <PROJECT> <RELEASE-NAME>-db2u-engn-svc -o jsonpath='{.spec.ports[?(@.name=="legacy-server")].nodePort}'

② ポート番号

プロジェクト名、リリース名は環境に応じて書き換えて実行する。

$ oc get svc -n <PROJECT> <RELEASE-NAME>-db2u-engn-svc -o jsonpath='{.spec.clusterIP}'

関連記事

◆Db2 11.5.5 on OpenShift デプロイ手順
https://qiita.com/mi-kana/items/6266fcdcdc3b71d8a0fb
◆OpenShift環境へのDb2 Operator導入手順
https://qiita.com/mi-kana/items/c3fb640d671caf624eb8
◆Db2 HADR on OpenShift かんたんデプロイ
https://qiita.com/mi-kana/items/7fb2fecc02067bc8386b


以上です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0