OpenPages 设置外部数据库

重要信息: IBM Cloud Pak® for Data 4.7 版本将于 2025 年 7 月 31 日结束支持 (EOS)。 欲了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告

IBM Cloud Pak for Data 4.7 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 更多信息,请参阅 IBM Software Hub 版本 5.1 文档中的升级 IBM Software Hub。

您可以使用 IBM Cloud Pak for Data外部的 Db2® 数据库。

准备工作

开始之前,请确保数据库服务器满足以下需求:
  • 外部数据库服务器时区必须使用全球标准时区。
  • 外部数据库服务器在地理位置上尽可能靠近 IBM Cloud Pak for Data 环境。

    为了获得最佳 UI 性能,请确保数据库服务器与应用程序服务器之间的 ping 时间间隔 (由 Linux® pingdb2 ping 实用程序度量) 在 1 毫秒以下。

  • 在外部数据库服务器上安装 Db2 。 您的服务器必须满足 OpenPages®的系统需求:
    • 有关 Db2 的支持版本,请参见支持环境页面上的 OpenPages 版本 9.0
      注: 如果您正在使用 11.5.8,请先安装 Special Build 29133 ,然后再供应 OpenPages
    • 仅支持 Linux 上的 Db2
    • 对于 9.000.0 (4.7.3) , OpenPages 应用程序映像所使用的 Db2 客户机版本固定为 11.5.8。
    • 有关数据库服务器资源要求和网络性能的更多信息,请参阅 OpenPages 软件兼容性报告

    更多信息,请参阅 OpenPages for IBM Cloud Pak for Data 支持的环境

  • OpenPages 应用程序需要具有 DBADM 和 SECADM 特权的用户进行初始部署和升级。
  • 为模式所有者创建名为 openpage 的操作系统用户。 名称必须为 openpage,且此名称不能更改。
  • 您需要访问 IBM® Entitled Registry 或包含 OpenPages 包的专用容器注册表。
查看以下重要说明:
  • 必须先完成外部数据库设置,然后才能供应 OpenPages 实例。
  • 如果要将系留项目用于 OpenPages,那么必须先创建系留项目,然后再供应任何 OpenPages 实例。
    注: 如果在安装 OpenPages 服务后创建系留项目,那么必须在供应任何实例之前执行一些额外步骤。 请参见在安装 OpenPages 后设置系留项目
  • 完成此任务后,外部数据库将启用 TCPIP 和 SSL 通信,因为应用程序运行时使用的是 SSL。
  • 缺省情况下,归档日志记录未启用。 有关如何设置存档日志的说明,请参阅 Db2 文档: 配置数据库日志记录选项

过程

完成以下任务以设置外部数据库:

  1. 准备数据库
  2. 配置数据库设置脚本的参数
  3. 运行数据库设置脚本
  4. 从数据库服务器中检索证书
  5. 设置保险库以存储数据库凭证
  6. 在 OpenShift 中创建引用数据库私钥的私钥
  7. 如果要将系留项目用于 OpenPages,请设置该系留项目。 请参阅 设置系留项目

准备数据库

  1. 下载外部数据库设置文件并将其传输到数据库服务器。

    例如,您可以使用以下命令从 IBM Entitled Registry获取文件:

    # this command extracts the openpages database backup file from the image
    docker cp $(docker create --rm cp.icr.io/cp/cpd/openpages-cpd-provisioner:9.0.0.0.202309-102):/app-root/backup/ backup/
    # this command extracts the setup scripts from the image
    docker cp $(docker create --rm cp.icr.io/cp/cpd/openpages-cpd-provisioner:9.0.0.0.202309-102):/app-root/externaldb/ externaldb/
    注: 如果将映像镜像到本地容器注册表,那么映像名称 (cp.icr.io/cp/cpd/openpages-cpd-provisioner:9.0.0.0.202309-102) 可能不同。
    需要的文件包括:
    • setup-extdb.sh:主外部数据库安装脚本
    • setup-extdb.envsetup-extdb.sh 脚本的环境文件
    • create-opx-db-srv.sh: 用于创建数据库的脚本。
    • OPX.0.db2inst1.DBPART000.<date_time_stamp>.001: 要复原的 OpenPages 数据库的备份
  2. 创建数据库实例。
    例如
    /opt/ibm/db2/V11.5/instance/db2icrt -a server -u db2fenc1 db2inst1

    其中,db2inst1 是数据库实例所有者,db2fenc1 是数据库防护用户。

  3. 决定如何设置密钥库。 选择以下某个选项:
    • 手动创建新的密钥库和 SSL 证书。
    • 找到现有密钥库和 SSL 证书。
    • 使用 setup-extdb.sh 来创建密钥库和 SSL 证书。
  4. 可以使用密钥库中的主密钥对 Db2 数据库进行加密。 决定要使用下列哪些选项:
    • 使用现有主密钥。
    • 手动创建主密钥。
    • 使用 setup-extdb.sh 来创建主密钥。
    • 请勿使用 Db2 加密。
  5. 创建名为 openpage 的操作系统用户。 此用户是在运行数据库设置脚本时复原的数据库中的模式所有者。 您无法更改此用户的名称。
    useradd openpage

配置数据库设置脚本的参数

修改 setup-extdb.env 文件以与您的环境匹配。

注: 包含以下示例中显示的参数值,以帮助您配置 setup-extdb.env 文件。 必须使用适用于您环境的值。
必须配置以下参数:
# hostname of the db2 server
export DB2SERVERNAME=opdb
# name of the db2 database to create
export DB2DBNAME=extdb
# OS user to use for db2 database creation
export DB2USER=db2inst1
# path to create the database
export DB2DBDIR=/home/db2inst1
# path to store the database data
export DB2STORAGEDIR=/home/db2inst1
# DB2 SSL port to configure
export SSL_DB_PORT=50051
如果希望脚本设置本地密钥库并创建自签名 SSL 证书,请配置以下参数:
# the following parameters are only needed if the {keystore} option is selected
# default name for a self-signed certificate
export SSCERT=${DB2DBNAME}_selfsigned_cert
# distinguished name for the self-signed cert
export SSCERTDN="CN=${DB2SERVERNAME},O=Sample Corp,L=Anytown,C=US"
# path to directory to store db2 keys
export KEYSTORE=${DB2DBDIR}/sqllib/security/keystore
# password for the keystore
export KEY_DB_PASSWORD=<password>
# path to gskit/bin in DB2 instance for key setup
export PATH=$PATH:$DB2DBDIR/sqllib/gskit/bin
export LD_LIBRARY_PATH=/opt/ibm/db2/V11.5/lib64/gskit_db2:$LD_LIBRARY_PATH
复查以下参数。 这些参数用于将 OpenPages 数据复原到数据库中。
# path to the db2 backup to restore
export RESTOREDIR=<path>
# date of the db2 backup to restore
export RESTOREDATE=<date_time_stamp>

<path> 替换为安装文件的下载目录,例如 /home/db2inst1

<date_time_stamp> 替换为您下载的 OPX.0.db2inst1.DBPART000.<date_time_stamp>.001 文件上的时间戳记。

运行数据库设置脚本

  1. 验证以下需求:
    • 存在数据库实例。
    • setup-extdb.env 文件和 create-opx-db-srv.sh 脚本是否位于同一目录中。
    • setup-extdb.env 中的参数是否与您的环境匹配。
  2. 运行 setup-extdb.sh 脚本。

    以数据库实例所有者身份(例如 db2inst1)运行脚本。

    用法: setup-extdb.sh [OPTIONS]

    表 1. setup-extdb.sh 脚本的选项
    选项 描述
    -k 创建密钥库和自签名 SSL 证书。
    -d 安装 Db2 数据库。
    -e 对数据库进行加密; 自动创建主密钥。
    -m <label> 使用已在密钥库中配置的现有主密钥标签对数据库进行加密。
    -v 以调试方式运行。
    -h 显示脚本的帮助文本。

    如果未指定任何选项,那么脚本将执行以下操作:

    • 创建加密数据库。
    • 如果尚未配置密钥库,请创建密钥库和自签名 SSL 证书。
    • 创建主密钥以对数据库加密。
      重要信息: 备份主密钥。 如果主密钥丢失,那么数据库将丢失。
    表 2. setup-extdb.sh 用法示例
    示例 描述
    ./setup-extdb.sh 等效于 ./setup-extdb.sh -kde
    ./setup-extdb.sh -kde 创建密钥库和 SSL 证书,安装数据库,并使用自动生成的主密钥对数据库加密。
    ./setup-extdb.sh -k 创建密钥库和 SSL 证书
    ./setup-extdb.sh -de 安装数据库,并使用自动生成的主密钥对数据库加密。 密钥库必须存在。
    ./setup-extdb.sh -d -m keylabel 安装数据库并使用密钥库中存在的名为 keylabel 的主密钥对数据库进行加密。 密钥库和主密钥必须已经存在。
    问题: 如果安装发生问题,请执行以下步骤:
    1. 终止与数据库的所有连接并删除数据库。
      例如
      db2 terminate && db2 drop database <database_name>
    2. 再次运行 setup-extdb.sh 脚本。

从数据库服务器中检索证书

如果要使用您自己的证书,请从数据库服务器中获取该证书。 创建数据库密钥时需要证书。

注: 如果在运行 setup-extdb.sh时使用了 -k 参数,请跳过此任务。
例如,以下命令将检索名为 opdb_cert.pem 的证书:
openssl s_client -servername <db_server> -connect <db_server>:<db_port> </dev/null 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > opdb_cert.pem

设置保险库以存储数据库凭证

数据库凭证必须存储在保险库文件中。 您可以使用 IBM Cloud Pak for Data 中提供的保险库文件,也可以使用外部保险库文件。 有关保险库文件的更多信息,请参阅 管理私钥和保险库文件

在保险库文件中,您将创建两个私钥: 一个用于 DBA (db2inst1) 用户名和密码,另一个用于数据库用户 openpage 用户名和密码。
  • DBA 和数据库用户私钥必须由同一 IBM Cloud Pak for Data 用户创建。
  • DBA 和数据库用户凭证必须存储在同一保险库文件中的单独私钥中。
  • 每个私钥必须是保险库文件中的 username and password 类型。
  • 这些私钥必须由供应 OpenPages 实例的用户拥有,或者与 OpenPages 实例的所有者共享。
  • OpenPages 不支持将 SSL 证书存储在保险库文件中。
请执行以下步骤:
  1. 如果要使用外部保险库文件,请设置保险库文件。 有关更多信息,请参阅 向外部保险库文件添加集成

    在保险库文件中,添加两个私钥: 一个用于 DBA 用户凭证,另一个用于数据库用户凭证。 记下私钥详细信息。 例如,如果您使用 HashiCorp, ,请注意秘密名称和路径。

  2. IBM Cloud Pak for Data中,设置对 DBA 用户私钥和数据库用户私钥的引用。
    对于每个私钥,请使用以下设置:
    1. 对于信息类型,选择 用户名和密码
    2. 输入数据库凭证。
    3. 如果将供应 OpenPages 的用户与创建私钥的用户不同,请与供应 OpenPages 实例的用户共享私钥。
  3. IBM Cloud Pak for Data 中,单击管理工具 > 配置 ,单击保险库和机密选项卡,然后单击机密。 记下 DBA 用户私钥和数据库用户私钥的以下信息:
    • Name 是私钥的名称。
    • 保险库名称
    • 创建者 是私钥的所有者。

OpenShift 中创建引用数据库私钥的私钥

OpenShift®中创建私钥。 该私钥引用您的保险库文件以及在 Cloud Pak for Data中定义的数据库私钥。

如果要将系留项目用于 OpenPages,请在系留项目中创建私钥。

OpenPages 使用私钥来连接到数据库。 以下示例显示了必需的格式。 此示例创建名为 openpages-external-db-info的私钥。 此示例引用 IBM Cloud Pak for Data 保险库文件中的私钥。

kind: Secret
apiVersion: v1
metadata:
  name: openpages-external-db-info
  namespace: <openpages_namespace>
  labels:
    app.kubernetes.io/name: openpages
    app.kubernetes.io/version: "9.000.0"
    app.kubernetes.io/managed-by: ibm-openpages-cpd-operator
stringData:
  host: <db_server_url>
  sslport: "5051"
  alias: extdb
  vault: <vault_name>
  secretowner: <created_by>
  usercred: "<db_user_secret>"
  dbacred: "<dba_secret>"
  opdb-cert.pem: |-
    -----BEGIN CERTIFICATE-----
    <SSL cert>
    -----END CERTIFICATE-----
type: Opaque
表 3. 私钥的参数
参数 描述
name OpenShift 私钥的名称,例如 openpages-external-db-info
namespace 请使用以下值之一:
  • 如果要将系留项目用于 OpenPages,请使用该系留项目的名称。
  • 否则,请使用安装了 Cloud Pak for Data 的项目。
version 要安装的 OpenPages 版本。 对于 Cloud Pak for Data 4.6,请使用 9.000.0
host 外部数据库服务器的 URL。
vault 保险库文件的名称。 该名称将显示在 Cloud Pak for Data密钥 选项卡上的 保险库文件名称 列中。
secretowner 私钥的所有者。 用户名显示在 Cloud Pak for Data密钥 选项卡上的 创建者 列中。
usercred Cloud Pak for Data 中用于数据库用户凭证的私钥的名称。 私钥名称显示在 私钥 选项卡上的 名称 列中。
dbacred Cloud Pak for Data 中 DBA 用户凭证的私钥的名称。 私钥名称显示在 私钥 选项卡上的 名称 列中。
<SSL cert> 如果您正在使用自己的证书,请将其粘贴到 BEGIN CERTIFICATE之后。
保存更改,例如:
oc apply -f openpages-external-db-info

DBA 和数据库用户凭证可供使用。

供应 OpenPages时,需要提供 Kubernetes 私钥的名称。 在此示例中,名称为 openpages-external-db-info

注: 如果将来数据库连接信息发生更改,请更新保险库文件中的私钥。 私钥中的连接信息必须始终与环境的值匹配。 例如,如果 openpage 用户的密码发生更改,请更新保险库文件中的 <db_user_secret> 私钥。

验证安装

查看日志文件 setup-extdb.<date_time_stamp>.log 以了解任何错误。

通过运行以下命令,验证是否可以连接到数据库:
db2 connect to <database_name> user openpage using <password>

设置系留项目

当您安装 OpenPages ,您可以选择将 OpenPages 服务实例,该实例与安装 Cloud Pak for Data control plane 的项目绑定。

谁需要完成此任务?
要完成此任务,您必须是 实例管理员 或以下项目的管理员:
Project 用于标识项目的环境变量
安装了 Cloud Pak for Data control plane 的项目。 ${PROJECT_CPD_INST_OPERANDS}
计划在其中部署 OpenPages 服务实例的项目。 ${PROJECT_CPD_INSTANCE_TETHERED}
何时需要完成此任务?
仅当两个语句都为 true 时,才完成此任务:
  • 您希望在系留项目中部署 OpenPages 服务实例。
  • 该项目未与安装了 Cloud Pak for Data control plane 的项目绑定。

要设置系留项目:

  1. 运行 cpd-cli manage login-to-ocp 命令,以具有足够许可权的用户身份登录到集群以完成此任务。 例如:
    cpd-cli manage login-to-ocp \
    --username=${OCP_USERNAME} \
    --password=${OCP_PASSWORD} \
    --server=${OCP_URL}
    提示: login-to-ocp 命令采用与 oc login 命令相同的输入。 运行 oc login --help 以获取详细信息。
  2. 运行以下命令以将 ${PROJECT_CPD_INSTANCE_TETHERED} 项目连接到安装了 Cloud Pak for Data control plane 的项目 (${PROJECT_CPD_INST_OPERANDS})。
    提示: 在对集群运行此命令之前,可以通过运行带有 --preview=true 选项的命令来预览此命令将代表您发出的 oc 命令。

    oc 命令将保存到 work 目录中的 preview.sh 文件。

    cpd-cli manage setup-tethered-ns \
    --cpd_instance_ns=${PROJECT_CPD_INST_OPERANDS} \
    --tethered_instance_ns=${PROJECT_CPD_INSTANCE_TETHERED}

下一步操作

继续执行将外部数据库与 OpenPages 结合使用中的步骤。