使用 WebLogic 部署工具迁移工作量

一次在预配的域上部署所有资源和应用程序,而不是单独部署。

使用 WebLogic 部署工具(WLDT),可以更新源域模型文件以将各种应用程序和资源定位到新域的服务器,并更新数据库连接以匹配迁移到 Oracle Cloud Infrastructure 的数据库。

开始之前,请注意以下事项:

  • Oracle WebLogic Server Oracle Cloud Infrastructure 映像创建的域名是在使用添加的后缀 _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 部署工具不会选取这些文件,并且必须手动移动这些文件。此外,您可以将 zip 文件中具有类似于 wlsdeploy/applications/<app.ear> 的文件夹结构的应用程序文件打包,并将 SourcePath 更改为相同的路径,这样 WebLogic 部署工具将部署到目标上的默认文件夹中。

  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 是搜索所有域的良好默认值。

    此示例对 .yaml.zip.properties 文件使用 source。可以使用任何有效的文件名。

    # 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:对于在 resources 下嵌套的每个应用程序,依次选择 JDBCSystemResourceappDeployment,编辑 Target 键以匹配 Oracle Cloud Infrastructure 上集群名称为 <domain_prefix>_cluster 的集群名称,例如 ee_cluster

      • WebLogic 服务器标准版:对于嵌套在 resourcesJDBCSystemResourceappDeployment 下的每个应用程序,依次选择 Target 键以匹配应用程序应使用模式 <domain_prefix>_server_<id> 定位的 Oracle Cloud Infrastructure 上的托管服务器名称列表。用逗号分隔列表项,并用单引号或双引号将列表引起来。例如 'se_server_0,se_server_1,se_server_3'

    2. 编辑每个 JDBCDriverParams 密钥下的数据源的 url。
      URL 应遵循以下模式:
      'jdbc:oracle:thin:@//<hostname>:<port>/<your_pdb_name>.<subdomain_name>'
      其中,hostnameportsubdomain_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 部署工具 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 命令提取的管理服务器本地专用 IP 的 t3 协议。通过公共 IP 进行的 HTTP 或 HTTPS 无法运行。

    • 在该命令中提供 -admin_url 可确保域已联机更新。并非所有域都可以联机更新,但是除非拓扑已修改(此处不是案例),否则它应适用于大多数域。

    • 通过更新联机,可以部署应用程序和资源而无需重新启动服务器。如果脱机执行更新,请删除 -admin_url 选项,然后使用 stopWebLogic.shstartWebLogic.sh 脚本停止并重新启动 WebLogic 服务器。使用 startWeblogic.sh &! 将命令发送到后台并取消其自身,以便它可以在终端退出时生效。

    • 如果脱机执行更新,则必须停止并重新启动服务器两次,以使 StagingMode=stage 标记生效。第一次重新启动将更新配置,第二次重新启动将启用 StagingMode 部署。