教程:在 Azure 虚拟机 (VM) 上手动安装 WebLogic Server

本教程介绍了在 Windows 或 GNU/Linux 上的 Azure 虚拟机 (VM) 上安装 Oracle WebLogic Server (WLS) 和配置 WebLogic 群集的步骤。

本教程介绍如何执行下列操作:

  • 创建自定义虚拟网络,并在网络中创建 VM。
  • 为 VM 预配所需的 Java 开发工具包 (JDK) 和安装 WLS。
  • 使用 Oracle 配置向导配置 WebLogic Server 域和 WebLogic Server 群集。
  • 在群集中部署并运行 Java 应用程序。
  • 通过 Azure 应用程序网关将应用程序公开给公共 Internet。
  • 验证成功配置。

如果希望完全自动化的解决方案直接从 Azure 门户代表 GNU/Linux VM 执行所有这些步骤,请参阅快速入门:使用 Azure 门户在 Azure 虚拟机上部署 WebLogic Server

如果你有兴趣提供反馈或与开发 WebLogic on Azure 解决方案的工程团队就迁移方案展开密切合作,请填写这份简短的有关 WebLogic 迁移的调查并提供联系人信息。 项目经理、架构师和工程师团队会及时与你联系,以开展密切合作。

先决条件

  • 一台安装了类似于 Unix 的操作系统(例如 Ubuntu、macOS 或适用于 Linux 的 Windows 子系统)的本地计算机。
  • Azure 订阅。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户
  • 安装 Azure CLI 2.46.0 或更高版本以运行 Azure CLI 命令。
    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展
    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade
  • 必须具有 Oracle 帐户。 若要创建 Oracle 帐户并接受 WebLogic Server 映像的许可协议,请按照 Oracle 容器注册表中的步骤操作。 记下 Oracle 帐户的密码和电子邮件。

准备环境

在本节中,将设置在其中安装 JDK 和 WebLogic Server 的基础结构。

假设

在本教程中,将在总共三个 VM 上配置一个 WebLogic Server 群集,其中包括一个管理服务器和两个托管服务器。 要配置群集,你需要在同一可用性集中创建以下三个 Azure VM:

  • 管理 VM(VM 名称 adminVM)正在运行管理服务器。
  • 托管 VM(VM 名称为 mspVM1mspVM2),具有两个正在运行的托管服务器。

登录 Azure

如果尚未这样做,请使用 az login 命令登录到 Azure 订阅,并遵照屏幕上的指示操作。

az login

注意

如果多个 Azure 租户与你的 Azure 凭据关联,必须指定要登录到哪个租户。 可使用 --tenant 选项来完成此操作。 例如:az login --tenant contoso.onmicrosoft.com

创建资源组

使用 az group create 创建资源组。 资源组名称在订阅中必须全局唯一。 因此,请考虑在创建的任何必须唯一的名称前面附加一些唯一标识符。 一种有用的方法是使用首字母缩写,后跟今天的日期(格式为 mmdd)。 此示例在 eastus 位置创建一个名为 abc1110rg 的资源组:

export RESOURCE_GROUP_NAME=abc1110rg

az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location eastus

创建虚拟网络

由 WebLogic Server 群集组成的资源必须使用虚拟网络相互通信,并与公共 Internet 通信。 有关规划虚拟网络的完整指南,请参阅 Azure 的云采用框架指南计划虚拟网络。 有关详细信息,请参阅 Azure 虚拟网络常见问题解答

本节中的示例创建了一个地址空间为 192.168.0.0/16 的虚拟网络,并创建了 VM 使用的子网。

首先,使用 az network vnet create 创建一个虚拟网络。 以下示例创建一个名为 myVNet 的网络。

az network vnet create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myVNet \
    --address-prefixes 192.168.0.0/24

使用 az network vnet subnet create 为 WebLogic Server 群集创建子网。 以下示例创建名为 mySubnet 的子网:

az network vnet subnet create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mySubnet \
    --vnet-name myVNet \
    --address-prefixes 192.168.0.0/25

使用 az network vnet subnet create 为应用程序网关创建子网。 以下示例创建名为 wlsVMGateway 的子网:

az network vnet subnet create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name wlsVMGateway \
    --vnet-name myVNet \
    --address-prefixes 192.168.0.128/25

创建可用性集

使用 az vm availability-set create 创建可用性集,如以下示例所示。 创建可用性集是可选的,但我们建议执行此操作。 有关详细信息,请参阅 Windows VM 的示例 Azure 基础结构演练

az vm availability-set create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAvailabilitySet \
    --platform-fault-domain-count 2 \
    --platform-update-domain-count 2

以下各节介绍在 GNU/Linux 或 Windows Server 上安装 WebLogic Server 的步骤。 可以根据要求选择操作系统、JDK 版本和 WebLogic 版本,但应验证它们是否在 Oracle Fusion 中间件支持的系统配置中可用。 此外,在继续操作之前,请仔细考虑系统和平台特定的要求。 有关详细信息,请参阅系统要求和规范。 选择所选操作系统的选项卡。

本文使用由 Oracle 和 Microsoft 维护的 Azure VM 映像,其中包含该软件的最新支持版本。 有关由 Oracle 和 Microsoft 维护的 WebLogic Server 基础映像的完整列表,请参阅 Azure 市场。 如果你想使用 Windows OS,则说明将从基础 Windows VM 开始,并会引导你完成安装所有必要依赖项的步骤。

本文中用于创建 VM 的市场映像为 Oracle:weblogic-141100-jdk11-ol91:owls-141100-jdk11-ol91:latest

注意

可以使用 az vm image list az vm image list --publisher oracle --output table --all | grep "weblogic"查询 Oracle 提供的所有可用 Oracle WebLogic 映像。 有关详细信息,请参阅 Microsoft Azure 上的 Oracle VM 映像及其部署

为管理服务器创建 Oracle Linux 计算机

在本节中,将为管理服务器和托管服务器创建安装了 JDK 11 和 WebLogic 14.1.1.0 的 Oracle Linux 计算机。

运行 az vm create 创建 VM。 在此 VM 上运行管理服务器。

以下示例使用 SSH 密钥对创建 Oracle Linux VM 进行身份验证。 如果需要,可以改用密码身份验证。

如果没有 SSH 密钥对,可以使用以下命令生成:

ssh-keygen -t rsa -b 2048 -f ~/.ssh/wls-vm-key

此命令创建以下文件:

  • ~/.ssh/wls-vm-key:私钥。
  • ~/.ssh/wls-vm-key.pub:公钥。
export VM_URN=Oracle:weblogic-141100-jdk11-ol91:owls-141100-jdk11-ol91:latest

az vm create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name adminVM \
    --availability-set myAvailabilitySet \
    --image ${VM_URN} \
    --size Standard_DS1_v2  \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/wls-vm-key.pub \
    --public-ip-address "" \
    --nsg ""

注意

不建议使用用户名和密码凭据授予对 VM 的访问权限。 如果特定使用要求建议基于凭据的访问是最佳方法,则可以使用用户名和密码创建 VM:

export VM_URN=Oracle:weblogic-141100-jdk11-ol91:owls-141100-jdk11-ol91:latest
az vm create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name adminVM \
    --availability-set myAvailabilitySet \
    --image ${VM_URN} \
    --size Standard_DS1_v2 \
    --admin-username azureuser \
    --admin-password <your-password> \
    --public-ip-address "" \
    --nsg ""

创建 Windows VM 并设置 X 服务器

本教程使用 WebLogic Server 的图形界面来完成安装和配置。 可以使用 Windows VM 作为“跳转盒”,并运行 X 窗口系统服务器,以查看 WebLogic Server 群集的三个 VM 上的图形安装程序。

执行以下步骤预配 Windows 10 计算机并安装 X 服务器。 如果你已拥有 Oracle Linux 计算机所在相同网络中的 Windows 计算机,则无需从 Azure 预配新计算机。 你可以转到安装 X 服务器的分区。

  1. 从 Azure 门户中使用以下步骤创建 Windows 10 VM:

    1. 在 Azure 门户中打开你之前创建的资源组。
    2. 选择创建以创建资源。
    3. 选择计算,搜索 windows 10,然后选择 Microsoft Windows 10
    4. 选择你想要的计划,然后选择创建
    5. 使用以下值配置 VM:
      • 虚拟机名称myWindowsVM
      • 映像Windows 10 专业版
      • 用户名azureuser
      • 密码Secret123456
    6. 选中许可下面的复选框。
    7. 选择查看 + 创建,然后选择创建

    创建 VM 和支持资源需要几分钟时间。

    部署完成后,安装 X 服务器并使用它通过图形界面在 Linux 计算机上配置应用程序服务器。

  2. 使用以下步骤安装并启动 X 服务器:

    1. 使用远程桌面连接到 myWindowsVM。 有关详细指南,请参阅如何使用远程桌面进行连接并登录到运行 Windows 的 Azure 虚拟机。 你必须对 myWindowsVM 执行本部分中的剩余步骤。
    2. 下载并安装 VcXsrv Windows X Server
    3. 禁用防火墙。 要允许来自 Linux VM 的通信,请使用以下步骤关闭 Windows Defender 防火墙:
      1. 搜索并打开 Windows Defender 防火墙
      2. 找到打开或关闭 Windows Defender 防火墙,然后在专用网络设置中选择关闭。 你可以直接沿用公共网络设置
      3. 选择“确定”
      4. 关闭 Windows Defender 防火墙设置面板。
    4. 从桌面选择 X 启动
    5. 对于显示设置,请将显示编号设置为 -1 以使用多个窗口,然后选择下一步
    6. 对于选择如何启动客户端,请选择不启动客户端,然后选择下一步
    7. 对于其他设置,请选择剪贴板和主要选择本机 opengl禁用访问控制
    8. 选择下一步完成操作。

    此时会显示一个 Windows 安全警报对话框,并显示以下消息:“允许 VcXsrv windows X 服务器在这些网络上通信。选择允许访问

  1. 将 SSH 密钥 ~/.ssh/wls-vm-key 复制到 Windows VM,并将其保存到 C:\Users\azureuser.ssh

为托管服务器创建 Oracle Linux 计算机

使用 az vm create 创建两个 VM。 在这些 VM 上运行托管服务器。

以下示例使用用户名和密码对创建 Oracle Linux VM 进行身份验证。 如果需要,可以改用 TLS/SSL 身份验证。

export VM_URN=Oracle:weblogic-141100-jdk11-ol91:owls-141100-jdk11-ol91:latest

az vm create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM1 \
    --availability-set myAvailabilitySet \
    --image ${VM_URN} \
    --size Standard_DS1_v2  \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/wls-vm-key.pub \
    --public-ip-address "" \
    --nsg ""

az vm create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM2 \
    --availability-set myAvailabilitySet \
    --image ${VM_URN} \
    --size Standard_DS1_v2  \
    --admin-username azureuser \
    --ssh-key-value ~/.ssh/wls-vm-key.pub \
    --public-ip-address "" \
    --nsg ""

使用以下命令获取并显示专用 IP 地址,稍后部分将用到这些地址:

export ADMINVM_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name adminVM \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export ADMINVM_IP=$(az network nic show \
    --ids ${ADMINVM_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
export MSPVM1_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM1 \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export MSPVM1_IP=$(az network nic show \
    --ids ${MSPVM1_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
export MSPVM2_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM2 \
    --query networkProfile.networkInterfaces'[0]'.id \
    --output tsv)
export MSPVM2_IP=$(az network nic show \
    --ids ${MSPVM2_NIC_ID} \
    --query ipConfigurations'[0]'.privateIPAddress \
    --output tsv)
echo "Private IP of adminVM: ${ADMINVM_IP}"
echo "Private IP of mspVM1: ${MSPVM1_IP}"
echo "Private IP of mspVM2: ${MSPVM2_IP}"

现在,你已准备好连接到 Oracle Linux 计算机,以配置具有图形界面的 WebLogic 群集。

配置 WebLogic Server 域和群集

WebLogic Server 域是一组逻辑相关的 WebLogic Server 实例,以及在其上运行并连接到其上的资源,可以作为单个管理单元进行管理。 有关详细信息,请参阅 WebLogic Server 域

WebLogic Server 高可用性的基础是群集。 WebLogic Server 群集是一组同时运行并协同工作的 WebLogic Server 实例,以提供更高的可伸缩性和可靠性。 有关详细信息,请参阅 Oracle WebLogic 群集

群集有两种类型,如下表所示。 有关详细信息,请参阅关于动态群集

  • 动态群集:包含一个或多个基于单个共享服务器模板生成的(动态)服务器实例的群集。 创建动态群集时,动态服务器会预先配置并自动生成,使你能够在需要另一个服务器容量时轻松纵向扩展动态群集中的服务器实例数。 可以启动动态服务器,而无需首先手动配置并将其添加到群集中。
  • 已配置的群集:可以在其中手动配置和添加每个服务器实例的群集。 必须配置并添加新的服务器实例以增加服务器容量。

为了向你展示如何形成 WebLogic 群集,本教程将指导你完成创建已配置群集的过程。

使用配置向导创建域

继续使用 X 服务器和 Oracle 配置向导创建 WebLogic Server 域。

下一节显示如何在 adminVM 上创建新的 WebLogic Server 域。 确保你仍然在 Windows 计算机上;如果不是,远程连接到 myWindowsVM

  1. 从命令提示符连接到 adminVM

    在 Windows 计算机 myWindowsVM 上运行以下命令。 将 192.168.0.4 替换为你的 adminVM 专用 IP 地址:

    set SSH_KEY="C:\Users\azureuser\.ssh\wls-vm-key"
    set ADMINVM_IP="192.168.0.4"
    ssh -i %SSH_KEY% azureuser@%ADMINVM_IP%
    
  2. 使用以下命令初始化用于域配置的文件夹:

    sudo su
    
    export DOMAIN_PATH="/u01/domains"
    mkdir -p ${DOMAIN_PATH}
    chown oracle:oracle -R ${DOMAIN_PATH}
    
  3. 使用以下命令安装 X 服务器的依赖项:

    # install dependencies for X-server
    sudo yum install -y libXtst libSM libXrender
    # install dependencies to run a Java GUI client
    sudo yum install -y fontconfig urw-base35-fonts
    
  4. 使用以下命令成为 oracle 用户并设置 DISPLAY 变量:

    sudo su - oracle
    
    export DISPLAY=<my-windows-vm-private-ip>:0.0
    #export DISPLAY=192.168.0.5:0.0
    
  5. 运行以下命令以启动 Oracle 配置向导:

    bash /u01/app/wls/install/oracle/middleware/oracle_home/oracle_common/common/bin/config.sh
    

Oracle 配置向导将启动并指导你配置域。 以下页面询问域类型和位置。 选择创建新域,并将域位置设置为 /u01/domains/wlsd。 域配置已保存到此文件夹中。

Oracle 配置向导 - 创建域的屏幕截图。

选择下一步,然后选择使用产品模板创建域。 保留默认选定的模板,如以下屏幕截图所示:

Oracle 配置向导 - 模板的屏幕截图。

选择下一步,然后输入管理帐户。 将名称设置为 weblogic,并将密码设置为 Secret123456

Oracle 配置向导 - 管理帐户的屏幕截图。

选择下一步。 对于域模式,请选择生产。 对于 JDK,请保留默认选项。

Oracle 配置向导 - 域模式和 JDK 的屏幕截图。

选择下一步。 对于高级配置,请选择管理服务器节点管理器拓扑

Oracle 配置向导 - 高级配置的屏幕截图。

选择下一步,并使用 admin填写管理服务器名称。使用 adminVM 的专用 IP 填充侦听 IP 地址。 在本例中,该值为 192.168.0.4

Oracle 配置向导 - 管理服务器的屏幕截图。

选择下一步。 对于节点管理器类型,请选择每个域自定义位置,并使用 /u01/domains/wlsd/nodemanager 填写位置。 对于节点管理器凭据,用户名为 weblogic,密码为 Secret123456

Oracle 配置向导 - 节点管理器的屏幕截图。

选择下一步。 对于托管服务器,请添加以下项。 使用之前发现的 IP 地址:

服务器名称 侦听地址 侦听端口
msp1 mspVM1 的专用 IP 地址。 8001
msp2 mspVM2 的专用 IP 地址。 8001

Oracle 配置向导 - 托管服务器的屏幕截图。

选择下一步,然后使用名称 cluster1 创建群集。

Oracle 配置向导 - 群集的屏幕截图。

选择下一步。 请勿更改服务器模板动态服务器的值。 动态群集可以接受默认值。

对于将服务器分配到群集,将 msp1msp2 都分配给 cluster1

Oracle 配置向导 - 将服务器分配到群集的屏幕截图。

选择下一步。 添加计算机 adminVMmspVM1mspVM2。 使用之前发现的 IP 地址。

名称 节点管理器侦听地址 节点管理器侦听端口
mspVM1 mspVM1 的专用 IP 地址。 5556
mspVM2 mspVM2 的专用 IP 地址。 5556
adminVM adminVM 的专用 IP 地址。 5556

Oracle 配置向导 - 计算机的屏幕截图。

选择下一步。 对于将服务器分配给计算机,请将服务器 admin 分配给 adminVM、将 msp1 分配给 mspVM1、将 msp2 分配给 mspVM2

Oracle 配置向导 - 将服务器分配给计算机的屏幕截图。

选择下一步。 此时会看到配置摘要,其外观应类似于以下屏幕截图:

Oracle 配置向导 - 配置摘要的屏幕截图。

选择创建配置进度页显示进度。 所有列出的项目都应成功配置。

Oracle 配置向导 - 配置进度的屏幕截图。

最后,有一个配置结束页,用于显示管理服务器的 URL。

Oracle 配置向导 - 结束的屏幕截图。

管理服务器未运行,因此无法解析 URL。 选择下一步,然后选择完成。 你已经完成了使用群集 cluster1 配置 wlsd 域,其中包括两个托管服务器。

接下来,将域配置应用到 mspVM1mspVM2

使用 pack 和 unpack 命令创建副本

本教程使用 WebLogic Server pack 和 unpack 命令来扩展域。 有关详细信息,请参阅 Pack 和 Unpack 命令概述

  1. 使用以下步骤打包 adminVM 上的域配置,假设你仍在 adminVM 上并使用 oracle 用户登录:

    cd /u01/app/wls/install/oracle/middleware/oracle_home/oracle_common/common/bin
    bash pack.sh -domain=/u01/domains/wlsd -managed=true -template=/tmp/cluster.jar -template_name="wlsd"
    

    如果命令成功完成,你将看到类似于以下示例的输出:

    [oracle@adminVM bin]$ bash pack.sh -domain=/u01/domains/wlsd -managed=true -template=/tmp/cluster.jar -template_name="wlsd"
    << read domain from "/u01/domains/wlsd"
    >>  succeed: read domain from "/u01/domains/wlsd"
    << set config option Managed to "true"
    >>  succeed: set config option Managed to "true"
    << write template to "/tmp/cluster.jar"
    ..............................
    >>  succeed: write template to "/tmp/cluster.jar"
    << close template
    >>  succeed: close template
    

    使用以下命令并使用 scp/tmp/cluster.jar 复制到 mspVM1mspVM2。 如果系统提示输入密钥指纹,请键入 yes。 出现提示时,输入密码 Secret123456

    scp /tmp/cluster.jar azureuser@<mspvm1-private-ip>:/tmp/cluster.jar
    scp /tmp/cluster.jar azureuser@<mspvm2-private-ip>:/tmp/cluster.jar
    #scp /tmp/cluster.jar azureuser@192.168.0.6:/tmp/cluster.jar
    #scp /tmp/cluster.jar azureuser@192.168.0.7:/tmp/cluster.jar
    
  2. 使用以下说明将域配置应用于 mspVM1

    打开一个新的命令提示符,并使用以下命令连接到 mspVM1。 将 192.168.0.6 替换为你的 mspVM1 专用 IP 地址:

    set SSH_KEY="C:\Users\azureuser\.ssh\wls-vm-key"
    set MSPVM1_IP="192.168.0.6"
    ssh -i %SSH_KEY% azureuser@%MSPVM1_IP%
    

    输入连接密码。 对于此示例,密码为 Secret123456

    已使用用户 azureuser 登录 mspVM1。 接下来,使用以下命令成为 root 用户,并将 /tmp/cluster.jar 的文件所有权更新为 oracle

    sudo su
    
    chown oracle:oracle /tmp/cluster.jar
    
    export DOMAIN_PATH="/u01/domains"
    mkdir -p ${DOMAIN_PATH}
    chown oracle:oracle -R ${DOMAIN_PATH}
    

    作为 oracle 用户,使用以下命令应用域配置:

    sudo su - oracle
    
    cd /u01/app/wls/install/oracle/middleware/oracle_home/oracle_common/common/bin
    bash unpack.sh -domain=/u01/domains/wlsd -template=/tmp/cluster.jar
    

    如果命令成功完成,你将看到类似于以下示例的输出:

    [oracle@mspVM1 bin]$ bash unpack.sh -domain=/u01/domains/wlsd -template=/tmp/cluster.jar
    << read template from "/tmp/cluster.jar"
    >>  succeed: read template from "/tmp/cluster.jar"
    << set config option DomainName to "wlsd"
    >>  succeed: set config option DomainName to "wlsd"
    >>  validateConfig "KeyStorePasswords"
    >>  succeed: validateConfig "KeyStorePasswords"
    << write Domain to "/u01/domains/wlsd"
    ..................................................
    >>  succeed: write Domain to "/u01/domains/wlsd"
    << close template
    >>  succeed: close template
    
  3. 使用以下说明将域配置应用于 mspVM2

    在新命令提示符下连接 mspVM2。 将 192.168.0.7 替换为你的 mspVM2 专用 IP 地址:

    set SSH_KEY="C:\Users\azureuser\.ssh\wls-vm-key"
    set MSPVM2_IP="192.168.0.7"
    ssh -i %SSH_KEY% azureuser@%MSPVM2_IP%
    

    输入连接密码。 对于此示例,密码为 Secret123456

    已使用用户 azureuser 登录 mspVM2。 使用以下命令更改为 root 用户,更新 /tmp/cluster.jar 的文件所有权,并初始化用于域配置的文件夹:

    sudo su
    
    chown oracle:oracle /tmp/cluster.jar
    
    export DOMAIN_PATH="/u01/domains"
    mkdir -p ${DOMAIN_PATH}
    chown oracle:oracle -R ${DOMAIN_PATH}
    
    sudo su - oracle
    
    cd /u01/app/wls/install/oracle/middleware/oracle_home/oracle_common/common/bin
    bash unpack.sh -domain=/u01/domains/wlsd -template=/tmp/cluster.jar
    

你已在 mspVM1mspVM2 上复制了域配置,并且已准备好启动服务器。

启动服务器

本节中的步骤指导你执行以下两项任务:

  1. 使管理服务器和托管服务器在服务器重新启动后自动启动。
  2. 启动服务器以便立即使用。

这两项任务不容易分开,因此这两项任务的步骤是混合在一起的。

启动管理员

返回到连接到 adminVM 的命令提示符。 如果断开,请运行以下命令连接到它:

set SSH_KEY="C:\Users\azureuser\.ssh\wls-vm-key"
set ADMINVM_IP="192.168.0.4"
ssh -i %SSH_KEY% azureuser@%ADMINVM_IP%

如果不使用 oracle 用户,请使用 oracle 登录:

sudo su - oracle

以下命令将 admin 帐户持久化到 /u01/domains/wlsd/servers/admin/security/boot.properties,以便在不要求凭据的情况下自动启动 admin 服务器:

将用户名和密码替换为你的用户名和密码。

mkdir -p /u01/domains/wlsd/servers/admin/security

cat <<EOF >/u01/domains/wlsd/servers/admin/security/boot.properties
username=weblogic
password=Secret123456
EOF

使用以下命令来检查文件。 请确保它具有正确的所有权、权限和内容。

ls -la /u01/domains/wlsd/servers/admin/security/boot.properties
cat /u01/domains/wlsd/servers/admin/security/boot.properties

输出应与以下示例几乎相同:

[oracle@adminVM bin]$ ls -la /u01/domains/wlsd/servers/admin/security/boot.properties
-rw-rw-r--. 1 oracle oracle 40 Nov 28 17:00 /u01/domains/wlsd/servers/admin/security/boot.properties
[oracle@adminVM bin]$ cat /u01/domains/wlsd/servers/admin/security/boot.properties
username=weblogic
password=Secret123456

使管理服务器和节点管理器在 VM 重新启动后自动启动

为 WebLogic 管理服务器和节点管理器创建 Linux 服务,以便在重新启动后自动启动该进程。 有关详细信息,请参阅在 Oracle Linux 上使用 systemd

退出 oracle 用户,并使用 root 用户登录。

exit

sudo su

为节点管理器创建 Linux 服务:

cat <<EOF >/etc/systemd/system/wls_nodemanager.service
[Unit]
Description=WebLogic nodemanager service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
# Note that the following three parameters should be changed to the correct paths
# on your own system
WorkingDirectory=/u01/domains/wlsd
ExecStart="/u01/domains/wlsd/bin/startNodeManager.sh"
ExecStop="/u01/domains/wlsd/bin/stopNodeManager.sh"
User=oracle
Group=oracle
KillMode=process
LimitNOFILE=65535
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF

为管理服务器创建 Linux 服务:

cat <<EOF >/etc/systemd/system/wls_admin.service
[Unit]
Description=WebLogic Adminserver service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=/u01/domains/wlsd
ExecStart="/u01/domains/wlsd/startWebLogic.sh"
ExecStop="/u01/domains/wlsd/bin/stopWebLogic.sh"
User=oracle
Group=oracle
KillMode=process
LimitNOFILE=65535
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

现在,可以使用以下命令在 adminVM 上启动节点管理器和管理服务器:

sudo systemctl enable wls_nodemanager
sudo systemctl enable wls_admin
sudo systemctl daemon-reload
sudo systemctl start wls_nodemanager
sudo systemctl start wls_admin

使用 sudo systemctl status wls_admin -l 检查管理服务器状态。 当你发现类似的日志时,管理服务器应已准备就绪:

[root@adminVM wlsd]# sudo systemctl status wls_admin -l
● wls_admin.service - WebLogic Adminserver service
Loaded: loaded (/etc/systemd/system/wls_admin.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2022-09-26 07:47:34 UTC; 54s ago
Main PID: 26738 (startWebLogic.s)
    Tasks: 61 (limit: 20654)
Memory: 649.2M

... ...

Sep 26 07:48:15 adminVM startWebLogic.sh[26802]: <Sep 26, 2022, 7:48:15,411 AM Coordinated Universal Time> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to RUNNING.>

Q 退出日志监视模式。

在打开端口 70015556 之前,无法访问管理服务器。 使用以下命令打开端口:

sudo firewall-cmd --zone=public --add-port=7001/tcp
sudo firewall-cmd --zone=public --add-port=5556/tcp
sudo firewall-cmd --runtime-to-permanent
sudo systemctl restart firewalld

此时,可以使用 URL http://<adminvm-private-ip>:7001/consolemyWindowsVM 的浏览器中访问管理服务器。 验证你是否可以查看管理服务器,但暂时不要登录。 如果管理服务器未运行,请在继续操作之前进行故障排除并解决问题。 在 Azure 之外无法访问管理服务器。

启动 msp1

返回到连接到 mspVM1 的命令提示符。 如果断开,请使用以下命令连接到它:

set SSH_KEY="C:\Users\azureuser\.ssh\wls-vm-key"
set MSPVM1_IP="192.168.0.6"
ssh -i %SSH_KEY% azureuser@%MSPVM1_IP%

如果不使用 oracle 用户,请使用 oracle 登录:

sudo su - oracle

admin 帐户持久化到 /u01/domains/wlsd/servers/msp1/security/boot.properties,以便在不要求凭据的情况下自动启动 msp1。 将用户名和密码替换为你的用户名和密码。

mkdir -p /u01/domains/wlsd/servers/msp1/security

cat <<EOF >/u01/domains/wlsd/servers/msp1/security/boot.properties
username=weblogic
password=Secret123456
EOF

现在,你为节点管理器创建了一个 Linux 服务,以便在计算机重新启动时自动启动该过程。 有关详细信息,请参阅在 Oracle Linux 上使用 systemd

退出 oracle 用户,并使用 root 用户登录。

exit

#Skip this command if you are root
sudo su

为节点管理器创建 Linux 服务:

cat <<EOF >/etc/systemd/system/wls_nodemanager.service
[Unit]
Description=WebLogic nodemanager service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
# Note that the following three parameters should be changed to the correct paths
# on your own system
WorkingDirectory=/u01/domains/wlsd
ExecStart="/u01/domains/wlsd/bin/startNodeManager.sh"
ExecStop="/u01/domains/wlsd/bin/stopNodeManager.sh"
User=oracle
Group=oracle
KillMode=process
LimitNOFILE=65535
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF

接下来,启动节点管理器。

sudo systemctl enable wls_nodemanager
sudo systemctl daemon-reload
sudo systemctl start wls_nodemanager

如果节点管理器成功运行,你将看到类似于以下示例的日志:

[root@mspVM1 azureuser]# systemctl status wls_nodemanager -l
● wls_nodemanager.service - WebLogic nodemanager service
Loaded: loaded (/etc/systemd/system/wls_nodemanager.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-09-27 01:23:42 UTC; 19s ago
Main PID: 107544 (startNodeManage)
    Tasks: 15 (limit: 20654)
Memory: 146.7M

... ...

Sep 27 01:23:45 mspVM1 startNodeManager.sh[107592]: <Sep 27, 2022 1:23:45 AM Coordinated Universal Time> <INFO> <Server Implementation Class: weblogic.nodemanager.server.NMServer$ClassicServer.>
Sep 27 01:23:46 mspVM1 startNodeManager.sh[107592]: <Sep 27, 2022 1:23:46 AM Coordinated Universal Time> <INFO> <Secure socket listener started on port 5556, host /192.168.0.6>

Q 退出日志监视模式。

必须打开端口 8001 才能访问部署到群集的应用程序,打开端口 5556 才能在域内进行通信。 使用以下命令打开端口:

sudo firewall-cmd --zone=public --add-port=8001/tcp
sudo firewall-cmd --zone=public --add-port=5556/tcp
sudo firewall-cmd --runtime-to-permanent
sudo systemctl restart firewalld

启动 msp2

返回到连接到 mspVM2 的命令提示符。 如果断开,请使用以下命令连接到它:

set SSH_KEY="C:\Users\azureuser\.ssh\wls-vm-key"
set MSPVM2_IP="192.168.0.7"
ssh -i %SSH_KEY% azureuser@%MSPVM2_IP%

如果不使用 oracle 用户,请使用 oracle 登录:

sudo su - oracle

admin 帐户持久化到 /u01/domains/wlsd/servers/msp2/security/boot.properties,以便在不要求凭据的情况下自动启动 msp2。 将用户名和密码替换为你的用户名和密码。


mkdir -p /u01/domains/wlsd/servers/msp2/security

cat <<EOF >/u01/domains/wlsd/servers/msp2/security/boot.properties
username=weblogic
password=Secret123456
EOF

接下来,为节点管理器创建一个 Linux 服务。

退出 oracle 用户,并使用 root 用户登录。

exit

#SKip this command if you are in root
sudo su

为节点管理器创建 Linux 服务:

cat <<EOF >/etc/systemd/system/wls_nodemanager.service
[Unit]
Description=WebLogic nodemanager service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
# Note that the following three parameters should be changed to the correct paths
# on your own system
WorkingDirectory=/u01/domains/wlsd
ExecStart="/u01/domains/wlsd/bin/startNodeManager.sh"
ExecStop="/u01/domains/wlsd/bin/stopNodeManager.sh"
User=oracle
Group=oracle
KillMode=process
LimitNOFILE=65535
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF

启动节点管理器。

sudo systemctl enable wls_nodemanager
sudo systemctl daemon-reload
sudo systemctl start wls_nodemanager

如果节点管理器成功运行,你将看到类似于以下示例的日志:

[root@mspVM2 azureuser]# systemctl status wls_nodemanager -l
● wls_nodemanager.service - WebLogic nodemanager service
Loaded: loaded (/etc/systemd/system/wls_nodemanager.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-09-27 01:23:42 UTC; 19s ago
Main PID: 107544 (startNodeManage)
    Tasks: 15 (limit: 20654)
Memory: 146.7M

... ...

Sep 27 01:23:45 mspVM2 startNodeManager.sh[107592]: <Sep 27, 2022 1:23:45 AM Coordinated Universal Time> <INFO> <Server Implementation Class: weblogic.nodemanager.server.NMServer$ClassicServer.>
Sep 27 01:23:46 mspVM2 startNodeManager.sh[107592]: <Sep 27, 2022 1:23:46 AM Coordinated Universal Time> <INFO> <Secure socket listener started on port 5556, host /192.168.0.6>

Q 退出日志监视模式。

打开端口 80015556

sudo firewall-cmd --zone=public --add-port=8001/tcp
sudo firewall-cmd --zone=public --add-port=5556/tcp
sudo firewall-cmd --runtime-to-permanent
sudo systemctl restart firewalld

启动托管服务器

现在,从 Windows 计算机 myWindowsVM 中的浏览器打开管理控制台门户,并使用以下步骤启动托管服务器:

  1. 使用管理员帐户和密码登录到管理控制台门户。 该 URL 为 http://<adminvm-private-ip>:7001/console/。 在此示例中,管理员帐户和密码为 weblogic/Secret123456。 你会发现托管服务器的状态为关闭
  2. 域结构下,依次选择环境服务器控制,选择 msp1msp2,然后选择启动
  3. 系统可能会提示你确认启动服务器。 如果是这样,选择。 你将看到消息“已向节点管理器发送启动所选服务器的请求”。
  4. 可以选择表顶部的“刷新”图标以启动或停止该表中数据的动态刷新。 此图标显示在下一个屏幕截图中。
  5. 你会发现服务器很快就要启动了。

Oracle 配置向导 - 启动服务器的屏幕截图。

清理 Windows 计算机

你已完成 WebLogic Server 群集配置。 如果需要,请使用以下命令删除 Windows 计算机。 或者,你可以关闭 Windows 计算机 myWindowsVM 并继续将其用作正在进行的群集维护任务的跳转盒。

export WINDOWSVM_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myWindowsVM \
    --query networkProfile.networkInterfaces[0].id \
    --output tsv)
export WINDOWSVM_NSG_ID=$(az network nic show \
    --ids ${WINDOWSVM_NIC_ID} \
    --query networkSecurityGroup.id \
    --output tsv)
export WINDOWSVM_DISK_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myWindowsVM \
    --query storageProfile.osDisk.managedDisk.id \
    --output tsv)
export WINDOWSVM_PUBLIC_IP=$(az network public-ip list \
    -g ${RESOURCE_GROUP_NAME} --query [0].id \
    --output tsv)

echo "deleting myWindowsVM"
az vm delete --resource-group ${RESOURCE_GROUP_NAME} --name myWindowsVM --yes
echo "deleting nic ${WINDOWSVM_NIC_ID}"
az network nic delete --ids ${WINDOWSVM_NIC_ID}
echo "deleting public-ip ${WINDOWSVM_PUBLIC_IP}"
az network public-ip delete --ids ${WINDOWSVM_PUBLIC_IP}
echo "deleting disk ${WINDOWSVM_DISK_ID}"
az disk delete --yes --ids ${WINDOWSVM_DISK_ID}
echo "deleting nsg ${WINDOWSVM_NSG_ID}"
az network nsg delete --ids ${WINDOWSVM_NSG_ID}

使用 Azure 应用程序网关公开 WebLogic Server

现在,你已在 Windows 或 GNU/Linux 虚拟机上创建了 WebLogic Server (WLS) 群集。本节将指导你完成使用 Azure 应用程序网关向 Internet 公开 WebLogic Server 的过程。

创建 Azure 应用程序网关

若要向 Internet 公开 WebLogic Server,需要公共 IP 地址。 创建公共 IP 地址,然后将 Azure 应用程序网关与之关联。 使用 az network public-ip create 创建它,如以下示例所示:

az network public-ip create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAGPublicIPAddress \
    --allocation-method Static \
    --sku Standard

将后端服务器添加到应用程序网关后端池中。 使用以下命令查询后端 IP 地址:

export ADMINVM_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name adminVM \
    --query networkProfile.networkInterfaces[0].id \
    --output tsv)
export ADMINVM_IP=$(az network nic show \
    --ids ${ADMINVM_NIC_ID} \
    --query ipConfigurations[0].privateIPAddress \
    --output tsv)
export MSPVM1_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM1 \
    --query networkProfile.networkInterfaces[0].id \
    --output tsv)
export MSPVM1_IP=$(az network nic show \
    --ids ${MSPVM1_NIC_ID} \
    --query ipConfigurations[0].privateIPAddress \
    --output tsv)
export MSPVM2_NIC_ID=$(az vm show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name mspVM2 \
    --query networkProfile.networkInterfaces[0].id \
    --output tsv)
export MSPVM2_IP=$(az network nic show \
    --ids ${MSPVM2_NIC_ID} \
    --query ipConfigurations[0].privateIPAddress \
    --output tsv)

接下来,创建 Azure 应用程序网关。 以下示例在默认后端池中使用托管服务器创建应用程序网关:

az network application-gateway create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAppGateway \
    --public-ip-address myAGPublicIPAddress \
    --location eastus \
    --capacity 2 \
    --http-settings-port 80 \
    --http-settings-protocol Http \
    --frontend-port 80 \
    --sku Standard_V2 \
    --subnet wlsVMGateway \
    --vnet-name myVNet \
    --priority 1001 \
    --servers ${MSPVM1_IP} ${MSPVM2_IP}

托管服务器使用端口 8001 公开其工作负载。 通过指定后端端口 8001 并为其创建探测,使用以下命令更新 appGatewayBackendHttpSettings

az network application-gateway probe create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --gateway-name myAppGateway \
    --name clusterProbe \
    --protocol http \
    --host 127.0.0.1 \
    --path /weblogic/ready

az network application-gateway http-settings update \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --gateway-name myAppGateway \
    --name appGatewayBackendHttpSettings \
    --port 8001 \
    --probe clusterProbe

下一个命令预配基本规则 rule1。 本示例向管理服务器添加路径。 首先,使用以下命令创建 URL 路径映射:

az network application-gateway address-pool create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --gateway-name myAppGateway \
    --name adminServerAddressPool \
    --servers ${ADMINVM_IP}

az network application-gateway probe create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --gateway-name myAppGateway \
    --name adminProbe \
    --protocol http \
    --host 127.0.0.1 \
    --path /weblogic/ready

az network application-gateway http-settings create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --gateway-name myAppGateway \
    --name adminBackendSettings \
    --port 7001 \
    --protocol Http \
    --probe adminProbe

az network application-gateway url-path-map create \
    --gateway-name myAppGateway \
    --name urlpathmap \
    --paths /console/* \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --address-pool adminServerAddressPool \
    --default-address-pool appGatewayBackendPool \
    --default-http-settings appGatewayBackendHttpSettings \
    --http-settings adminBackendSettings \
    --rule-name consolePathRule

接下来,使用 az network application-gateway rule update 将规则类型更新为 PathBasedRouting

az network application-gateway rule update \
    --gateway-name myAppGateway \
    --name rule1 \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --http-listener appGatewayHttpListener \
    --rule-type PathBasedRouting \
    --url-path-map urlpathmap \
    --priority 1001 \
    --address-pool appGatewayBackendPool \
    --http-settings appGatewayBackendHttpSettings

现在可以使用 URL http://<gateway-public-ip-address>/console/ 访问管理服务器。 运行以下命令以获取 URL:

export APPGATEWAY_IP=$(az network public-ip show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myAGPublicIPAddress \
    --query [ipAddress] \
    --output tsv)
echo "admin console URL is http://${APPGATEWAY_IP}/console/"

验证是否可以登录到管理服务器控制台。 如果不能,请在继续操作之前排查和解决该问题。

注意

此示例使用 HTTP 设置对 WebLogic 服务器的简单访问。 如果需要安全访问,请按照应用程序网关的端到端 TLS 中的说明配置 TLS/SSL 终止。

此示例通过应用程序网关公开管理服务器控制台。 不要在生产环境中这样做。

部署示例应用程序

本节介绍如何将应用程序部署到 WebLogic Server 群集。 首先,从 Oracle 下载 testwebapp.war,并将该文件保存到本地文件系统。 然后,使用以下步骤部署应用程序:

  1. 打开 Web 浏览器。
  2. 导航到 URL 为 http://<gateway-public-ip-address>/console/ 的管理控制台门户,然后使用管理员帐户和密码登录。 在本示例中,它们是 weblogic/Secret123456
  3. 更改中心下,如果存在这样的按钮,请选择锁定并编辑。 如果此按钮不存在,请验证更改中心下是否存在某些文本(例如“当修改、添加或删除此域中的项目时,未来的更改将自动激活”)。
  4. 域结构下,选择部署。 如果你看到类似于 Unexpected error encountered while obtaining monitoring information for applications. 的错误消息,则可以放心地忽略它。 选择配置,然后选择安装。 在文本中有一个带有文本上传文件的超链接。 选择该文件夹。 选择选择文件,然后选择上一步中内置的 testwebapp.war。 选择下一步,然后选择下一步
  5. 确保选择将此部署作为应用程序安装。 选择下一步
  6. testwebapp 的可用目标下,选择部署目标 cluster1,选择下一步,然后选择完成
  7. 更改中心下,如果存在这样的按钮,请选择激活更改。 必须完成此步骤。 未能完成此步骤会导致所做的更改无法生效。 如果此按钮不存在,请验证更改中心下是否存在诸如 Future changes will automatically be activated as you modify, add or delete items in this domain 之类的文本。
  8. 域结构下,选择部署,然后选择控制。 选择 testwebapp,然后选择开始为所有请求提供服务
  9. 选择
  10. 你会看到一条消息,指出Start requests have been sent to the selected deployments.应用程序的状态必须为活动

测试 WebLogic Server 群集配置

你已完成 WebLogic Server 群集的配置以及将 Java 应用程序部署到该群集的操作。 使用以下步骤访问应用程序,以验证所有设置:

  1. 打开 Web 浏览器。
  2. 使用 URL http://<gateway-public-ip-address>/testwebapp/ 导航到应用程序。

清理资源

使用以下命令删除资源组:

az group delete --name ${RESOURCE_GROUP_NAME} --yes --no-wait

后续步骤

继续探索用于运行 Azure 上的 WebLogic Server 的选项。

有关 Oracle WebLogic 产品/服务的详细信息,请参阅 Azure 上的 Oracle WebLogic Server。 这些产品/服务全都采用自带许可模式。 他们假定你已拥有 Oracle 的相应许可证,并且已获得在 Azure 中运行产品/服务的适当许可。