为 OpenPages 设置外部数据库
在 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®
ping和db2 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 软件兼容性报告。
- 有关 Db2 的支持版本,请参见支持环境页面上的
- OpenPages 应用程序需要具有 DBADM 和 SECADM 特权的用户进行初始部署和升级。
- 为模式所有者创建名为
的操作系统用户。 名称必须为openpage
,且此名称不能更改。openpage - 您需要访问 IBM® Entitled Registry 或包含 OpenPages 包的专用容器注册表。
- 必须先完成外部数据库设置,然后才能供应 OpenPages 实例。
- 如果要将系留项目用于 OpenPages,那么必须先创建系留项目,然后再供应任何 OpenPages 实例。
- 完成此任务后,外部数据库将启用 TCPIP 和 SSL 通信,因为应用程序运行时使用的是 SSL。
- 缺省情况下,归档日志记录未启用。 有关如何设置存档日志的说明,请参阅 Db2 文档: 配置数据库日志记录选项。
过程
完成以下任务以设置外部数据库:
- 准备数据库
- 配置数据库设置脚本的参数
- 运行数据库设置脚本
- 从数据库服务器中检索证书
- 设置保险库以存储数据库凭证
- 在 OpenShift 中创建引用数据库私钥的私钥
- 如果要将系留项目用于 OpenPages,请设置该系留项目。 请参阅 设置系留项目。
准备数据库
- 下载外部数据库设置文件并将其传输到数据库服务器。
例如,您可以使用以下命令从 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.env:setup-extdb.sh 脚本的环境文件
- create-opx-db-srv.sh: 用于创建数据库的脚本。
- OPX.0.db2inst1.DBPART000.<date_time_stamp>.001: 要复原的 OpenPages 数据库的备份
- 创建数据库实例。例如
/opt/ibm/db2/V11.5/instance/db2icrt -a server -u db2fenc1 db2inst1其中,
db2inst1是数据库实例所有者,db2fenc1是数据库防护用户。 - 决定如何设置密钥库。 选择以下某个选项:
- 手动创建新的密钥库和 SSL 证书。
- 找到现有密钥库和 SSL 证书。
- 使用 setup-extdb.sh 来创建密钥库和 SSL 证书。
- 可以使用密钥库中的主密钥对 Db2 数据库进行加密。 决定要使用下列哪些选项:
- 使用现有主密钥。
- 手动创建主密钥。
- 使用 setup-extdb.sh 来创建主密钥。
- 请勿使用 Db2 加密。
- 创建名为
openpage的操作系统用户。 此用户是在运行数据库设置脚本时复原的数据库中的模式所有者。 您无法更改此用户的名称。useradd openpage
配置数据库设置脚本的参数
修改 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# 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# 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 文件上的时间戳记。
运行数据库设置脚本
- 验证以下需求:
- 存在数据库实例。
- setup-extdb.env 文件和 create-opx-db-srv.sh 脚本是否位于同一目录中。
- setup-extdb.env 中的参数是否与您的环境匹配。
- 运行 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的主密钥对数据库进行加密。 密钥库和主密钥必须已经存在。问题: 如果安装发生问题,请执行以下步骤:- 终止与数据库的所有连接并删除数据库。例如
db2 terminate && db2 drop database <database_name> - 再次运行 setup-extdb.sh 脚本。
从数据库服务器中检索证书
如果要使用您自己的证书,请从数据库服务器中获取该证书。 创建数据库密钥时需要证书。
-k 参数,请跳过此任务。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 中提供的保险库文件,也可以使用外部保险库文件。 有关保险库文件的更多信息,请参阅 管理私钥和保险库文件。
db2inst1) 用户名和密码,另一个用于数据库用户 openpage 用户名和密码。- DBA 和数据库用户私钥必须由同一 IBM Cloud Pak for Data 用户创建。
- DBA 和数据库用户凭证必须存储在同一保险库文件中的单独私钥中。
- 每个私钥必须是保险库文件中的
username and password
类型。 - 这些私钥必须由供应 OpenPages 实例的用户拥有,或者与 OpenPages 实例的所有者共享。
- OpenPages 不支持将 SSL 证书存储在保险库文件中。
- 如果要使用外部保险库文件,请设置保险库文件。 有关更多信息,请参阅 向外部保险库文件添加集成。
在保险库文件中,添加两个私钥: 一个用于 DBA 用户凭证,另一个用于数据库用户凭证。 记下私钥详细信息。 例如,如果您使用 HashiCorp, ,请注意秘密名称和路径。
- 在 IBM Cloud Pak for Data中,设置对 DBA 用户私钥和数据库用户私钥的引用。
- 如果您正在使用外部保险库文件,请参阅 在外部保险库文件中添加对私钥的引用
- 如果您正在使用 IBM Cloud Pak for Data 保险库文件,请参阅 向内部保险库文件添加私钥
对于每个私钥,请使用以下设置:- 对于信息类型,选择 用户名和密码。
- 输入数据库凭证。
- 如果将供应 OpenPages 的用户与创建私钥的用户不同,请与供应 OpenPages 实例的用户共享私钥。
- 在 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
| 参数 | 描述 |
|---|---|
name |
OpenShift 私钥的名称,例如 openpages-external-db-info |
namespace |
请使用以下值之一:
|
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-infoDBA 和数据库用户凭证可供使用。
供应 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 的项目绑定。
要设置系留项目:
- 运行
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以获取详细信息。 - 运行以下命令以将
${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 结合使用中的步骤。