在 OCI 上準備 Web 層

Oracle Cloud Infrastructure (OCI) 上佈建並設定您的次要網站,使其與主要內部部署網站一致。

備註:

您可以在下載程式碼中找到 Terraform 程式碼,以建立本節 (OCI Load Balancer、SSL 憑證、後端集和後端、路由原則、監聽器以及規則集) 中所述的資源。

(選擇性) 準備 Oracle HTTP Server 主機

Oracle Cloud Infrastructure 中建立並設定 Oracle HTTP Server 運算執行處理。

注意:

您可以選擇是否建立及設定 Oracle HTTP Server 。您只能使用 OCI 負載平衡器在 OCI 上設定 Web 層 (無須使用 Oracle HTTP Server)。

佈建 Oracle HTTP Server 主機

Oracle Cloud Infrastructure (OCI) Web 層子網路上為每個主要內部部署 Oracle HTTP Server 主機建立運算執行處理。運算執行處理必須使用與企業內部部署 Oracle HTTP Server 主機所使用映像檔和資源配置最相似的作業系統映像檔和運算資源配置。

除了用於涵蓋內部部署執行之 Oracle HTTP Server 的授權和支援合約外,在 OCI 中執行的每個 Oracle HTTP Server 都必須有有效的授權和支援合約。您可以使用 適用於 OCI 的 Oracle WebLogic Server 映像檔,為 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. 影像與形狀下,按一下變更形狀。選取執行處理類型,然後選取與主要主機最相似的資源配置。
    如需支援的資源配置清單,請參閱 Images for Oracle WebLogic Server for OCI
  8. 選取您環境的 VCN、子網路 (Web 層子網路) 以及可用性網域。
    若要指定容量類型和容錯域,請按一下顯示進階選項
  9. 設定執行處理的網路。若要指定進階網路設定,請按一下顯示進階選項
  10. 新增 SSH 金鑰下,產生金鑰、上傳您的公用金鑰或貼上金鑰。
  11. 在「開機磁碟區」下,指定執行處理開機磁碟區的大小和加密選項。
  12. 按一下顯示進階選項以設定進階設定值。
  13. 按一下建立
  14. 重複步驟以建立另一個運算執行處理。

準備作業系統使用者與群組

次要運算執行處理中必須要有與主要企業內部部署 Oracle 軟體相同的使用者和群組。

Oracle WebLogic Server for Oracle Cloud Infrastructure 映像檔已經有一個 oracle 使用者和群組。不過,這些值 (使用者名稱、群組名稱、uid 以及 gid) 可能與您主要執行處理中的值不相符,因此您需要設定次要主機以符合主要 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. opc 使用者身分使用 SSH 存取您最近建立的執行處理,識別次要主機中存在的使用者、群組及 ID。以 opc 使用者身分登入次要主機,然後以 sudo oracle 使用者身分登入,然後執行 id 命令。
    [opc@hydrsoa1 ~]$ sudo su - oracle
    [oracle@hydrsoa1 ~]$ 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 來更正衝突,然後在次要中建立符合主要使用者或群組的使用者或群組。

    下表為可用於解決衝突的指令摘要:

    作業 命令 (以 root 身分執行)
    建立新群組 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 已被次要主機中的其他群組使用。若要解決此衝突,需要下列動作:

    1. 次要群組 docker 使用 ID 1002,與主要群組 oinstall 的 ID 衝突。
      若要解決衝突,請將次要主機中 docker 群組的 ID 變更為不同的非衝突 ID。例如,選取 1005 作為新 ID,並確認該 ID 未出現在 /etc/group 檔案中,以驗證該 ID 是否未使用。
      [opc@hydrsoa1 ~]$ sudo -s  
      [root@hydrsoa1 ~]$ more /etc/group | grep 1005
      當您確認 ID 未使用時,請將群組 ID 變更為新的 ID。
      [opc@hydrsoa1 ~]$ sudo -s 
      [root@hydrsoa1 ~]$ groupmod -g 1005 docker
      [root@hydrsoa1 ~]$ find / -group 1002 -exec chgrp -h docker {} \;
    2. 次要群組 oracle 使用 ID 1001,與主要群組 dba 的 ID 衝突。
      若要解決衝突,請將次要主機中 oracle 群組的 ID 變更為不同的非衝突 ID。例如,選取 1006 作為新 ID,並確認該 ID 未出現在 /etc/group 檔案中,以驗證該 ID 是否未使用。
      [opc@hydrsoa1 ~]$ sudo -s 
      [root@hydrsoa1 ~]$ more /etc/group | grep 1006
      當您確認 ID 未使用時,請將群組 ID 變更為新的 ID。
      [opc@hydrsoa1 ~]$ sudo -s 
      [root@hydrsoa1 ~]$ groupmod -g 1006 oracle
      [root@hydrsoa1 ~]$ find / -group 1001 -exec chgrp -h oracle {} \;
    3. 在次要主機上,使用與主要 ID 相同的 ID 建立 oracle 使用者的 oinstalldba 群組。
      [opc@hydrsoa1 ~]$ sudo -s
      [root@hydrsoa1 ~]$ groupadd oinstall -g 1002
      [root@hydrsoa1 ~]$ groupadd dba -g 1001
    4. 使用者 oracle 在主要和待命資料庫中具有相同的名稱和 ID,因此不需要變更。
      不過,您必須將使用者的主要群組變更為次要主機中的 oinstall
      [root@hydrsoa1 ~]$ usermod -g oinstall oracle
      然後,將使用者新增至群組 dba
      [root@hydrsoa1 ~]$ 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@hydrsoa1 ~]$ id
      uid=1001(oracle) gid=1002(oinstall) groups=1002(oinstall),1001(dba),1005(docker)
              …
    6. (建議) 在這些變更之後,執行主機的重新啟動。
  4. (選擇性,但建議) 啟用 oracle 使用者的 SSH 存取。
    此 DR 拓樸非常有用,因為可讓 oracle 使用者直接連線,以執行用來將檔案系統內容從主要資料庫複製到次要資料庫的命令。
    1. 將用以連線至運算執行處理的公開金鑰複製到文字檔。稍後您將會在此程序中使用。
    2. 登入執行處理和 sudo 給 root 使用者。
    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因為 Oracle WebLogic Server for Oracle Cloud Infrastructure 映像檔已針對 WebLogic 軟體準備,所以您不需要手動新增 WebLogic 的套裝軟體。不過,這些 Oracle HTTP Server 主機將會執行 Oracle HTTP Server 產品。確定次要主機符合 Oracle HTTP Server 的需求。
  1. 請確定您的環境符合安裝在主要主機中的產品的最低安裝需求。檢查 Oracle Fusion Middleware System Requirements and Specifications 中的對應文件。
  2. 請驗證您版本與作業系統所需的系統套裝軟體。
  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 檔案的指令「主機」中立即定義的優先順序。

不過,此方法需要手動將項目新增至所有 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 SOA 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 SOA are added too
    virtual_IP_for_admin          virtualIP_fqdn  virtualIP_hostname    ALIASES_OF_ADMINVHN
    soahost1_compute_instance_IP  soahost1_fqdn   soahost1_hostname     ALIASES_OF_SOAHOST1
    soahost2_compute_instance_IP  soahost2_fqdn   soahost2_hostname     ALIASES_OF_SOAHOST2

    備註:

    除了以別名方式新增 Oracle HTTP Server 主機的虛擬名稱之外,還會新增 Oracle WebLogic Server 主機的虛擬名稱,指向次要 WebLogic Server 主機的 IP。因為 Oracle HTTP Server 將會使用其虛擬主機名稱與 WebLogic Server 主機通訊。
    以下為次要 Oracle HTTP Server 運算執行處理中的 /etc/hosts 檔案範例:
    #################################
    # ALIASES for SOA 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 SOA hosts
    100.70.10.20 hydrsoa-vip.midTiersubnet.hydrvcn.oraclevcn.com hydrsoa-vip ADMINVHN.example.com ADMINVHN
    100.70.10.13 hydrsoa1.midTiersubnet.hydrvcn.oraclevcn.com    hydrsoa1    SOAHOST1.example.com SOAHOST1
    100.70.10.14 hydrsoa2.midTiersubnet.hydrvcn.oraclevcn.com    hydrsoa2    SOAHOST2.example.com SOAHOST2
    下列是主要 Oracle HTTP Server 主機的現有 /etc/hosts 檔案範例:
    #################################
    # ALIASES for SOA 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 SOA hosts
    10.10.10.20    host-vip1.myopnetwork.com         host-vip1       ADMINVHN.example.com   ADMINVHN
    10.10.10.13    host3.myopnetwork.com             host3           SOAHOST1.example.com   SOAHOST1
    10.10.10.14    host4.myopnetwork.com             host4           SOAHOST2.example.com   SOAHOST2
使用網域名稱系統 (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 使用者身分,在每個 Oracle HTTP Server 運算執行處理中使用 firewall-cmd 命令來開啟 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 Serveroracle 使用者環境變數

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 主機 (相同的作業系統、使用者 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 至作業系統運算執行處理,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. 使用 rsync產品資料夾從內部部署主要 WEBHOST1 複製到遠端 WEBHOST1。重複此步驟,將產品資料夾從 WEBHOST2 複製到遠端 WEBHOST2。而且,針對任何其他 Oracle HTTP Server 運算執行處理重複此步驟。

    備註:

    您可以使用範例命令檔將 Oracle HTTP Server 產品資料夾從內部部署主要 WEBHOST1 複製到遠端 WEBHOST1。

    請前往下載代碼下載指令碼。

  4. 使用 rsyncOracle HTTP Server 組態資料夾從內部部署的主要 WEBHOST1 複製到遠端 WEBHOST1。重複步驟,將組態資料夾從 WEBHOST2 複製到遠端 WEBHOST2。而且,針對任何其他 Oracle HTTP Server 運算執行處理重複此步驟。

    備註:

    您可以使用範例命令檔將 Oracle HTTP Server 組態資料夾從內部部署主要 WEBHOST1 複製到遠端 WEBHOST1。

    請前往下載代碼下載指令碼。

  5. 從主要 Oracle HTTP Server 主機複製 /etc/oraInst.loc 檔案,並將它儲存至次要主機。
    此檔案只包含 oraInventory 的位置,而且不會隨時間變更,因此此副本為一次性動作。
  6. 如果 oraInventory 資料夾位於產品資料夾下,則會與 Oracle HTTP Server Oracle 本位目錄一起複製。如果您的 oraInventory 資料夾位於其他位置,請確定您也將其複製到次要主機。

Oracle HTTP Server 組態和二進位檔案不會經常變更加班時間。完成此初始複製後,您可以在生命週期中重複相同的複製。或者,您也可以在兩個網站實行 Oracle HTTP Server 組態變更,手動維護主要和次要的 Oracle HTTP Server 組態。

準備 OCI 負載平衡器

在雲端上建立並設定 Oracle Cloud Infrastructure 負載平衡器。

備註:

您可以在下載程式碼中找到 Terraform 程式碼,以建立本節 (OCI Load Balancer、SSL 憑證、後端集和後端、路由原則、監聽器以及規則集) 中所述的資源。

佈建 OCI 負載平衡器

若要與主要內部部署網站一致,請在 Oracle Cloud Infrastructure (OCI) 上的次要網站上佈建負載平衡器作為系統的進入點。

  1. 登入 OCI 主控台
  2. 選取正確的區域和區間。
  3. 瀏覽至網路,然後負載平衡器。按一下建立負載平衡器
  4. 選取負載平衡器類型。
  5. 提供負載平衡器的名稱。
    例如:hyDRlbr
  6. 選擇符合您需求的可見性類型 (公用私有) 與頻寬。
    • 如果您的系統是透過網際網路從外部用戶端存取,則選擇公用可見性。OCI 負載平衡器將會使用公用 IP。
    • 如果您的系統僅從內部存取,則您可以選擇專用可見性,僅為負載平衡器佈建專用 IP。
  7. 選取適當的 VCN 和子網路。
    例如,hydrvcnwebTierSubnet
  8. 請勿在此時新增任何後端。
  9. 使用預設值保留預設監聽器
  10. 按一下提交
儲存 OCI 負載平衡器 IP (例如 100.100.100.10)。

上傳憑證

上傳主要負載平衡器使用的憑證。

  1. 在主控台中,依序按一下負載平衡器憑證新增憑證
  2. 上傳主要負載平衡器所使用之憑證的公用 SSL 憑證和私密金鑰。上傳 CA (憑證授權機構) 憑證 (若有的話)。
  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. 在「建立後端集」對話方塊中輸入下列資訊:
    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. 按一下建立

如果您的 Oracle HTTP Server 監聽其他服務的額外連接埠,請以類似的方式為每個服務建立後端集。

下列是使用 Oracle HTTP Server 時後端集的範例。

元件 後端集名稱 流量分配原則 階段作業持續性 Cookie 名稱 (範例) 屬性:安全 狀況檢查
管理伺服器 OHS_Admin_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-ADMIN-Backendset 已取消勾選 TCP 或 HTTP
所有 SOA 元件
  • Oracle SOA Suite
  • Oracle Service Bus
  • Oracle B2B
  • 業務流程管理
  • Oracle Enterprise Scheduler (ESS)
  • 業務活動監督 (BAM)
OHS_HTTP_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-OHS-HTTP-Backendset 已勾選 TCP 或 HTTP
Oracle Web Services Manager OHS_HTTP_internal_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-OHS-Internal-HTTP-Backendset 已取消勾選 TCP 或 HTTP

如果您的 Oracle HTTP Server 監聽其他服務的額外連接埠,請以類似的方式為每個服務建立後端集。

下列是未使用 Oracle HTTP Server 時,後端集的範例。

元件 後端集名稱 流量分配原則 階段作業持續性 Cookie 名稱 (範例) 屬性:安全 狀況檢查
所有產品 (admin) Admin_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-ADMIN-Backendset 取消勾選 TCP 或 HTTP
Oracle Web Services Manager WSM_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-WSM-Backendset 取消勾選 TCP 或 HTTP
Oracle SOA Suite、業務流程管理以及 Oracle B2B SOA_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-SOA-Backendset 已勾選 TCP 或 HTTP
Oracle Service Bus OSB_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-OSB-Backendset 已勾選 TCP 或 HTTP
Oracle Enterprise Scheduler (ESS) ESS_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-ESS-Backendset 已勾選 TCP 或 HTTP
業務活動監督 (BAM) BAM_backendset 加權循環 啟用負載平衡器 Cookie 持續性 X-Oracle-LBR-BAM-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)
OHS_HTTP_internal_backendset 運算執行處理:
  • hydrohs1,HTTP 內部監聽器的 Oracle HTTP Server 連接埠 (例如 8891)
  • hydrohs2,HTTP 內部監聽器的 Oracle HTTP Server 連接埠 (例如 8891)

此表格顯示「不」使用 Oracle HTTP Server 時,在此文件範例中所建立的後端集:

後端集名稱 後端
Admin_backendset IP 位址:
  • 先前建立的管理伺服器虛擬 IP,管理伺服器連接埠 (7001)
WSM_backendset 運算執行處理:
  • hydrsoa1,WSM server1 連接埠 (7010)
  • hydrsoa2,WSM server2 連接埠 (7010)
SOA_backendset 運算執行處理:
  • hydrsoa1、SOA server1 連接埠 (8001)
  • hydrsoa2、SOA server2 連接埠 (8001)
OSB_backendset 運算執行處理:
  • hydrsoa1,OSB server1 連接埠 (8010)
  • hydrsoa2,OSB server2 連接埠 (8010)
ESS_backendset 運算執行處理:
  • hydrsoa1、ESS server1 連接埠 (8021)
  • hydrsoa2、ESS server2 連接埠 (8021)
BAM_backendset 運算執行處理:
  • hydrsoa1,BAM server1 連接埠 (9001)
  • hydrsoa2,BAM server2 連接埠 (9001)

定義路由原則及設定規則

路由原則主要用於將內送要求分配至正確的後端集。例如,對 /console 的要求會分配至「管理」後端集,而對 /app1 的要求會分配至執行 app1 之叢集的後端集。

如果您使用 Oracle HTTP Server ,則通常會在 Oracle HTTP Server 組態中定義路由 (例如 /app1/app2/console 等)。在此情況下,您不需要在 Oracle Cloud Infrastructure (OCI) 負載平衡器中定義路由原則和規則。

如果您未使用 Oracle HTTP Server ,則必須在 OCI Load Balancer 中定義路由原則和規則,將要求分配給適當的後端集。

  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) Admin_Rules Admin_routerule

/console

/em

Admin_backendset
Oracle Service Bus (admin) Admin_Rules Admin_routerule

/sbconsole

/servicebus

Admin_backendset
Oracle Web Services Manager Internal_Rules WSM_routerule

/wsm-pm

WSM_backendset
Oracle Service Bus SOA_Rules OSB_routerule

/sbinspection.wsil

/sbresource

/osb

/alsb

OSB_backendset
Oracle SOA Suite SOA_Rules SOA_routerule

/soa-infra

/integration

/sdpmessaging

/userprefs-ui

/DefaultToDoTaskFlow

/workflow

/ADFAttachmentHelper

/soa/composer

自訂工作可能需要更多自訂別名

SOA_backendset
業務流程管理 SOA_Rules SOA_routerule

/bpm/composer

/bpm/workspace

/bpm/casemgmt

SOA_backendset
Oracle Enterprise Scheduler (ESS) SOA_Rules ESS_routerule

/ess

/EssHealthCheck

/ess-async

/ess-wsjob

ESS_backenset
業務活動監督 (BAM) SOA_Rules BAM_routerule

/bam

/composer

/OracleBAMWS

/oracle/bam

BAM_backendset
Oracle B2B SOA_Rules B2B_routerule

/b2bconsole

/b2b/services

/b2b/httpreceiver

SOA_backendset

您可以視需要為環境建立不限數目的路由原則、規則及條件。

建立監聽器

為用來存取系統的每個前端名稱和連接埠組合建立監聽器。您必須使用主要負載平衡器使用的相同主機名稱 (虛擬前端名稱) 和連接埠。

  1. 將虛擬前端主機名稱新增為 Oracle Cloud Infrastructure 負載平衡器中的主機名稱。
  2. 建立監聽器。

下表為本文件範例中所建立的監聽器摘要,以及其關聯的協定、連接埠、後端集、路由原則、主機名稱以及 SSL 使用狀況。這就像參照範例一樣。如果您的系統在主要 Oracle WebLogic Server 系統中使用其他前端主機名稱、連接埠或通訊協定,則您必須根據需求建立對應的監聽器和主機名稱。例如,如果您使用替代的前端來存取 Oracle WebLogic Server 主控台和 Oracle Enterprise Manager 主控台。

監聽器 協定 連接埠 後端集 遞送原則 HostName 使用 SSL
Admin_listener HTTP 7001

OHS_Admin_backendset (如果使用 Oracle HTTP Server)

Admin_backendset (如果未使用 Oracle HTTP Server)

Admin_Rules mysoa.example.com 不是
HTTPS_listener HTTPS 443

OHS_HTTP_backendset (如果使用 Oracle HTTP Server)

SOA_backendset (如果未使用 Oracle HTTP Server)

SOA_Rules mysoa.example.com
HTTP_listener HTTP 80 不適用 不適用 mysoa.example.com 不是
Internal_listener HTTP 8888

OHS_HTTP_internal_backendset (如果使用 Oracle HTTP Server)

WSM_backendset (如果未使用 Oracle HTTP Server)

Internal_Rules mysoa.example.com 不是

* 此範例中的 HTTP_listener 僅用於將要求重新導向至 HTTPS_listener (HTTPS)。將不會使用指定給它的後端。但是,由於必須提供,因此必須提供未核取 SSL 的方法 (使用預設的空白後端集)。

建立 SSL 標頭的規則集

Oracle Cloud Infrastructure (OCI) 負載平衡器中建立 SSL 標頭規則集,並將它與 HTTPS 監聽器建立關聯。

就像主要網站一樣,OCI 負載平衡器會終止 SSL,而負載平衡器與後端伺服器之間的通訊則透過 HTTP 協定執行。為了讓此功能正常運作,您必須在 OCI 負載平衡器中新增要求標頭。這些標頭會新增至 HTTPS 監聽器的從屬端要求,再將它們傳送至 WebLogic 後端。標頭會通知 WebLogic,告知從屬端與負載平衡器的通訊使用 HTTPS。如此一來,就會使用 HTTPS 動態產生 WebLogic 建構項目的所有 URL。
  1. 主控台中選取負載平衡器。按一下規則集,然後按一下建立規則集
  2. 提供規則的名稱。
    例如,SSLHeaders
  3. 勾選指定要求標頭規則並新增下列動作:
    動作 標頭
    新增要求標頭 is_ssl SSL
    新增要求標頭 WL-Proxy-SSL
  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 新增至 SOA 運算實例

在災害復原拓樸中,用戶端必須使用對資料中心提供爆發的前端 FQDN (通常稱為虛擬前端名稱或虛名 URL) 存取系統。此虛擬前端名稱應解析為目前作用中 (主要) 網站的負載平衡器 IP 位址。

主要系統應該已經使用 DNS 以主要負載平衡器 IP 解析的前端虛擬名稱。不過,每個網站的 Oracle SOA Suite 主機應一律以其本機負載平衡器來解析前端名稱,無論使用 DNS 進行從屬端解析為何。因此,虛擬前端名稱會新增至其 /etc/hosts 檔案,每個網站都有適當的 IP 位址。您也可以在每個網站上使用不同 DNS 伺服器以達到此目的。在此情況下,本機 DNS 伺服器會以每個網站的適當負載平衡器 IP 解析前端名稱。

使用 /etc/hosts 檔案
有切換或容錯移轉時,不能更改主要和次要 Oracle WebLogic Server 主機的 /etc/hosts 檔案。Oracle WebLogic Server 主機一律會使用其前端 IP 來解析虛擬前端名稱。在切換和容錯移轉程序期間所需的 DNS 更新,是在 Oracle WebLogic Server 用戶端使用的 DNS 或主機檔案中執行。
  1. 以超級使用者身分編輯次要 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   hydrsoa-vip.midTiersubnet.hydrvcn.oraclevcn.com      hydrsoa-vip       ADMINVHN.example.com    ADMINVHN    
    100.70.10.13   hydrsoa1.midTiersubnet.hydrvcn.oraclevcn.com         hydrsoa1          SOAHOST1.example.com    SOAHOST1
    100.70.10.14   hydrsoa2.midTiersubnet.hydrvcn.oraclevcn.com         hydrsoa2          SOAHOST2.example.com    SOAHOST2
    
    # Front-end name (resolved to secondary OCI LBR IP)
    100.100.100.10    mysoa.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             SOAHOST1.example.com   SOAHOST1
    10.10.10.14   host4.myopnnetwork.com       host4             SOAHOST2.example.com   SOAHOST2
    
    # Front-end name (resolved to primary Load Balancer IP)
    10.10.10.100    mysoa.example.com
  3. 如果您的 Oracle WebLogic Server 系統使用更多的虛擬前端名稱,請按照相同規則將它們新增至檔案。
使用網域名稱系統 (DNS)
當主要內部部署和 Oracle Cloud Infrastructure (OCI) 上的次要伺服器使用不同的 DNS 伺服器時,此模式有效。否則,它可能會在命名解析中造成衝突。

如果您遵循此方法,就可以將前端名稱 (指向次要負載平衡器 IP) 新增至次要中間層使用的 DNS 服務。主要的負載平衡器 IP 應該已經解析前端名稱。

主要的負載平衡器 IP 應該已經解析前端名稱。