1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Db2 on CP4Dへの接続 - ClusterIP サービスを使用して接続する

Last updated at Posted at 2022-11-28

Cloud Pak for Data 内のDb2サービスへ接続できた4つの方法をご紹介しています。 使用頻度が高いと思われる順に記事を並べました。

  1. "データベース詳細"を使用して"プラットフォーム接続"を作成する
  2. NodePort サービスを使用して接続する
  3. ClusterIP サービスを使用して接続する
  4. Db2 Podに直接接続する

ここでは ClusterIP サービスを使用して接続を作成します。
ROKS (Red Hat OpenShift Kubernetes Service)に 2つ Db2 デプロイメントを作成し、1つを Db2 サーバー1つをクライアントとみなして、ClusterIP サービスを使用してDb2 サーバー上のデータベースに接続します。

image.png

Db2のClusterIP サービスを使用するための接続情報をコマンドで入手し、Db2データベースへの接続テストができるDb2Jccを利用して接続を確認しました。

ClusterIP サービスの接続情報を得る

著者は Db2 on Cloud Pak for Dataの ClusterIPサービスに関する情報はまだ見ていないのですが、oc get svcで確認すると c-db2oltp-xxxxxxxx-db2u というようなClusterIPサービスでデータベースに接続可能なようです。

接続に成功した方法をご紹介します。

Cloud Pak for Data 内の 接続したいDb2 サービス (Db2 デプロイメント ID) を db2ucluster変数に登録します。 Db2 がデプロイされている OpenShift プロジェクトは zen です。

[user99@bastion7 ~]$ db2ucluster=db2oltp-1668582373852911
[user99@bastion7 ~]$ echo ${db2ucluster}
db2oltp-1668582373852911
[user99@bastion7 ~]$

作業するOpenShift プロジェクトをzenに切り替え 確認のため Db2uCluster カスタム・リソースをリストします。

# 実行コマンド
oc get db2ucluster $db2ucluster

# 実行結果例
[user99@bastion7 ~]$ oc project zen
Already on project "zen" on server "https://c101-e.jp-osa.containers.cloud.ibm.com:32291".
[user99@bastion7 ~]$ oc get db2ucluster $db2ucluster
NAME                       STATE   MAINTENANCESTATE   AGE
db2oltp-1668582373852911   Ready   None               7d16h
[user99@bastion7 ~]$

Cluster IPサービス 

oc get svcで ClusterIP サービスを確認すると c-${db2ucluster}-db2u (c-db2oltp-1668582373852911-db2u) でデータベースに接続可能なようです。

# 実行コマンド
oc get service -o wide c-${db2ucluster}-db2u

# 実行結果例
[user99@bastion7 ~]$ oc get service -o wide c-${db2ucluster}-db2u
NAME                              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                           AGE   SELECTOR
c-db2oltp-1668582373852911-db2u   ClusterIP   172.21.250.18   <none>        50000/TCP,50001/TCP,25000/TCP,25001/TCP,25002/TCP,25003/TCP,25004/TCP,25005/TCP   8d    app=db2oltp-1668582373852911,component=db2oltp,formation_id=db2oltp-1668582373852911,role=db,type=engine
[user99@bastion7 ~]$

ClusterIP サービスで使用するポートを取得します。 

非 SSL ポート取得 

非 SSL ポート情報はClusterIPサービス c-${db2ucluster}-db2u にdb2-serverとして登録されています。
次の結果から 非 SSL ポートは 50000になります。

# 実行コマンド
oc get svc c-${db2ucluster}-db2u -o jsonpath='{.spec.ports[?(@.name=="db2-server")].port}{"\n"}'

# 実行結果例
[user99@bastion7 ~]$ oc get svc c-${db2ucluster}-db2u -o jsonpath='{.spec.ports[?(@.name=="db2-server")].port}{"\n"}'
50000
[user99@bastion7 ~]$

SSL ポート取得 

SSL ポートも確認しておきましょう。 SSL ポート情報はDb2 NodePortサービス(c-${db2ucluster}-db2u-engn-svc)にdb2-ssl-serverとして登録されています。

# 実行コマンド
oc get svc c-${db2ucluster}-db2u -o jsonpath='{.spec.ports[?(@.name=="db2-ssl-server")].port}{"\n"}'

# 実行結果例
[user99@bastion7 ~]$ oc get svc c-${db2ucluster}-db2u -o jsonpath='{.spec.ports[?(@.name=="db2-ssl-server")].port}{"\n"}'
50001
[user99@bastion7 ~]$

Db2 Pod

Db2 Podは c-${db2ucluster}-db2u-0 ( c-db2oltp-1668505262111014-db2u-0 )となります。

[user99@bastion7 ~]$ oc get pod c-${db2ucluster}-db2u-0 -o wide
NAME                                READY   STATUS    RESTARTS   AGE     IP              NODE           NOMINATED NODE   READINESS GATES
c-db2oltp-1668582373852911-db2u-0   1/1     Running   0          2d11h   172.17.49.247   10.248.64.30   <none>           <none>
[user99@bastion7 ~]$

データベース名 : BLUDB

Db2 Pod に入ってDb2 インスタンスユーザー db2inst1に切り替えデータベース名を確認します。
データベース名は BLUDBです。

[user99@bastion7 ~]$ oc exec -it c-${db2ucluster}-db2u-0 -- bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2oltp-1668582373852911-db2u-0 /]$ su - db2inst1
Last login: Wed Nov 23 23:28:40 UTC 2022
[db2inst1@c-db2oltp-1668582373852911-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            =
 Alternate server port number         =

[db2inst1@c-db2oltp-1668582373852911-db2u-0 - Db2U db2inst1]$

接続情報のまとめ

接続情報取得のためのリソース情報

Db2サービスリソース情報
OpenShift プロジェクト zen
Db2uCluster カスタム・リソース ${db2ucluster}
Db2 Pod c-${db2ucluster}-db2u-0
Db2 インスタンスユーザー db2inst1
Db2 ClusterIPサービス  c-${db2ucluster}-db2u

取得した接続情報

接続情報  
host_name_or_IP_address c-${db2ucluster}-db2u ClusterIP サービス
Database_name BLUDB Db2 データベース
db2-server 50000 Db2 インスタンスのポート番号
db2-ssl-server 50001 Db2 の Secure Sockets Layer (SSL) インスタンスのポート番号。

Db2Jccを利用して接続を確認する

ここでは Cloud Pak for Data にもう一つDb2サービスをデプロイして その中でJDBCアプリケーションを使用して接続を確認します。
Db2サービスなので JavaやIBM Data Server Driver for JDBC and SQLJが導入されています。
Db2データベースへの接続テストができるDb2Jccを利用して接続を確認します。

今回 Db2 Clientとして使用する Db2のPod c-db2oltp-1668505262111014-db2u-0 に入ります。

[user99@bastion7 ~]$ oc exec -it c-db2oltp-1668505262111014-db2u-0 -- bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2oltp-1668505262111014-db2u-0 /]$ 

PATH, CLASSPATHを設定します。

DB2JDBCPATH=/mnt/bludata0/home/db2inst1/sqllib/java
export PATH=${PATH}:.:${DB2JDBCPATH}/jdk64/bin
export CLASSPATH=${DB2JDBCPATH}/db2java.zip:${DB2JDBCPATH}/sqlj.zip:${DB2JDBCPATH}/db2jcc_license_cu.jar:${DB2JDBCPATH}/db2jcc4.jar:.

非 SSL ポート50000を使用して接続する場合 接続文字列は jdbc:db2://c-${db2ucluster}-db2u:50000/BLUDBとなります。
Db2Jccを実行します。

# 実行コマンド
db2ucluster=db2oltp-1668582373852911
java com.ibm.db2.jcc.DB2Jcc \
-url "jdbc:db2://c-${db2ucluster}-db2u:50000/BLUDB" \
-user user02 -password xxxxx \
-version

# 実行結果
[db2uadm@c-db2oltp-1668505262111014-db2u-0 ~]$ java com.ibm.db2.jcc.DB2Jcc \
> -url "jdbc:db2://c-${db2ucluster}-db2u:50000/BLUDB" \
> -user user02 -password xxxxx \
> -version


[jcc][10521][13706]Command : java com.ibm.db2.jcc.DB2Jcc -url jdbc:db2://c-db2oltp-1668582373852911-db2u:50000/BLUDB -user user02 -password ******** -version


IBM Data Server Driver for JDBC and SQLJ 4.31.10
[jcc][10516][13709]Test Connection Successful.

DB product version = SQL110570
DB product name = DB2/LINUXX8664
DB URL = jdbc:db2://172.21.250.18:50000/BLUDB
DB Drivername = IBM Data Server Driver for JDBC and SQLJ
DB OS Name = Linux
[db2uadm@c-db2oltp-1668505262111014-db2u-0 ~]$

接続できました。

おわりに

ここでは コマンドでDbのClusterIP サービスを使用するための接続情報を入手し、Db2データベースへの接続テストができるDb2Jccを利用して接続を確認しました。

Db2 on Cloud Pak for Data のドキュメントで ClusterIP サービスに関する記述はみつけていません。 

実施環境

  • IBM Cloud VPC Gen2
  • OCP 4.10.32
  • CP4D 4.5.3
    • Db2 Version 11.5.7.0-cn7

参照文献

1
0
0

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
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?