在 OCI 上准备 Web 层

Oracle Cloud Infrastructure (OCI) 上预配和配置辅助站点,以便与主要内部部署站点一致。

注意:

您可以找到 Terraform 代码,以创建下载代码中本部分所述的资源(OCI 负载平衡器、SSL 证书、后端集和后端、路由策略、监听程序和规则集)。

(可选)准备 Oracle HTTP Server 主机

Oracle Cloud Infrastructure 中创建和配置 Oracle HTTP Server 计算实例。

注意:

创建和配置 Oracle HTTP Server 是可选操作。只能使用 OCI 负载平衡器(不使用 Oracle HTTP Server )在 OCI 上配置 Web 层。

预配 Oracle HTTP Server 主机

Oracle Cloud Infrastructure (OCI) Web 层子网上为每个主内部部署 Oracle HTTP Server 主机创建一个计算实例。计算实例必须使用与内部部署 Oracle HTTP Server 主机使用的映像和配置最相似的 OS 映像和计算配置。

在 OCI 中运行的每个 Oracle HTTP Server 除了用于涵盖 Oracle HTTP Server 本地运行的许可证和支持合同外,还必须具有有效的许可证和支持合同。您可以使用 Oracle WebLogic Server for OCI 映像在 Oracle Cloud 上为 Oracle HTTP Server 创建计算实例。使用这些映像创建的计算实例包括运行 Oracle HTTP Server 的权利,按 OCPU/小时计费,以便在它们处于运行状态时运行 WebLogic 软件的权利。使用 Oracle WebLogic Server for OCI 创建计算实例时,您可以使用计算实例控制台市场。这些映像适用于 Oracle Linux 7.9 和 Oracle Linux 8.5 操作系统。

此示例在区间内的单个可用性域中使用两个计算实例,如下表所示。

名称 区间 可用性域 映像 形状 VCN 子网
hydrohs1 HyDRCompmt AD1 Oracle WebLogic Enterprise Edition UCM 映像 (Oracle Linux 7。9) VM.Standard2.2 水文 webTierSubnet
hydrohs2 HyDRCompmt AD1 Oracle WebLogic Enterprise Edition UCM 映像 (Oracle Linux 7。9) VM.Standard2.2 水文 webTierSubnet

执行以下操作以使用计算实例控制台预配计算实例:

  1. 登录到租户的 OCI 控制台
  2. 选择正确的区域。
  3. 单击导航菜单,选择计算。单击实例,然后单击创建实例
  4. 输入计算实例和区间的名称。
  5. 位置下,选择要创建实例的可用性域。如果 OCI 区域具有多个可用性域,则可以将 WebLogic 计算实例放置在不同的可用性域中。
  6. 映像和配置下,单击更改映像并执行以下操作:
    1. 从“映像源”下拉列表中,选择 Oracle 映像,然后从 Oracle WebLogic Server for OCI 映像列表中选择 Oracle WebLogic Server Enterprise Edition UCM 映像
    2. 对于所选图像,单击右侧的箭头,然后选择付费图像的图像构建版本。
      • Oracle Linux 7。9(标记为 release-ol7.9-build-timestamp
      • Oracle Linux 8.5(标记为 release-ol8.5-build-timestamp
    3. 查看条款和条件。选中 Oracle 使用条款复选框,然后单击选择图像
  7. 映像和配置下,单击更改配置。选择实例类型并选择与主主机最相似的配置。
    有关支持的配置列表,请参阅适用于 OCI 的 Oracle WebLogic Server 的映像
  8. 选择环境的 VCN、子网(Web 层子网)和可用性域。
    要指定容量类型和容错域,请单击显示高级选项
  9. 为实例配置网络。要指定高级网络设置,请单击显示高级选项
  10. 添加 SSH 密钥下,生成密钥,上载公共密钥或粘贴密钥。
  11. 在“Boot Volume”(引导卷)下,指定实例的引导卷的大小和加密选项。
  12. 单击显示高级选项以配置高级设置。
  13. 单击创建
  14. 重复这些步骤以创建另一个计算实例。

准备操作系统用户和组

在辅助计算实例中,主要内部部署 Oracle 软件需要使用相同的用户和组。

Oracle WebLogic Server for Oracle Cloud Infrastructure 映像已具有 oracle 用户和组。但是,这些值(用户名、组名、uidgid)可能与您主实例中的值不匹配,您需要配置辅助主机以匹配主 oracle 用户和组的值。以下示例说明如何在此层中配置辅助主机以匹配主要 oracle 用户和组的值。

OCI 计算实例中的每个组和用户必须在每个节点上具有与主节点相同的 ID。
  1. 通过使用 oracle 用户登录到内部部署主机,标识主主机中 oracle 用户的用户、组和 ID,然后使用命令 id
    [oracle@host3.myopnetwork.com ~]$ id
    uid=1001(oracle) gid=1002(oinstall) groups=1002(oinstall),1001(dba)
    
    [oracle@host3.myopnetwork.com ~]$ more /etc/passwd | grep oracle
    oracle:x:1001:1002::/home/oracle:/bin/bash

    下表显示了典型内部部署环境的示例用户和组。

    用户或组 名称 ID 说明
    用户 oracle 1001 Oracle 软件的所有者
    oinstall 1002 oracle 用户的主用户组
    dba 1001 oracle 用户的辅助组
  2. 使用 SSH 以 opc 用户身份访问您最近创建的实例,从而确定辅助主机中存在的用户、组和 ID。使用 opc 用户登录到辅助主机,然后使用 sudo 登录到 oracle 用户并运行命令 id
    [opc@hydrwls1 ~]$ sudo su - oracle
    [oracle@hydrwls1 ~]$ id
    uid=1001(oracle) gid=1001(oracle) groups=1001(oracle),1002(docker) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

    下表显示了辅助计算实例中已经存在的 oracle 用户和组。

    用户或组 名称 ID 说明
    用户 oracle 1001 Oracle 软件的所有者
    oracle 1001 oracle 用户的主用户组
    docker 1002 oracle 用户的辅助组
  3. 以下是可能的方案和解决方案:
    • 次要用户和组的名称和 ID 与主数据库中的名称和 ID 不同。

      解答:在辅助服务器中创建用户和组,就像它们存在于主服务器中一样。

    • 次要用户和组的名称相同,但与主用户 ID 不同。

      解答:更改辅助 ID 以与主 ID 匹配。

    • 次要用户和组的名称与主要用户和组的名称不同,但 ID 相同。

      解答:更改次要用户和组的名称。

    • 存在冲突:主要用户或组的某些 ID 由辅助用户或组中的其他用户或组使用。

      解答:通过更改次要用户或组中冲突的用户或组的 ID 来更正冲突,然后在次要用户或组中创建与主要用户或组匹配的用户或组。

    下表汇总了可用于解决冲突的命令:

    Action (操作) 命令(作为根运行)
    要创建新组,请执行以下操作 groupadd group_name -g group_id

    例如:

    groupadd oinstall -g 1002 groupadd dba -g 1001
    创建新用户 useradd -u user_id user_name -g principal_group -G other groups

    例如:

    useradd -u 1001 oracleuser -g oinstall -G dba
    更改用户的主要组 usermod -g new_primary_groupname user_name
    将用户添加到组 usermod -a -G secondary_groupname user_name
    更改用户的 ID

    usermod -u new_id user_name

    find / -user old_uid -exec chown -h user_name {} \;

    例如,以下项将用户 oracle 的 ID 从 1001 更改为 501:

    usermod -u 501 oracle

    find / -user 1001 -exec chown -h oracle {} \;

    更改组的 ID

    groupmod -g new_id group_name

    find / -group old_id -exec chgrp -h group_name {} \;

    例如,以下项将组 oracle 的 ID 从 1001 更改为 501:

    groupmod -g 501 oracle

    find / -user 1001 -exec chgrp -h oracle {} \;

    注意:

    Oracle 建议在辅助 OCI 计算实例中执行更改。不要修改主要 ID 中的 ID 值。

    以下是主要主机中使用的组的 ID 已经由辅助主机中的其他组使用的示例。要解决此冲突,需要执行以下操作:

    1. 次要组 docker 使用 ID 1002,该 ID 与主组 oinstall 的 ID 冲突。
      要解决冲突,请将辅助主机中组 docker 的 ID 更改为其他不冲突的 ID。例如,选择 1005 作为新 ID,并通过确认 /etc/group 文件中未显示该 ID 来验证是否未使用该 ID。
      [opc@hydrwls1 ~]$ sudo -s  
      [root@hydrwls1 ~]$ more /etc/group | grep 1005
      确认未使用 ID 时,将组的 ID 更改为新 ID。
      [opc@hydrwls1 ~]$ sudo -s 
      [root@hydrwls1 ~]$ groupmod -g 1005 docker
      [root@hydrwls1 ~]$ find / -group 1002 -exec chgrp -h docker {} \;
    2. 次要组 oracle 使用 ID 1001,该 ID 与主组 dba 的 ID 冲突。
      要解决冲突,请将辅助主机中组 oracle 的 ID 更改为其他不冲突的 ID。例如,选择 1006 作为新 ID,并通过确认 /etc/group 文件中未显示该 ID 来验证是否未使用该 ID。
      [opc@hydrwls1 ~]$ sudo -s 
      [root@hydrwls1 ~]$ more /etc/group | grep 1006
      确认未使用 ID 时,将组的 ID 更改为新 ID。
      [opc@hydrwls1 ~]$ sudo -s 
      [root@hydrwls1 ~]$ groupmod -g 1006 oracle
      [root@hydrwls1 ~]$ find / -group 1001 -exec chgrp -h oracle {} \;
    3. 在与主 ID 具有相同 ID 的辅助主机中创建 oracle 用户组 oinstalldba
      [opc@hydrwls1 ~]$ sudo -s
      [root@hydrwls1 ~]$ groupadd oinstall -g 1002
      [root@hydrwls1 ~]$ groupadd dba -g 1001
    4. 用户 oracle 在主数据库和备用数据库中有相同的名称和 ID,因此不需要进行任何更改。
      但是,您需要在辅助主机中将用户的主组更改为 oinstall
      [root@hydrwls1 ~]$ usermod -g oinstall oracle
      然后,将用户添加到组 dba
      [root@hydrwls1 ~]$ usermod -a -G dba oracle
    5. 确认辅助主机中 oracle 用户的命令 id 的输出与主组和辅助组的主组匹配。
      在主数据库中的输出:
      [oracle@host3.myopnetwork.com ~]$ id
      uid=1001(oracle) gid=1002(oinstall) groups=1002(oinstall),1001(dba)
      次要输出(次要输出可以有其他组):
      oracle@hydrwls1 ~]$ id
      uid=1001(oracle) gid=1002(oinstall) groups=1002(oinstall),1001(dba),1005(docker)
              …
    6. (建议)在这些更改后重新引导主机。
  4. (可选,但建议)启用对 oracle 用户的 SSH 访问。
    在该 DR 拓扑中很有用,因为它使 oracle 用户能够直接连接来运行用于将文件系统内容从主目录复制到辅助目录的命令。
    1. 将用于连接到计算实例的公钥复制到文本文件。稍后将在此过程中使用它。
    2. 登录到实例并向 root 用户登录 sudo
    3. 在新用户的主目录中创建 .ssh 目录。
      mkdir -p /home/oracle/.ssh
    4. 将用于连接到计算的 SSH 公共密钥复制到文件中。
      /home/oracle/.ssh/authorized_keys
    5. /home/oracle/.ssh 目录的所有者和组更改为 oracle 用户。
      chown -R oracle:oinstall /home/oracle/.ssh
    6. 使用 oracle 用户和私钥与 SSH 进行连接验证。
    7. authorized_keys 文件的权限设为 600。
      chmod 600 /home/oracle/.ssh/authorized_keys

准备操作系统要求

Oracle HTTP Server 二进制文件将从主 Oracle HTTP Server 主机复制到辅助 Oracle HTTP Server 主机。因此,无需在辅助主机中运行 runinstaller由于为 WebLogic 软件准备了 Oracle WebLogic Server for Oracle Cloud Infrastructure 映像,因此无需手动为 WebLogic 添加程序包。但是,这些 Oracle HTTP Server 主机将运行 Oracle HTTP Server 产品。确保辅助主机满足 Oracle HTTP Server 的要求。
  1. 确保您的环境满足主要主机中安装的产品的最低安装要求。请查看《 Oracle Fusion Middleware System Requirements and Specifications 》中的相应文档。
  2. 验证您的版本和 OS 所需的系统软件包。
  3. 使用 yum 安装缺少的系统软件包。

    此示例使用 Oracle HTTP Server 12.2.1.4 和 Oracle Linux 7。某些必需的程序包已安装在 Oracle Cloud Infrastructure (OCI) 中间层计算实例中。在此示例中,缺少以下项,必须使用 yum 进行安装:

    yum install compat-libcap1.x86_64
    yum install compat-libstdc++-33.x86_64
    yum install compat-libstdc++-33.i686 
    yum install gcc-c++.x86_64
    yum install libaio-devel.x86_64
    yum install libstdc++.i686    
    yum install libstdc++-devel.x86_64
    yum install dejavu-serif-fonts
    yum install numactl.x86_64
    yum install numactl-devel.x86_64
    yum install motif.x86_64
    yum install motif-devel.x86_64
    yum install redhat-lsb.x86_64
    yum install xorg-x11-utils.x86_64
    
  4. /etc/security/limits.conf 文件中配置文件和进程限制。查看内部部署 Oracle HTTP Server 主机中的限制,并在 OCI Oracle HTTP Server 计算实例中相应地设置值。

Oracle HTTP Server 准备主机名别名

将主环境中的 Oracle HTTP Server 主机使用的虚拟主机名配置为辅助 Oracle Cloud Infrastructure (OCI) Oracle HTTP Server 计算实例中的别名,但指向辅助主机的 IP 地址。

这可以通过以下两种方式实现:

  • 将主机名作为别名添加到 Oracle WebLogic Server for OCI 计算实例的 /etc/hosts 文件中。
  • 在辅助 OCI VCN 中使用专用 DNS 视图。
使用 /etc/hosts 文件
在主服务器中用作别名的虚拟主机名将添加到辅助主机的 /etc/hosts 文件中,指向辅助主机的 IP 地址。 当主要内部部署和辅助 Oracle Cloud Infrastructure (OCI) 站点中的 DNS 服务器相同时,以及主站点和辅助站点中使用分隔的 DNS 服务器时,此模式在所有方案中都有效。/etc/hosts 文件中的条目优先于 DNS 解析,因为这是 /etc/nsswitch.conf 文件的指令“hosts”中定义的开箱即用的优先级。

但是,此方法要求您手动将条目添加到所有 Oracle HTTP Server 主机:

  1. 编辑每个 Oracle HTTP Server 计算实例的 /etc/oci-hostname.conf 文件,并设置属性 PRESERVE_HOSTINFO=3 以在实例重新引导后保留 /etc/hosts 条目。
  2. 使用命令 hostname --fqdn 标识 OCI 计算实例的完整主机名。
  3. 将以下条目添加到 OCI Oracle HTTP Server 计算实例的 /etc/hosts 文件中:
    #################################
    # ALIASES for WLS DR
    #################################
    # Aliases of the Oracle HTTP Server hosts
    ohshost1_compute_instance_IP  ohshost1_fqdn  ohshost1_hostname    ALIASES_OF_WEBHOST1
    ohshost2_compute_instance_IP  ohshost2_fqdn  ohshost2_hostname    ALIASES_OF_WEBHOST2
    # The aliases for WebLogic
                                    Server are added too
    virtual_IP_for_admin          virtualIP_fqdn  virtualIP_hostname    ALIASES_OF_ADMINVHN
    apphost1_compute_instance_IP  apphost1_fqdn   apphost1_hostname     ALIASES_OF_APPHOST1
    apphost2_compute_instance_IP  apphost2_fqdn   apphost2_hostname     ALIASES_OF_APPHOST2

    注意:

    除了将 Oracle HTTP Server 主机的虚拟名称添加为别名之外,还将添加 Oracle WebLogic Server 主机的虚拟名称,指向辅助 WebLogic Server 主机的 IP。因为 Oracle HTTP Server 将使用虚拟主机名称与 WebLogic Server 主机通信。
    以下是 secondary Oracle HTTP Server 计算实例中 /etc/hosts 文件的示例:
    #################################
    # ALIASES for WLS DR - SECONDARY
    #################################
    # The aliases of the Oracle HTTP Server hosts
    100.60.10.11 hydrohs1.webTiersubnet.hydrvcn.oraclevcn.com    hydrohs1    WEBHOST1.example.com WEBHOST1
    100.60.10.12 hydrohs2.webTiersubnet.hydrvcn.oraclevcn.com    hydrohs2    WEBHOST2.example.com WEBHOST2
    # The aliases of the WLS hosts
    100.70.10.20 hydrwls-vip.midTiersubnet.hydrvcn.oraclevcn.com hydrwls-vip ADMINVHN.example.com ADMINVHN
    100.70.10.13 hydrwls1.midTiersubnet.hydrvcn.oraclevcn.com    hydrwls1    APPHOST1.example.com APPHOST1
    100.70.10.14 hydrwls2.midTiersubnet.hydrvcn.oraclevcn.com    hydrwls2    APPHOST2.example.com APPHOST2
    以下是 primary Oracle HTTP Server 主机的现有 /etc/hosts 文件的示例:
    #################################
    # ALIASES for WLS DR - PRIMARY
    #################################
    # The aliases of the Oracle HTTP Server hosts
    100.10.10.11 host1.myopnetwork.com    host1    WEBHOST1.example.com WEBHOST1
    100.10.10.12 host2.myopnetwork.com    host2    WEBHOST2.example.com WEBHOST2
    # The aliases of the WebLogic
                                    Server hosts
    10.10.10.20    host-vip1.myopnetwork.com         host-vip1       ADMINVHN.example.com   ADMINVHN
    10.10.10.13    host3.myopnetwork.com             host3           APPHOST1.example.com   APPHOST1
    10.10.10.14    host4.myopnetwork.com             host4           APPHOST2.example.com   APPHOST2
使用域名系统 (DNS)
主要 Oracle HTTP Server 主机使用的虚拟主机名将添加到辅助 Oracle HTTP Server 主机的 VCN 使用的 DNS 解析程序中,指向辅助 Oracle HTTP Server 主机的 IP 地址。 在主要内部部署和 Oracle Cloud Infrastructure (OCI) 上的辅助部署中使用单独的 DNS 服务器时,此模式有效。否则,可能会导致命名解析冲突。每个站点的服务器应使用自己的 IP 解析这些名称。
此方法的优点是可以将所有条目添加到专用 DNS 视图,而不是将其添加到所有主机的 /etc/hosts 文件中。

Oracle HTTP Server 虚拟主机名条目添加到在 OCI 中创建的专用视图的步骤 准备 OCI 中的中间层:

  1. 在 OCI 控制台中,转到辅助区域并找到专用视图:
    1. 单击网络DNS 管理专用视图
      例如,HYBRID_DR_VIRTUAL_HOSTNAMES
    2. 在专用视图中,单击您创建的区域名称以添加虚拟主机。
      在此示例中:example.com。
    3. Oracle HTTP Server 虚拟主机名添加到此区域,但使用辅助 Oracle HTTP Server 主机的 IP 进行解析。

      您只需在 OCI 控制台菜单中提供非 fqdn 名称即可添加记录。区域的 DNS 域将自动添加到记录中。

    4. 单击发布更改
  2. 通过对添加的虚拟主机名执行 pingnslookup 验证解析 SECONDARY 主机。
    它们必须使用等效的 SECONDARY IP 进行解析。

在 OCI 主机的防火墙中打开所需的端口

每个计算实例都有一个本地防火墙服务。出于安全原因,默认配置是拒绝除最低必需端口 (sshdhcp) 以外的所有端口的连接。必须打开 Oracle HTTP Server 使用的端口。
  1. 检查防火墙服务状态和规则:
    bash-4.2# firewall-cmd --state
    running
    bash-4.2# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: ens3
      sources:
      services: dhcpv6-client ssh
      ports:
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:
    此输出意味着没有打开除 22 以外的端口。
  2. 以 root 用户身份,使用 firewall-cmd 命令打开每个 Oracle HTTP Server 计算实例中 Oracle HTTP Server 用作监听端口的端口。
    例如:
    firewall-cmd --permanent --add-port=7001/tcp 
    firewall-cmd --permanent --add-port=8890/tcp 
    service firewalld reload
  3. 检查防火墙服务状态和规则:
    bash-4.2# firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: ens3
      sources:
      services: dhcpv6-client ssh
      ports: 7001/tcp 8890/tcp 8888/tcp
      protocols:
      masquerade: no
      forward-ports:
      source-ports:
      icmp-blocks:
      rich rules:

Oracle HTTP Server 创建 oracle 用户环境变量

通常在 Oracle HTTP Server 主机的 oracle 用户配置文件中具有与 Oracle HTTP Server 相关的环境变量。例如,ORACLE_HOMEJDK_HOMEPATHWEB_DOMAIN_HOME 等。
  1. 查看主 Oracle HTTP Server 主机中 oracle 用户的配置文件。
  2. 在辅助模式下,将相同的 Oracle HTTP Server 相关环境变量添加到 oracle 用户的配置文件(.bashrc.bash_profile)。

    请注意,Oracle HTTP Server 主机中 oracle 用户的 .bashrc 文件可能已包含定义的变量(MIDDLEWARE_HOMEWLS_HOME 等),但这些变量可能适用于环境的文件夹,对您无效。请确保根据您的环境文件夹相应地删除或修改它们。

从主服务器复制 Oracle HTTP Server 产品和配置

由于辅助 Oracle HTTP Server OCI 计算实例创建为主要 Oracle HTTP Server 主机(相同的 OS、用户 ID、主机名别名等),因此您可以使用 rsync 从主要 Oracle HTTP Server 节点复制二进制文件和 Oracle HTTP Server 配置。

或者,您也可以下载 Oracle HTTP Server 软件,在 OCI Oracle HTTP Server 计算实例中从零安装和配置该软件。此方法不属于本文档的范围。但是,当 Oracle HTTP Server OCI 计算实例的操作系统与主 Oracle HTTP Server 主机不同时,必须使用此方法。

Oracle HTTP Server 二进制文件和配置文件通常驻留在专用存储中。在 OCI 中,您可以使用计算实例默认拥有的块存储卷。或者,可以为每个 Oracle HTTP Server 计算(如准备 OCI 块存储卷中所述)创建一个新的块存储卷,并在 Oracle HTTP Server 计算实例中挂载每个块存储卷(如挂载 OCI 块存储卷中所述)。

此示例使用 Oracle HTTP Server 计算实例的默认块存储卷,而无需创建任何其他块存储卷。

  1. 标识主 Oracle HTTP Server 节点中的 Oracle HTTP Server 二进制文件和配置的文件夹。
    例如:
  2. 在 OCI Oracle HTTP Server 计算实例中创建相同的文件夹。必须使用在主数据库中使用的相同路径。
    1. SSH 到 OS 计算实例,sudoroot 用户。
    2. 创建文件夹并使 oracle 成为所有者。
      例如:
      bash-4.2# mkdir -p /u02/oracle/products/ohs_12214
      bash-4.2# mkdir -p /u02/oracle/config/ohsdomain_12214
      bash-4.2# chown -R oracle:oinstall /u02
    3. 针对每个 Oracle HTTP Server OCI 计算实例重复此操作。
  3. 使用 rsyncproducts 文件夹从内部部署主 WEBHOST1 复制到远程 WEBHOST1。重复该步骤以将 products 文件夹从 WEBHOST2 复制到远程 WEBHOST2。此外,对任何其他 Oracle HTTP Server 计算实例重复此步骤。

    注意:

    可使用示例脚本将 Oracle HTTP Server 产品文件夹从内部部署主 WEBHOST1 复制到远程 WEBHOST1。

    转到 Download Code(下载代码)以下载脚本。

  4. 使用 rsyncOracle HTTP Server 配置文件夹从内部部署主 WEBHOST1 复制到远程 WEBHOST1。重复该步骤以将配置文件夹从 WEBHOST2 复制到远程 WEBHOST2。此外,对任何其他 Oracle HTTP Server 计算实例重复此步骤。

    注意:

    可使用示例脚本将 Oracle HTTP Server 配置文件夹从内部部署主 WEBHOST1 复制到远程 WEBHOST1。

    转到 Download Code(下载代码)以下载脚本。

  5. 从主 Oracle HTTP Server 主机复制 /etc/oraInst.loc 文件并将其保存到辅助主机。
    此文件仅包含 oraInventory 的位置,不会随时间而更改,因此此副本为一次性操作。
  6. 如果 oraInventory 文件夹位于 products 文件夹下,则会随 Oracle HTTP Server Oracle 主目录一起复制该文件夹。如果 oraInventory 文件夹位于其他位置,请确保同时将其复制到辅助主机。

Oracle HTTP Server 配置和二进制文件不会频繁更改加班时间。在此初始复制后,可以在生命周期中重复执行相同的复制。或者,通过在两个站点中实施 Oracle HTTP Server 配置更改,可以在主站点和辅助站点中手动维护 Oracle HTTP Server 的配置。

准备 OCI 负载平衡器

在云中创建和配置 Oracle Cloud Infrastructure 负载平衡器。

注意:

您可以找到 Terraform 代码,以创建下载代码中本部分所述的资源(OCI 负载平衡器、SSL 证书、后端集和后端、路由策略、监听程序和规则集)。

预配 OCI 负载平衡器

要与主要内部部署站点保持一致,请在 Oracle Cloud Infrastructure (OCI) 上的辅助站点上预配负载平衡器作为系统的入口点。

  1. 登录到 OCI 控制台
  2. 选择正确的区域和区间。
  3. 依次导航到网络负载平衡器。单击创建负载平衡器
  4. 选择负载平衡器类型。
  5. 提供负载平衡器的名称。
    例如:hyDRlbr
  6. 选择可见性类型( publicprivate )和符合您需要的带宽。
    • 如果通过 Internet 从外部客户机访问系统,则选择公共可见性。OCI 负载平衡器将使用公共 IP。
    • 如果您的系统仅从内部客户端访问,则您可以选择专用可见性来预配仅具有专用 IP 的负载平衡器。
  7. 选择适当的 VCN 和子网。
    例如,hydrvcnwebTierSubnet
  8. 此时不要添加任何后端。
  9. 使用默认值保留默认监听程序
  10. 单击提交
保存 OCI 负载平衡器的 IP(例如 100.100.100.10)。

上载证书

上载主负载平衡器使用的证书。

  1. 在控制台中,依次单击负载平衡器证书添加证书
  2. 上载主负载平衡器使用的证书的公共 SSL 证书和私钥。上载 CA(certificate authority,证书颁发机构)证书(如果使用)。
  3. 输入证书的名称,然后单击添加证书
    新证书将显示在负载平衡器的证书列表中。
  4. 如果使用多个证书访问主系统,请重复这些步骤以上载所有证书。

创建后端集

后端集是一个逻辑实体,包含运行相同应用程序的后端服务器列表。定义后端集时,必须指定负载平衡策略和运行状况检查测试。然后,您可以添加后端服务器列表。

后端集的配置取决于您是否在 WebLogic Server 主机前使用 Oracle HTTP Server

如果您使用的是 Oracle HTTP Server ,则 Oracle Cloud Infrastructure (OCI) 负载平衡器会将请求发送到 HTTPS 服务器。为 HTTPS 服务器公开的每个端口创建后端集。例如:为 Oracle HTTP Server 监听程序创建一个后端集,该后端集提供对应用程序的访问;为 Oracle HTTP Server 监听程序创建另一个后端集,该后端集提供对每个 Oracle WebLogic Server 管理控制台的访问。

如果您未使用 Oracle HTTP Server ,则 OCI 负载平衡器将请求直接发送到 WebLogic 服务器。为每个 Oracle WebLogic Server 集群创建一个后端集,为管理服务器创建另一个后端集。

  1. 登录到 OCI 控制台
  2. 选择正确的区域和区间。
  3. 在导航菜单中,单击网络,然后单击加载平衡器
  4. 单击要向其添加后端的负载平衡器。
  5. 单击“资源”菜单下的后端集,然后单击创建后端集
  6. 在“Create Backend Set(创建后端集)”对话框中输入以下内容:
    1. 名称:指定后端集的名称。
      有效的后端集名称仅包括字母数字字符、短划线和下划线。
    2. 流量分配策略:选择加权循环
    3. 会话持久性:选择启用负载平衡器 Cookie 持久性
    4. Cookie 名称:输入用于启用会话持续性的 Cookie 的名称。
    5. 属性:选择安全
    6. 健康检查:选择 TCP 检查端口,或选择 HTTP 检查 URL 路径 (URI) 和预期答案代码。
      以下是运行状况检查的 HTTP 示例:
      • OHS_Admin_backendset:URL 路径 /console,状态代码 302
      • OHS_HTTP_backendset:
        • URL 路径 /,状态代码 200(或 404,具体取决于 Oracle HTTP Server 配置)
        • URL 路径 /app1,状态代码 200
  7. 单击创建

如果您有其他 WebLogic Server 群集,请以类似的方式为每个群集创建后端集。

以下是将 Oracle HTTPS Server 与 Oracle WebLogic Server 一起使用时后端集的示例。

组件 后端集名称 流量分配策略 会话持久性 Cookie 名称(示例) 属性:安全 健康检查
管理服务器 OHS_Admin_backendset 加权循环 启用负载平衡器 Cookie 持久性 X-Oracle-LBR-ADMIN-Backendset 未选中 TCP 或 HTTP
WebLogic 集群 OHS_HTTP_backendset 加权循环 启用负载平衡器 Cookie 持久性 X-Oracle-LBR-OHS-HTTP-Backendset 选中 TCP 或 HTTP

以下是不使用 Oracle HTTP Server 时的后端集示例。

组件 后端集名称 流量分配策略 会话持久性 Cookie 名称(示例) 属性:安全 健康检查
管理服务器 Admin_backendset 加权循环 启用负载平衡器 Cookie 持久性 X-Oracle-LBR-ADMIN-Backendset 未选中 TCP 或 HTTP
WebLogic 集群 1 WLS_Cluster1_backendset 加权循环 启用负载平衡器 Cookie 持久性 X-Oracle-LBR-WLSCluster1-Backendset 选中 TCP 或 HTTP
WebLogic 集群 2 WLS_Cluster2_backendset 加权循环 启用负载平衡器 Cookie 持久性 X-Oracle-LBR-WLSCluster2-Backendset 选中 TCP 或 HTTP

如果有其他 WebLogic 集群,请以类似的方式为每个集群创建后端集。

为每个后端集定义后端

Oracle Cloud Infrastructure (OCI) 负载平衡器中的每个后端集定义后端。

如果使用的是 Oracle HTTP Server ,则在每个后端集中添加 Oracle HTTP Server 节点和相应的端口作为后端。

如果未使用 Oracle HTTP Server ,请在每个后端集中添加 Oracle WebLogic Server 节点和相应的端口作为后端。

  1. 在控制台中,选择后端集。单击后端,然后单击添加后端
  2. 输入作为后端的服务器的 IP 地址和端口。
此表显示了使用 Oracle HTTP Server 时在本文档示例中创建的后端集:
后端集名称 后端
OHS_Admin_backendset 计算实例:
  • hydrohs1,控制台监听程序的 Oracle HTTP Server 端口(例如 7001)
  • hydrohs2,控制台监听程序的 Oracle HTTP Server 端口(例如 7001)
OHS_HTTP_backendset 计算实例:
  • hydrohs1,HTTP 监听程序的 Oracle HTTP Server 端口(例如 8890)
  • hydrohs2,HTTP 监听程序的 Oracle HTTP Server 端口(例如 8890)

此表显示了未使用 Oracle HTTP Server 时在本文档示例中创建的后端集:

后端集名称 后端
Admin_backendset IP 地址:
  • 以前创建的管理服务器虚拟 IP,即管理服务器端口 (7001)
WLSCluster1_backendset 计算实例:
  • hydrwls1,WLS Cluster 1 服务器 1 端口 (8001)
  • hydrwls2,WLS Cluster 1 服务器 1 端口 (8001)
WLSCluster2_backendset 计算实例:
  • hydrwls1,WLS Cluster 2 服务器 1 端口 (9001)
  • hydrwls2,WLS Cluster 2 服务器 2 端口 (9001)

定义路由策略并配置规则

路由策略用于将传入请求发送到正确的后端集。例如,对 /console 的请求将分派到管理后端集,对 /app1 的请求将分派到运行 app1 的群集的后端集。

如果使用的是 Oracle HTTP Server ,则通常在 Oracle HTTP Server 配置中定义路由(例如 /app1/app2/console 等)。在这种情况下,您不需要在 Oracle Cloud Infrastructure (OCI) 负载平衡器中定义路由策略和规则。

如果您未使用 Oracle HTTP Server ,则需要在 OCI 负载平衡器中定义路由策略和规则,以将请求发送到相应的后端集。

  1. Oracle Cloud Infrastructure 控制台中,单击负载平衡器。
  2. 单击路由策略,然后单击创建路由策略以定义策略。
    路由策略稍后会添加到负载平衡器监听程序。
  3. 输入路由策略的名称(规则集)。
    例如,Admin_Rules
  4. 要在路由策略中创建规则,请输入规则的名称。
    例如,Admin_routerule
  5. 定义将请求路由到不同后端集的规则条件。选择如果匹配,然后选择条件类型:路径,选择运算符:开头为,然后输入 URL 字符串
    例如,如果有任何匹配、路径、开头为 /console
  6. 从菜单中选择后端集以配置操作。
    例如,OHS_Admin_backendset
此表显示了未使用 Oracle HTTP Server 时,按照本文档中的示例创建的 Oracle Cloud Infrastructure 负载平衡器中的路由策略和规则。
组件 路由策略名称 规则 条件:如果任何匹配路径开头为 操作:路由到后端集
管理服务器控制台 Admin_Rules Admin_routerule

/console

/em

Admin_backendset
应用程序 1 Application_Rules WLSCluster1_routerule

/app1

WLSCluster1_backendset
应用程序 2 Application_Rules WLSCluster2_routerule

/app1

WLSCluster2_backendset

您可以根据需要为环境创建任意数量的路由策略、规则和条件。

创建监听程序

为用于访问系统的前端名称和端口的每个组合创建监听程序。必须使用主负载平衡器使用的相同主机名(虚拟前端名称)和端口。

  1. Oracle Cloud Infrastructure 负载平衡器中将虚拟前端主机名添加为主机名。
  2. 创建监听程序。

下表汇总了在本文档示例中创建的监听程序及其关联的协议、端口、后端集、路由策略、主机名和 SSL 使用情况。这就像一个参考示例。如果您的系统在主 Oracle WebLogic Server 系统中使用其他前端主机名、端口或协议,则必须根据需要创建对应的监听程序和主机名。例如,如果使用备用前端访问 Oracle WebLogic Server 控制台和 Oracle Enterprise Manager 控制台。

监听程序 协议 端口 后端集 分发策略 主机名 使用 SSL
Admin_listener HTTP 7001

OHS_Admin_backendset(如果使用 Oracle HTTP Server

Admin_backendset(如果未使用 Oracle HTTP Server

Admin_Rules wlsfrontend.example.com
HTTPS_listener HTTPS 443

OHS_HTTP_backendset(如果使用 Oracle HTTP Server

WLSCluster1_routerule (如果未使用 Oracle HTTP Server

App_Rules wlsfrontend.example.com
HTTP_listener HTTP 80 不适用 * 不适用 wlsfrontend.example.com

* 此示例中的 HTTP_listener 仅用于将请求重定向到 HTTPS_listener (HTTPS)。将不使用分配给它的后端。但是,由于必须提供一个,因此您需要提供未选中 SSL 的后端集(使用默认的空后端集)。

为 SSL 标头创建规则集

Oracle Cloud Infrastructure (OCI) 负载平衡器中为 SSL 标头创建规则集,并将其与 HTTPS 监听程序关联。

与在主站点中一样,OCI 负载平衡器终止 SSL,负载平衡器与后端服务器之间的通信通过 HTTP 协议执行。要使此项正常工作,必须在 OCI 负载平衡器中添加请求标头。这些标头在发送到 WebLogic 后端之前添加到 HTTPS 监听程序的客户机请求中。标头通知 WebLogic,最终客户端到负载平衡器的通信使用 HTTPS。这样,WebLogic 动态构造的任何 URL 将使用 HTTPS 正确生成。
  1. 控制台中选择负载平衡器。依次单击规则集创建规则集
  2. 为规则提供名称。
    例如,SSLHeaders
  3. 选中指定请求标头规则并添加以下操作:
    Action (操作) 标题
    添加请求头 is_ssl ssl
    添加请求头 WL-Proxy-SSL True
  4. 单击创建
  5. 单击负载平衡器,然后单击监听程序。编辑使用 HTTPS 将规则与 HTTPS 监听程序关联的监听程序。
  6. 单击 +Additional 规则集,然后选择规则集 SSLHeaders

创建规则集以将 HTTP 协议重定向到 HTTPS

创建重定向规则并将其与 HTTP_listener 关联,以将端口 80 重定向到端口 443。对于 EDG 拓扑,到达负载平衡器中端口 80 (HTTP) 的所有请求都必须重定向到端口 443 (HTTPS)。

  1. 在控制台中,选择负载平衡器。
  2. 依次单击规则集创建规则集
  3. 为规则输入名称。
    例如,HTTP_to_HTTPS_redirect
  4. 选中指定 URL 重定向规则并添加以下操作
    • 源路径:/
    • 匹配类型:强制最长的前缀匹配
    • 重定向到:
    • 协议:HTTPS
    • 主机:{host}(保留默认值)
    • 端口: 443
    • 路径:/{path}(保留默认值)
    • 查询:?{query}(保留默认值)
    • 响应代码:301 - 已永久移动
  5. 依次单击负载平衡器监听程序。编辑使用 HTTP 端口 80 的监听程序,以将其与 HTTP 监听程序关联。
  6. 单击 +Additional 规则集,然后选择规则 HTTP_to_HTTPS_redirect

将虚拟前端名称和 IP 添加到 WLS 计算实例

在灾难恢复拓扑中,客户机必须使用与数据中心无关的前端 FQDN(通常称为虚拟前端名称或虚名 URL)访问系统。此虚拟前端名称应解析为当前活动(主)站点的负载平衡器 IP 地址。

主系统应该已使用由 DNS 解析的前端虚拟名称与主负载平衡器的 IP。但是,每个站点的 Oracle WebLogic Server 主机应始终使用其本地负载平衡器解析前端名称,而不考虑使用 DNS 进行面向客户端的解析。为此,虚拟前端名称将添加到其 /etc/hosts 文件中,每个站点中都有相应的 IP 地址。您还可以使用每个站点中的不同 DNS 服务器来实现这一点。在这种情况下,本地 DNS 服务器将使用每个站点中的相应负载平衡器 IP 解析前端名称。

使用 /etc/hosts 文件
当存在切换或故障转移时,不得更改主 Oracle WebLogic Server 主主机和辅助主机的 /etc/hosts 文件。Oracle WebLogic Server 主机将始终使用其前端 IP 解析虚拟前端名称。在切换和故障转移过程中所需的 DNS 更新是在 Oracle WebLogic Server 客户机使用的 DNS 或主机文件中执行的。
  1. 以 root 用户身份,编辑辅助 Oracle WebLogic Server for Oracle Cloud Infrastructure 计算实例中的 /etc/oci-hostname.conf 文件,并将前端名称映射到 Oracle Cloud Infrastructure (OCI) 负载平衡器 IP。

    以下是辅助 Oracle WebLogic Server for OCI 计算实例的 /etc/hosts 文件示例,包括前端名称的条目。

    #################################
    # ALIASES in OCI 
    #################################
    100.70.10.20   hydrwls-vip.midTiersubnet.hydrvcn.oraclevcn.com      hydrwls-vip       ADMINVHN.example.com    ADMINVHN    
    100.70.10.13   hydrwls1.midTiersubnet.hydrvcn.oraclevcn.com         hydrwls1          APPHOST1.example.com    APPHOST1
    100.70.10.14   hydrwls2.midTiersubnet.hydrvcn.oraclevcn.com         hydrwls2          APPHOST2.example.com    APPHOST2
    
    # Front-end name (resolved to secondary OCI LBR IP)
    100.100.100.10    wlsfrontend.example.com
  2. 如果尚未执行此操作,请执行主 Oracle WebLogic Server 主机中的相同步骤。前端名称必须指向主负载平衡器 IP。
    以下是主内部部署 Oracle WebLogic Server 主机的 /etc/hosts 文件的示例,包括前端名称的条目。
    #################################
    # ALIASES in on-prem 
    #################################
    10.10.10.20   host-vip1.myopnetwork.com    host-vip1         ADMINVHN.example.com   ADMINVHN    
    10.10.10.13   host3.myopnnetwork.com       host3             APPHOST1.example.com   APPHOST1
    10.10.10.14   host4.myopnnetwork.com       host4             APPHOST2.example.com   APPHOST2
    
    # Front-end name (resolved to primary Load Balancer IP)
    10.10.10.100    wlsfrontend.example.com
  3. 如果 Oracle WebLogic Server 系统使用更多的虚拟前端名称,则按照相同的规则将其添加到文件中。
使用域名系统 (DNS)
在主要内部部署中使用分隔的 DNS 服务器,在 Oracle Cloud Infrastructure (OCI) 上使用辅助服务器时,此模式有效。否则,在命名解析时可能会导致冲突。

如果采用此方法,您可以将前端名称(指向辅助负载平衡器 IP)添加到辅助中间层使用的 DNS 服务。在主数据库中,预计前端名称已解析为指向主负载平衡器 IP。

在主端中,前端名称应该已解析为指向主负载平衡器 IP。