了解部署体系结构选项

最初预配时,Oracle Content Management 的所有实例都部署在 Oracle Cloud Infrastructure 上。此体系结构是跨单个地理区域内多个可用性域的高可用性拓扑。在这些可用性域中,它将适用于 Kubernetes 的 Oracle Container Engine for Kubernetes (OKE) 与其可弹性扩展的 Kubernetes 集群结合使用。

  • 可用性域 — 可用性域是一个区域中的一个或多个数据中心。可用性域相互隔离,具有容错功能,不太可能同时出现故障。因为可用性域不共享物理基础结构(例如电源或冷却设备)或者内部可用性域网络,所以影响一个可用性域的故障不太可能会影响其他可用性域。一个区域中的可用性域通过低延迟、高带宽网络相互连接。这种可用性域之间的可预测加密互连为高可用性和灾难恢复提供构建块。
  • 容错域 — 容错域是可用性域内的一组硬件和基础设施。每个可用性域都包含三个容错域。通过容错域,您可以将多个实例分布到单个可用性域内的不同物理硬件上。这样,影响一个容错域的硬件故障或维护事件不会影响其他容错域中的实例。您可以选择在启动时为新实例指定容错域,也可以让系统为您选择一个容错域。

在默认部署中,OKE 跨多个可用性域自动创建多个集群(或节点)。所有站点和资产会与每个可用性域进行同步。如果一个可用性域停止运行,OKE 会自动将所有传入流量引导至运行正常的可用性域。采用这种方式,当出现故障的可用性域还原时,最终用户也不会注意到服务停机。
高可用性体系结构示例

我们建议您使用我们的升级计划选项来控制您的实例何时接收新发行版的 Oracle Content Management。在大多数情况下,为生产流量提供服务的实例以及在发生故障时可为流量提供服务的任何实例应使用延迟升级选项。用于开发和测试的实例应使用立即升级选项。此设置组合将为您提供完整的发行周期以确保您的代码强健,并让您有时间解决任何问题以免其可能影响生产流量。“升级计划”选项是在创建 Oracle Content Management 实例时设置的。

除高可用性外的其他功能

虽然高可用性服务的设计是为了提供更高的正常运行时间和可访问性,但许多客户还会有一些其他需求,我们可以使用不同的体系结构来满足这些需求。这些体系结构一方面仍具有 Oracle Cloud Infrastructure 和 OKE 提供的现成高可用性优势,另一方面,我们还可以构建它们来支持开发流程(甚至是多区域故障转移),或者利用专用的高性能连接进一步增强其优势。要找到满足您需求的体系结构,您需要确定您的组织的开发流程需求,您可接受的恢复时间目标 (recovery time objectives, RTO) 和恢复点目标 (recovery point objectives, RPO)。

  • 恢复时间目标 (RTO)— RTO 是在发生灾难后恢复您的应用程序功能所需的目标时间。该目标可衡量灾难恢复速度。通常,应用程序越重要,RTO 越低。
  • 恢复点目标 (RPO)— RPO 是应用程序可接受的数据丢失时间范围。RPO 是指在发生灾难的情况下应用程序可以承受的数据丢失量。

使用 Oracle Cloud Infrastructure FastConnect 的专用实例

某些客户可能还需要公共 Internet 无法提供的更高性能或安全性。Oracle Cloud Infrastructure FastConnect 可用于为您的 Oracle Content Management 实例提供更高性能、稳健且安全的连接。通常,具有以下需求的客户使用这种类型的连接:确保只有内部网络才能访问,或者确保最终用户的连接尽可能最佳最可靠。

如果您要创建此类实例,需要设置 Oracle Cloud Infrastructure FastConnect 并执行一些额外的先决条件步骤。FastConnect 提供了一种专用连接。与基于 Internet 的连接相比,这种连接能提供更高的带宽以及更可靠、更一致的网络体验。

请参见使用 Oracle Cloud Infrastructure FastConnect 创建专用实例

开发流程

这是指您的组织用来为 Oracle Content Management 构建和部署新功能和内容的流程。开发流程可以包括新功能和内容在获批进入更高级别环境和生产环境前必须经历的多个环境。常见设置包括开发环境、测试环境、存放环境和最终的生产环境。您的组织的需求可能会有所变化。

如果客户希望使用多个实例来支持自己的开发流程,那么他们应该按本文档中的说明预配其他实例,但无需在实例前预配 Web 应用程序防火墙 (Web application firewall, WAF),因为他们将直接访问这些实例。在其中一个实例中开发内容后,您可以使用 OCE 工具包的命令行界面 (command-line interface, CLI) 在 Oracle Content Management 实例之间传播该内容。

注:

在创建不会为生产流量提供服务的其他实例时,必须将其标记为非主,以免为复制的资产付费。主实例按实例中的资产总数收费。对于非主实例,每月按单个资产块收费(例如,5,000 个资产;如果有增强视频,则为 250 个增强视频资产),不考虑复制的资产总数。有关详细信息,请参见《Oracle PaaS and IaaS Universal Credits Service Descriptions》

要传播更改,可以使用 OCE 工具包命令在开发、测试和生产实例上创建站点并管理其生命周期。可以在开发环境中更改站点并将这些更改传播到测试环境和生产环境。您也可以将这组命令行实用程序并入您的脚本环境以管理部署。使用 CLI 实用程序,您可以部署新项(例如资产和组件)以及更新现有内容。

请参见设置从测试到生产 (Test to Production, T2P) 部署

实施备份区域

如果您的组织要在发生故障时使用备份区域继续传送公共站点内容,请配置 Web 应用程序防火墙 (Web Application Firewall, WAF) 并将内容复制到备份。

您的备份可以与主要实例位于同一个地理区域,也可以位于不同的区域。在不同的区域创建备份可提供更多保护,以防止数据丢失或可用性受损。

注:

Oracle Content Management 当前仅支持通过 WAF 的公共网站。如果您的站点要求身份验证,则必须直接从源域访问该站点。

下面是体系结构的外观示例:

WAF 设置示例

创建备份可能需要较长时间,特别是在您具有许多站点和资产的情况下,因此建议您在非工作时间执行备份。根据实例中的内容更改量,您应该确定备份应该每日执行一次还是降低频率一周执行一次。

实施备份区域时,可以使用 Oracle Cloud Infrastructure Web Application Firewall 服务将流量引导至主(活动)实例,并在发生故障时将其切换至备份(备用)实例。

注:

创建备份实例时,您必须将其标记为非主实例,这样您就无需为重复的资产付费。主实例和非主实例按不同的费率计费

创建主实例后,请执行以下步骤来实施备份区域:

  1. 创建新的 Oracle Content Management 实例。

    预配此实例(仅在主区域发生故障时才为生产流量提供服务)时,务必将其标记为非主实例,以免针对此实例中的所有资产双重计费。此外,由于此实例可能会变为生产实例,因此通常应将其设置为延迟升级,但是它必须与主区域采用相同的升级计划,以免在主区域和备份区域之间切换流量时出现问题。

    如果要使备份实例与主实例位于不同的区域,请在辅助区域中创建实例

  2. 使用 Oracle Cloud Infrastructure Web Application Firewall 服务配置 Web 应用程序防火墙 (WAF)
  3. 使用 OCE 工具包将所有站点和资产从主实例传输到备份实例:
    1. 将主实例上存在的资料档案库、通道和本地化策略复制到备份实例上。
    2. 如果尚未安装 OCE 工具包,则创建 VM 计算实例
    3. 在 VM 计算实例上安装 OCE 工具包并使其使用 IDCS 验证。
    4. 注册 Oracle Content Management 主实例和备份实例。
    5. 传输站点及其资产(从主实例到备份实例)。
  4. 测试您的数据能否正确复制。在主实例中进行一些更改(少于五处,包括对每个对象类型的更改),接着使用 OCE 工具包再次备份您的数据,然后确认这些更改已正确反映在备份实例中。
  5. 对主实例不可用时可能需要访问备份实例用户界面的用户进行同步。例如,您至少需要同步您的管理员。

    注:

    备份实例只是为了在发生故障时进行测试或继续提供公共站点内容,而不是为了继续提供内容或访问要求身份验证的站点。
  6. 测试在主区域出现故障时您的系统行为是否符合预期:
    1. 禁用主实例。
    2. 通过更新 WAF 策略切换 WAF 源,以便使流程指向备份实例。
    3. 传播了 WAF 策略变更时,请确认备份实例上的所有用户体验均符合预期。
  7. 重新启用主实例,更新 WAF 策略以使其再次指向主实例,然后确认主实例在接管原来的内容管理和最终用户提交职责后的行为符合预期。

配置 Web 应用程序防火墙

配置和启用 Web 应用程序防火墙 (WAF) 以实施备份区域的过程涉及多个步骤:

  1. 创建 WAF 策略
  2. 上载 SSL 证书和密钥
  3. 创建辅助源
  4. 发布更改
  5. 更新 DNS 配置
  6. 在实例上配置 WAF

如果需要从主实例切换到辅助实例,您可以通过更新 WAF 策略来实现。

创建 WAF 策略

要配置 WAF 策略,请执行以下步骤:

  1. 以 Cloud 账户管理员身份登录 Oracle Cloud。您可以在欢迎电子邮件中找到您的账户名和登录信息。
  2. 在 Infrastructure 控制台中,单击左上角的 导航菜单图标以打开导航菜单,再单击身份和安全性,然后单击 Web 应用程序防火墙下的策略
  3. 选择要在其中创建 WAF 策略的区间。
  4. 单击创建 WAF 策略
  5. 请输入以下详细信息以创建 WAF 策略:
    • 名称:为策略提供一个唯一名称(例如 cross_site_WAF)。请避免输入机密信息。
    • 主域:输入应用程序的全限定域名(例如 oce.example.com)。这是用户用于访问应用程序的 URL,该 URL 随即将指向 Oracle Content Management 主实例或辅助实例。
    • 其他域:(可选)输入应该在其中应用策略的任何子域。
    • 源名称:为该主源提供一个唯一名称(例如 primary_salesdocuments1)。
    • URI:输入主实例面向公众的端点 (URI)(例如 salesdocuments1-myaccount.cec.ocp.oraclecloud.com)。
  6. 单击创建 WAF 策略

上载 SSL 证书和密钥

要上载 SSL 证书和密钥,请执行以下步骤:

  1. 查看创建的 WAF 策略,然后单击左侧的设置
  2. 常规设置选项卡上,单击编辑
  3. 在“编辑设置”对话框中:
    1. 选择启用 HTTPS 支持,以便浏览器和 Web 应用程序之间的通信处于加密状态。
    2. 选择上载或粘贴证书和私有密钥
    3. 上载证书源中,拖放或选择文件,或者选择文本并粘贴 PEM 格式的有效 SSL 证书。您还必须包括中间证书(主域证书必须排在首位)。
    4. 上载私有密钥源下,拖放或选择文件,或者选择文本并在此字段中粘贴 PEM 格式的有效私有密钥。私有密钥无法由密码保护。
    5. 如果您使用自签名证书,请选择自签名证书以在浏览器中显示 SSL 警告。
    6. 如果要自动将所有 HTTP 流量重定向到 HTTPS,请选择 HTTP 重定向到 HTTPS
    7. 单击保存更改。此更新将显示在“未发布的更改”下。

创建辅助源

要创建辅助源,请执行以下步骤:

  1. 单击源组选项卡。
  2. 源组选项卡上,单击编辑
  3. 单击其他源
  4. 输入以下详细信息:
    • 名称:为辅助源提供一个唯一名称(例如 secondary_salesdocuments1)。
    • URI:输入辅助实例面向公众的端点 (URI)(例如 salesdocuments2-myaccount.cec.ocp.oraclecloud.com)。
    • HTTP 端口:输入辅助实例监听的 HTTP 端口。默认端口为 80。
    • HTTPS 端口:输入用于保护与辅助实例的 HTTP 连接的端口。默认端口为 443。
  5. 单击保存更改以创建辅助源。此更新将显示在“未发布的更改”下。

发布更改

要发布您进行的更改,请执行以下步骤:

  1. 单击左侧的未发布的更改
  2. 单击全部发布
  3. 在“发布更改”对话框中,单击全部发布

    完成更新可能需要一些时间。

更新 DNS 配置

将所在区域的 CNAME 更新到 DNS 配置中,以将来自 Internet 客户端的请求路由到 WAF。可以通过打开您创建的 WAF 策略来查找 CNAME。CNAME 值是在 OCI 域内用连字符连起来的主域版本(例如 oce-example-com.o.waas.oci.oraclecloud.net)。

如果使用子域 cec.ocp.oraclecloud.com,则需要提交支持请求,以要求 Oracle 技术支持执行 DNS 更新。

在实例上配置 WAF

要在实例上配置 WAF,请执行以下步骤:

  1. 在 Infrastructure 控制台中,单击左上角的 导航菜单图标 以打开导航菜单,然后依次单击开发人员服务内容管理
  2. 单击主实例可查看实例详细信息。
  3. 单击配置 WAF
  4. 在“配置 Web 应用程序防火墙”对话框中,选择先前创建的 WAF 策略。

    此时将显示该实例的区间名称。如果 WAF 策略位于不同的区间,请单击更改区间,然后选择正确的区间。

  5. 单击保存更改

    实例更新时,您将在“活动”列表中看到其进度。更新完成后,查看实例详细信息,您将看到其中列出了 WAF 主域

  6. 对辅助实例重复步骤 2 至 5。

切换 WAF 源

如果需要将 WAF 源从主实例更改为辅助实例(反之亦然)以用于测试或备份目的,您可以通过更新 WAF 策略来实现。

Oracle Content Management

要切换 WAF 源,请执行以下步骤:

  1. 以 Cloud 账户管理员身份登录 Oracle Cloud。您可以在欢迎电子邮件中找到您的账户名和登录信息。
  2. 在 Infrastructure 控制台中,单击左上角的 导航菜单图标以打开导航菜单,再单击身份和安全性,然后单击 Web 应用程序防火墙下的策略
  3. 打开为实例创建的 WAF 策略,然后单击左侧的设置
  4. 单击源组选项卡,然后单击编辑
  5. 将要切换到的源设置为默认源,然后单击保存更改。此更新将显示在“未发布的更改”下。
  6. 单击左侧的未发布的更改
  7. 单击全部发布
  8. 在“发布更改”对话框中,单击全部发布

    完成更新可能需要一些时间。完成时,传入应用程序的流量将被引导至选定的源。

请记住:通过 WAF 重定向意味着仅适用于测试或在发生故障时公共站点的连续传送。用户必须访问经验证的站点或直接访问 Oracle Content Management 用户界面。

设置从测试到生产 (Test to Production, T2P) 部署

此模型对于以下两个方面至关重要:提供高效运行高可用性环境所需的检查和平衡;在应用程序从测试依次转到暂存和生产时,无缝对其进行管理。

在此部署中,将创建专用实例以使开发、测试和生产分开。

  1. 创建三个 Oracle Content Management 实例,其设置如下:
    • 开发 — 实例类型:非主实例;升级计划:立即升级
    • 测试 — 实例类型:非主实例;升级计划:立即升级
    • 生产 — 实例类型:主实例;升级计划:延迟升级

    通过将开发和测试实例设置为非主实例,可确保不会对这些实例中的所有资产双重计费。

    通过将开发和测试实例设置为立即升级(一旦推出新发行版的 Oracle Content Management 就升级),您可以针对这些实例测试升级,从而确保升级不会干扰任何已部署的站点。如果您发现任何问题,可以将其报告给 Oracle 技术支持,以便在一个发行版后向生产实例应用延迟升级之前能够解决这些问题。

  2. 开发实例上创建资料档案库、通道、本地化策略、站点和资产。
  3. 将这些资料档案库、通道和本地化策略复制到测试生产实例上。
  4. 如果尚未安装 OCE 工具包,则创建 VM 计算实例
  5. 在 VM 计算实例上安装 OCE 工具包并使其使用 IDCS 验证。
  6. 注册 Oracle Content Management 源实例和目标实例。
  7. 传输站点及其资产(从源实例到目标实例)。
  8. 测试您的数据是否正确复制。在源实例中进行一些更改(少于五处,包括对每个对象类型的更改),然后确认这些更改是否正确反映在备份实例中。
  9. 同步任何可能需要访问辅助实例的用户。例如,至少需要同步您的管理员和开发人员。

有关 OCE 工具包的更多信息,请参见Building Sites with Oracle Content Management中的“使用 OCE 工具包将更改从测试环境传播到生产环境”。

在 VM 计算实例上安装 OCE 工具包

要创建从测试到生产 (Test to Production, T2P) 部署,需要在 VM 计算实例上安装 OCE 工具包,并使其使用 IDCS 验证。

在 VM 计算实例上执行以下步骤:

  1. 以 OPC 用户身份登录。
  2. 设置 NodeJS:
    1. 以 root 身份安装 NodeJS:
      sudo -s
      cd /usr/local
      wget https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz
      tar xf node-v12.16.2-linux-x64.tar.xz
      exit
    2. 以 opc 用户身份将 NodeJS 添加到 PATH,并重新加载概要信息:
      vi ~/.bash_profile
      --- add :/usr/local/node-v12.16.2-linux-x64/bin to the PATH -- e.g:
      PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/node-v12.16.2-linux-x64/bin
      source ~/.bash_profile
    3. 测试 NPM 和 NodeJS:
      [opc@ocivm2pm ~]$ npm --version
      6.14.4
      [opc@ocivm2pm ~]$ node --version
      v12.16.2
  3. 设置 OCE 工具包:
    1. OCE 工具包支持通过 IDCS 应用程序建立连接,这样就无需弹出 Chromium 进行验证。将该标记设置为跳过此下载:
      export PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
    2. 以 opc 用户身份安装工具包:
      wget https://github.com/oracle/content-and-experience-toolkit/archive/master.zip
      unzip master.zip
      rm master.zip
      cd content-and-experience-toolkit-master/sites/
      npm install
    3. 对该安装进行测试:
      [opc@ocivm2pm sites]$ ./node_modules/.bin/cec --version
      20.4.1
    4. 以 root 身份添加指向 cec 二进制文件的软链接:
      sudo -s
      ln -s /home/opc/content-and-experience-toolkit-master/sites/node_modules/.bin/cec /usr/local/bin/cec
      exit
    5. 测试您能否以 opc 用户身份从任何位置运行 cec:
      cd
      [opc@ocivm2pm ~]$ cec --version
      20.4.1
    6. 设置 cec 源文件夹,然后在该文件夹中安装 cec。这将创建一个包含 package.json 的源树,并执行 npm 安装以将相关项提取到源树中。
      cd
      mkdir cec
      cd cec
      cec install
  4. 按照 IDCS 应用程序页上的说明配置 IDCS 并注册您的实例。

注册源服务器和目标服务器

使用以下命令注册源实例和目标实例的连接详细信息。例如,如果您要同步从测试到生产部署的内容,您可能会有开发 (DEV)、暂存 (TEST) 和生产 (PROD) 实例。

cec register-server DEV -e http://server:port -u username -p password
cec register-server TEST -e http://server:port -u username -p password
cec register-server PROD -e http://server:port -u username -p password
  • 第一个值(例如 DEVTESTPROD)是用于标识实例端点的服务器名称。此值可以是您选择的任何名称。
  • -e 值是服务器和端口,它们构成用于访问实例的 URL。
  • -u 值是用户名。此用户必须是能够访问源实例上的站点和资产的用户,或者将拥有目标实例上的站点和资产的用户。
  • -p 值是用户的密码。

注:

您可以传入 --keyfile 以对该文件中保存的密码进行加密。

传输企业站点

可使用以下命令传输企业站点:

cec transfer-site SiteName -s DEV -d TEST -r RepositoryName -l LocalizationPolicyName
  • 第一个值 (SiteName) 是要传输的站点的名称。
  • -s 值是在上一步中注册的源实例名称。
  • -d 值是在上一步中注册的目标实例名称。
  • -r 值是要向其传输站点的目标实例中的资料档案库。仅在将新企业站点传输到目标实例时,才需要此项。
  • -l 值是目标实例中要应用于已传输站点的本地化策略。仅在将新企业站点传输到目标实例时,才需要此项。

如果要更新目标实例上的站点,不需要包括资料档案库和本地化策略。

有关详细信息,请参见Building Sites with Oracle Content Management中的“使用 OCE 工具包将更改从测试环境传播到生产环境”。