使用 WebLogic 建置工具移轉工作負載

一次建置所有資源和應用程式,而非個別建置。

使用 WebLogic Deployment Tooling (WLDT),您將更新來源網域模型檔案,以將各種應用程式和資源定位至新網域的伺服器,並更新資料庫連線至移轉至 Oracle Cloud Infrastructure 的相符資料庫。

開始之前,請注意下列事項:

  • Oracle Cloud Infrastructure 映像檔建立的 Oracle WebLogic Server 網域名稱是您在啟動設定時所提供的前置碼,加上新增的尾碼 _domain,例如 test_domain

  • 受管理伺服器名稱遵循 <prefix>_server_<index> 樣式 (例如 test_server_1test_server_2test_server_n),其中 n 是已啟動設定的節點數目。

  • 管理員伺服器的名稱為 <prefix>_adminserver,例如 test__adminserver

  • 如果您啟動設定 WebLogic Enterprise Edition,就會啟動設定名稱為< prefix >_cluster 的叢集,其中包含所有受管理伺服器。

  • 您將需要先前建立之資料庫的連線字串。

  • 如果應用程式檔案位於 ORACLE_HOME 資料夾結構之下,將無法由 WebLogic Deploy Tooling 選擇它們,而且必須手動進行移動。或者,您也可以將應用程式檔案封裝在與 wlsdeploy/applications/<app.ear> 類似之資料夾結構的 zip 檔案中,然後將 SourcePath 變更為相同的路徑,以便 WebLogic Deploy Tooling 在目標的預設資料夾中部署。

  1. 身為適當的 WebLogic 使用者 (通常為 oracle),而且使用已正確設定的 JAVA_HOME,請在來源網域中安裝 WebLogic 部署工具 (WLDT)。
    # install weblogic-deploy-tooling
    # Check for the latest version at:
    # https://github.com/oracle/weblogic-deploy-tooling/releases/
    WLSDT_VERSION=1.7.0
    echo $JAVA_HOME
    # download and unzip the package
    wget -qO- https://github.com/oracle/weblogic-deploy-tooling/releases/download/weblogic-deploy-tooling-${WLSDT_VERSION}/weblogic-deploy.zip | $JAVA_HOME/bin/jar xv
    # make the scripts executable
    chmod +x weblogic-deploy/bin/*.sh
  2. 尋找來源網域。

    -domain_type 預設為 WLS,因此可為 WLS 網域略過此預設值。當 -domain_type JRF 時,尋找命令會篩除所有 JRF 元件,若為 JRF 網域,此元件會由市集影像重新啟動設定。使用 JRF 的預設值是尋找所有網域的最佳預設值。

    本範例使用 source 作為 .yaml.zip 以及 .properties 檔案。您可以使用任何有效的檔案名稱。

    # path to the parent of the wlserver folder (for example /u01/app/oracle/middleware/)
    MW_HOME=
    # path to the domain folder (i.e. <domain root>/<domain_name>)
    DOMAIN_HOME=
    
    weblogic-deploy/bin/discoverDomain.sh \
        -oracle_home $MW_HOME \
        -domain_home $DOMAIN_HOME \
        -archive_file source.zip \
        -model_file source.yaml \
        -variable_file source.properties \
        -domain_type JRF
    
    # even if the domain is not JRF, using JRF domain type will only filter out domain libraries. If they don’t exist, this will not affect the output.
  3. 將檔案移至目標環境上的「管理員」伺服器。
    SOURCE_IP=<IP of the source WLS server>
    ADMIN_SERVER_IP=<IP of the cloud Administrator server>
    scp <source_user>@${SOURCE_IP}:~/source.* opc@${ADMIN_SERVER_IP}:~/
    
    # change ownership of the files from opc to oracle 
    # and move the file to the oracle user home
    ssh opc@${ADMIN_SERVER_IP}
    sudo chown oracle:oracle source.*
    sudo mv source.* /home/oracle/
    # switch to the oracle user
    sudo su – oracle
  4. Oracle Cloud Infrastructure 的 WLS 管理員伺服器上安裝 WebLogic 建置工具。
    # As the oracle user, install weblogic-deploy-tooling
    WLSDT_VERSION=1.7.0
    wget -qO- https://github.com/oracle/weblogic-deploy-tooling/releases/download/weblogic-deploy-tooling-${WLSDT_VERSION}/weblogic-deploy.zip | $JAVA_HOME/bin/jar xv
    
    # make the scripts executable
    chmod +x weblogic-deploy/bin/*.sh
  5. 編輯來源網域模型檔案以符合目標網域拓樸。
    • source.yaml:描述網域、其拓樸 (伺服器、叢集等)、資源和應用程式建置的模型檔案。

    • source.zip:包含應用程式檔案。

    • source.properties:包含無法連接之證明資料的預留位置。

    注意:

    編輯 yaml 檔案時,請確定使用空格,而非頁籤或剖析將會失敗。另請注意,在 YAML 中,縮排代表巢狀,因此在移除最上層索引鍵時,您應該移除其下一個索引鍵與相同層次上層的所有巢狀索引鍵。
    1. 編輯 .yaml 檔案以僅保留區段資源和 appDeployments。
      • 移除整個 domainInfo 區段。

      • 移除整個 topology 區段。

      • WebLogic Server Enterprise Edition: For each application nested under resources, then JDBCSystemResource, and then appDeployment, edit the Target key to match the cluster name on Oracle Cloud Infrastructure where cluster name is <domain_prefix>_cluster, for example ee_cluster.

      • WebLogic Server Standard Edition :針對資源底下的每個應用程巢狀,然後JDBCSystemResource ,接著編輯Target 索引鍵以比對Oracle Cloud基礎架構 中應該使用樣式< domain_prefix >_server_< id >目標的受管理伺服器名稱清單。請以逗號分隔清單項目,並以單引號或雙引號括住清單。例如 'se_server_0,se_server_1,se_server_3'

    2. 編輯每個 JDBCDriverParams 金鑰下之資料來源的 url。
      URL 應該遵循以下樣式:
      'jdbc:oracle:thin:@//<hostname>:<port>/<your_pdb_name>.<subdomain_name>'
      其中 hostnameport 以及 subdomain_name 是來自資料庫連線字串,而 your_pdb_name 是代管您資料庫之 PDB 的名稱 (不是 CDB 根名稱)。
      • 單一節點連線字串:<hostname>:<port>/<cdb_root_name>.<db_subnet_domain_name>
      • 多重節點連線字串:<hostname>-scan:<port>/<cdb_root_name>.<db_subnet_domain_name>

      不過,如果資料庫只包含一個節點,則使用任一種格式,建議您包括 -scan 元件以確保正確的尋找,並支援未來的縮放比例。

    3. 如果遺漏則新增 StagingMode 金鑰

      對於 appDeployments 底下的每個應用程式,請確定 StagingMode 金鑰已設為 stage,或者如果沒有,請加以新增。這項設定會自動在叢集的其他目標受管理伺服器或受管理伺服器上建置檔案。如果沒有這項設定,您必須手動將檔案建置到每一個伺服器。

    4. 編輯 source.properties 檔案,並更新您移轉之資料庫或資料庫的 JDBC 連線密碼或密碼。
  6. 執行 WebLogic Deploy Tooling updateDomain 命令檔以更新網域。
    # make sure the needed variables are set:
    echo $DOMAIN_HOME
    echo $MW_HOME
    
    # run WebLogic Deploy Tooling updateDomain script in online mode
    weblogic-deploy/bin/updateDomain.sh \
    -oracle_home $MW_HOME \
    -domain_home $DOMAIN_HOME \
    -model_file source.yaml \
    -variable_file source.properties \
    -archive_file source.zip \
    -admin_url t3://$(hostname -i):9071
    
    # domain deployed before 05/19/2020 may need to use port 7001

    此範例的注意事項:

    • -domain_type 不會用於此處,因為它是僅限更新項目。使用 -domain_type JRF 選項 (即使是為 JRF 網域) 會使得 WLDT 更新線上更新時發生問題。

    • -admin_url 需要具有 hostname -i 命令擷取的 t3 通訊協定和管理員伺服器本機專用 IP。透過公用 IP 的 HTTP 或 HTTPS 無法運作。

    • 在此命令中提供 -admin_url 可確保網域能夠線上更新。不是所有網域都可以在線上更新,但是除非拓樸已經修改 (此處不適用),否則應該對大多數網域使用。

    • 更新線上,可讓您不需重新啟動伺服器,即可部署應用程式和資源。如果您離線執行更新,請移除 -admin_url 選項,然後使用 stopWebLogic.shstartWebLogic.sh 命令檔停止並重新啟動 WebLogic 伺服器。請使用 startWeblogic.sh &! 將命令傳送至背景並取消它,讓它能夠存留終端機。

    • 如果您離線執行更新,您必須停止並重新啟動伺服器兩次,StagingMode=stage 旗標才會生效。第一次重新啟動會更新組態,第二次重新啟動則會啟用 StagingMode 建置。