你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:在 Azure 虚拟机 (VM) 上部署 JBoss EAP 群集

本文介绍如何使用 Azure 门户在 Azure 虚拟机 (VM) 上快速部署 JBoss Enterprise Application Platform (EAP) 群集。

本文使用适用于 JBoss EAP 群集的 Azure 市场产品/服务来加速你的 Azure VM 之旅。 这些产品/服务会自动预配许多资源,包括 Azure Red Hat Enterprise Linux (RHEL) VM、每个 VM 上的 JBoss EAP 实例、每个 VM 上的 OpenJDK Red Hat 内部版本、JBoss EAP 管理控制台,以及可能还包括 Azure 应用程序网关实例。 若要查看产品/服务,请使用 Azure 门户访问 RHEL VM 上的 JBoss EAP 群集解决方案。

如果你更倾向于查阅手动分步指南,了解如何在未使用 Azure 市场产品/服务启用的自动化的 Azure VM 上安装 Red Hat JBoss EAP 群集,请参阅教程:在 Azure 虚拟机上手动安装 Red Hat JBoss EAP

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

先决条件

注意

本文中将使用的 Azure 市场产品/服务支持使用 Red Hat Satellite 进行许可证管理。 Red Hat Satellite 的使用不在本快速入门的范围内。 有关 Red Hat Satellite 的概述,请参阅 Red Hat Satellite。 若要详细了解如何将 Red Hat JBoss EAP 和 Red Hat Enterprise Linux 订阅迁移到 Azure,请参阅 Red Hat Cloud Access 计划

设置 Azure Database for PostgreSQL 灵活服务器

本部分中的步骤将指导你部署 Azure Database for PostgreSQL 灵活服务器,你将在下一节中用于配置数据库连接,同时设置 JBoss EAP 群集。

首先,使用以下命令设置一些环境变量。

export RG_NAME=<db-resource-group-name>
export SERVER_NAME=<database-server-name>
export ADMIN_PASSWORD=<postgresql-admin-password>

使用以下值替换占位符,在本文中将始终使用这些值:

  • <db-resource-group-name>:要用于 PostgreSQL 灵活服务器的资源组的名称,例如 ejb040323postgresrg
  • <database-server-name>:PostgreSQL 服务器的名称,该服务器在 Azure 中应是唯一的,例如 ejb040323postgresqlserver
  • <postgresql-admin-password>:PostgreSQL 服务器的密码。 密码长度至少为 8 个字符,最多 128 个字符。 字符应包含以下字符类别中的三类:英文大写字母、英文小写字母、数字 (0-9) 以及非字母数字字符(!、$、#、% 等)。

接下来,使用以下步骤创建 Azure Database for PostgreSQL 灵活服务器:

  1. 使用以下命令创建 Azure Database for PostgreSQL 灵活服务器:

    az postgres flexible-server create \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --database-name testdb \
        --public-access 0.0.0.0  \
        --admin-user testuser \
        --admin-password ${ADMIN_PASSWORD} \
        --yes
    
  2. 使用以下命令获取 PostgreSQL 服务器的主机:

    export DB_HOST=$(az postgres flexible-server show \
        --resource-group ${RG_NAME} \
        --name ${SERVER_NAME} \
        --query "fullyQualifiedDomainName" \
        --output tsv)
    
  3. 使用以下命令获取 PostgreSQL 服务器的 Java Database Connectivity (JDBC) 连接 URL:

    echo jdbc:postgresql://${DB_HOST}:5432/testdb
    

    记下输出,本文后面会将输出用作 PostgreSQL 服务器的数据源连接字符串。

在 Azure VM 上部署 JBoss EAP 群集

本部分中的步骤将指导你在 Azure VM 上部署 JBoss EAP 群集。

使用以下步骤在 Azure VM 产品/服务上查找 JBoss EAP 群集:

  1. 访问 https://aka.ms/publicportal 以登录到 Azure 门户。

  2. 在 Azure 门户顶部的搜索栏中输入 JBoss EAP。 在搜索结果中,在“市场”部分中选择“VM 上的 JBoss EAP 群集”。

    Azure 门户的屏幕截图,其中显示了搜索结果中的 Azure VM 上的 JBoss EAP Server。

  3. 在下拉菜单中,确保选中“即用即付”。

或者,你也可以直接转到 Azure VM 上的 JBoss EAP 群集产品/服务。 在这种情况下,已为你选择正确的计划。

无论哪种情况,此产品/服务都通过在部署时提供 Red Hat 订阅,在 Azure VM 上部署 JBoss EAP 群集。 此产品/服务使用基本 VM 的即用即付付款配置在 Red Hat Enterprise Linux 上运行群集。

以下步骤演示了如何填写“基本信息”窗格,如以下屏幕截图所示。

Azure 门户的屏幕截图,其中显示了 VM 上的 JBoss EAP 群集的“基本信息”窗格。

  1. 在产品/服务页面,选择“创建”。
  2. 在“基本信息”窗格中,确保“订阅”字段中显示的值与先决条件部分中列出的角色的值相同。
  3. 必须在空资源组中部署产品/服务。 在“资源组”字段中,选择“新建”,然后填写资源组的值。 由于资源组在订阅中必须是唯一的,因此请选择一个唯一名称。 拥有唯一名称的一种简单方法是使用首字母缩写、今天的日期和一些标识符的组合。 例如,ejb040323jbosseapcluster
  4. 在“实例详细信息”下,选择部署的区域。
  5. 对于“虚拟机大小”,保留默认的 VM 大小。
  6. 对于“JDK 版本”,保留默认选项“OpenJDK 17”。
  7. 对于用户名,保留默认值“jbossuser”。
  8. 对于“身份验证类型”,保留默认选项“密码”。
  9. 在“密码”字段中输入密码。 对“确认密码”使用相同的值。
  10. 对“要创建的虚拟机数量”使用“3”
  11. 在“可选基本配置”下,对于“接受可选配置的默认值”,保留默认选项“是”。
  12. 滚动到“基本信息”窗格的底部,留意用于报告问题、获取帮助和共享反馈的有用链接。
  13. 选择“下一步: JBoss EAP 设置”。

以下步骤演示了如何填写“JBoss EAP 设置”窗格,如以下屏幕截图所示。

Azure 门户的屏幕截图,其中显示了 VM 上的 JBoss EAP 群集的“JBoss EAP 设置”窗格。

  1. 对于“使用托管域或独立主机形成群集”,保留默认选项“托管域”
  2. 对于“JBoss EAP 管理员用户名”,保留默认值“jbossadmin”。
  3. 在“JBoss EAP 密码”字段中填写 JBoss EAP 密码。 对“确认密码”使用相同的值。 保存该值以供以后使用。
  4. 对于“连接到现有 Red Hat Satellite Server?”,保留默认选项“否”。
  5. 选择“下一步: Azure 应用程序网关”

下面的步骤演示了如何填写“Azure 应用程序网关”窗格,如以下屏幕截图所示。

Azure 门户的屏幕截图,其中显示了 VM 上的 JBoss EAP 群集的“Azure 应用程序网关”窗格。

  1. 针对“连接到 Azure 应用程序网关?”,选择“是”

  2. 选择“下一页:网络”。

    使用此窗格可以自定义 JBoss EAP 群集部署到的虚拟网络和子网。 有关虚拟网络的信息,请参阅创建、更改或删除虚拟网络。 接受此窗格上的默认值。

  3. 选择“下一步: 数据库”。

以下步骤演示了如何填写“数据库”窗格(如以下屏幕截图所示),然后开始部署。

Azure 门户的屏幕截图,其中显示了 VM 上的 JBoss EAP 群集的“数据库”窗格。

  1. 为“连接到数据库?”选择“是”
  2. 为“选择数据库类型”选择“PostgreSQL”
  3. 对于“JNDI 名称”,填写“java:jboss/datasources/JavaEECafeDB”
  4. 为“数据源连接字符串” (jdbc:postgresql://<host>:<port>/<database>) 提供之前保存的 PostgreSQL 服务器的 JDBC 连接 URL
  5. 为”数据库用户名”填写 testuser
  6. 为“数据库密码”填写之前指定的占位符 <postgresql-admin-password> 的值。 对“确认密码”使用相同的值。
  7. 选择“查看 + 创建”。 确保绿色的“验证通过”消息显示在顶部。 如果未显示该消息,请解决任何验证问题,然后再次选择“查看 + 创建”。
  8. 选择创建
  9. 在“部署正在进行”页面跟踪部署进度。

根据所选区域中的网络状况和其他活动,部署可能需要长达 35 分钟才能完成。 之后,你应当会看到部署页上显示文本“你的部署已完成”。

验证部署功能

使用以下步骤从 Red Hat JBoss Enterprise Application Platform 管理控制台验证 Azure VM 上的 JBoss EAP 群集的部署功能:

  1. 在“部署”页上,选择“输出”

  2. 选择“adminConsole”旁边的复制图标。

    Azure 门户的屏幕截图,其中突出显示了 adminConsole URL 的部署输出。

  3. 将 URL 粘贴到已连接 Internet 的 Web 浏览器中,然后按 Enter。 你应会看到熟悉的“Red Hat JBoss Enterprise Application Platform”管理控制台登录屏幕,如以下屏幕截图所示。

    JBoss EAP 管理控制台登录屏幕的屏幕截图。

  4. 在“JBoss EAP 管理员用户名”中填写“jbossadmin”,提供之前为“密码”指定的“JBoss EAP 密码”的值,然后选择“登录”。

  5. 你应会看到熟悉的“Red Hat JBoss Enterprise Application Platform”管理控制台欢迎页面,如以下屏幕截图所示。

    JBoss EAP 管理控制台欢迎页的屏幕截图。

  6. 选择“运行时”选项卡。在导航窗格中,选择“拓扑”。 应会看到群集包含一个域控制器“主节点”和两个工作器节点,如以下屏幕截图所示:

    JBoss EAP 管理控制台“运行时”扑拓的屏幕截图。

  7. 选择“配置”选项卡。在导航窗格中,依次选择“配置文件”>“ha”>“数据源和驱动程序”>“数据源”。 应会看到列出的数据源“dataSource-postgresql”,如以下屏幕截图所示:

    JBoss EAP 管理控制台“配置”选项卡的屏幕截图,其中选择了“数据源”。

使管理控制台保持打开状态。 在下一部分中,你将使用它将示例应用部署到 JBoss EAP 群集。

将应用部署到 JBoss EAP 群集

使用以下步骤将 Java EE Cafe 示例应用程序部署到 Red Hat JBoss EAP 群集:

  1. 使用以下步骤构建 Java EE Cafe 示例。 以下步骤假定你使用安装了 Git 和 Maven 的本地环境:

    1. 使用以下命令从 GitHub 克隆源代码,并查看与本文版本对应的标记:

      git clone https://github.com/Azure/rhel-jboss-templates.git --branch 20230418 --single-branch
      

      如果收到错误消息并显示文本“You are in 'detached HEAD' state”,可以忽略。

    2. 运行以下命令以生成源代码:

      mvn clean install --file rhel-jboss-templates/eap-coffee-app/pom.xml
      

      此命令会创建 rhel-jboss-templates/eap-coffee-app/target/javaee-cafe.war 文件。 下一步需要上传此文件。

  2. 在 Red Hat JBoss Enterprise Application Platform 管理控制台中使用以下步骤,将“javaee-cafe.war”上传到“内容存储库”

    1. 在 Red Hat JBoss EAP 管理控制台的“部署”选项卡中,在导航面板中选择“内容存储库”。

    2. 选择“添加”,然后选择“上传内容”

      JBoss EAP 管理控制台“部署”选项卡的屏幕截图,其中突出显示了“上传内容”菜单项。

    3. 使用浏览器文件选择器选择“javaee-cafe.war”文件。

    4. 选择下一步

    5. 接受下一个屏幕上的默认值,然后选择“完成”

    6. 选择“查看内容”

  3. 使用以下步骤将应用程序部署到 main-server-group

    1. 从“内容存储库”中选择“javaee-cafe.war”

    2. 打开下拉菜单,选择“部署”

    3. 选择“main-server-group”作为部署“javaee-cafe.war”的服务器组。

    4. 选择“部署”以启动部署。 应该会看到类似于以下屏幕截图的通知:

      部署成功通知的屏幕截图。

你现在已经完成了 Java EE 应用程序的部署。 可以使用以下步骤访问应用程序并验证所有设置:

  1. 使用以下命令获取 Azure 应用程序网关的公共 IP 地址。 将占位符 <resource-group-name> 替换为部署 JBoss EAP 群集的资源组的名称。

    az network public-ip show \
        --resource-group <resource-group-name> \
        --name gwip \
        --query '[ipAddress]' \
        --output tsv
    
  2. 复制输出,这是已部署的 Azure 应用程序网关的公共 IP 地址。

  3. 打开一个已连接 Internet 的 Web 浏览器。

  4. 使用 URL http://<gateway-public-ip-address>/javaee-cafe 导航到应用程序。 将占位符 <gateway-public-ip-address> 替换为先前复制的 Azure 应用程序网关的公共 IP 地址。

  5. 尝试添加和删除 coffee。

清理资源

若要避免 Azure 费用,应清除不需要的资源。 如果不再需要 Azure VM 上部署的 JBoss EAP 群集,请注销 JBoss EAP 服务器并移除 Azure 资源。

运行以下命令,从 Red Hat 订阅管理中注销 JBoss EAP 服务器和 VM。 将占位符 <resource-group-name> 替换为部署 JBoss EAP 群集的资源组的名称。

# Unregister domain controller
az vm run-command invoke \
    --resource-group <resource-group-name> \
    --name jbosseapVm-adminVM \
    --command-id RunShellScript \
    --scripts "sudo subscription-manager unregister"

# Unregister host controllers
az vm run-command invoke \
    --resource-group <resource-group-name> \
    --name jbosseapVm1 \
    --command-id RunShellScript \
    --scripts "sudo subscription-manager unregister"
az vm run-command invoke \
    --resource-group <resource-group-name> \
    --name jbosseapVm1 \
    --command-id RunShellScript \
    --scripts "sudo subscription-manager unregister"

运行以下命令,以删除部署了 JBoss EAP 群集和 Azure Database for PostgreSQL 灵活服务器的两个资源组。 将占位符 <resource-group-name> 替换为部署 JBoss EAP 群集的资源组的名称。 确保使用部署 PostgreSQL 灵活服务器的资源组的名称设置环境变量 $RG_NAME

az group delete --name <resource-group-name> --yes --no-wait
az group delete --name $RG_NAME --yes --no-wait

后续步骤

详细了解在 Azure 上部署 JBoss EAP 的选项: