教程:将 JBoss EAP 应用程序服务器迁移到具有高可用性和灾难恢复的 Azure 虚拟机
本教程介绍如何在 Azure 虚拟机(VM)上使用 JBoss EAP 实现 Java 的高可用性和灾难恢复(HA/DR)。 该解决方案演示如何使用在 JBoss EAP 应用程序服务器上运行的简单数据库驱动的 Jakarta EE 应用程序实现低恢复时间目标(RTO)和恢复点目标(RPO)。 HA/DR 是一个复杂的主题,其中包含许多可能的解决方案。 最佳解决方案取决于你的独特要求。 有关实现 HA/DR 的其他方法,请参阅本文末尾的资源。
在本教程中,您将学习如何:
- 在 Azure VM 上设置 JBoss EAP 群集。
- 使用 Azure 优化的最佳做法来实现高可用性和灾难恢复。
- 在配对区域中设置 Microsoft Azure SQL 数据库故障转移组。
- 使用 Azure Site Recovery 为群集设置灾难恢复。
- 设置 Azure 流量管理器。
- 测试从主服务器故障转移到辅助服务器。
下图演示了生成的体系结构:
Azure 流量管理器会检查区域的运行状况,并相应地将流量路由到应用程序层。 主要区域已全面部署 JBoss EAP 群集。 在主要区域受到 Azure Site Recovery 的保护后,可以在故障转移期间还原次要区域。 因此,主要区域正在主动为用户的网络请求提供服务,而次要区域是被动的,并且仅在主要区域遇到服务中断时激活以接收流量。
Azure 流量管理器检测 JBoss EAP 群集中部署的应用的运行状况,以实现条件路由。 应用程序层的异地故障转移 RTO 取决于关闭主群集、还原辅助群集、启动 VM 和运行辅助 JBoss EAP 群集的时间。 RPO 取决于 Azure Site Recovery 和 Azure SQL 数据库的复制策略,因为群集数据存储并复制在虚拟机的本地存储中,应用程序数据在 Azure SQL 数据库故障转移组中持久保存并复制。
上图显示了 主要区域 和 次要区域 作为构成 HA/DR 体系结构的两个区域。 这些区域必须是 Azure 配对区域。 有关配对区域的详细信息,请参阅 Azure 跨区域复制功能。 本文使用美国东部和美国西部作为两个区域,但它们可以是适合你的方案的任何配对区域。 有关区域配对的列表,请参阅 Azure 跨区域复制的 Azure 配对区域部分。
数据库层由包含主服务器和辅助服务器的 Azure SQL 数据库故障转移组组成。 读/写侦听器终结点始终指向主服务器,并连接到每个区域中的 JBoss EAP 群集。 异地故障转移都会将组中所有的辅助数据库切换为主角色。 有关 Azure SQL 数据库的异地故障转移 RPO 和 RTO,请参阅业务连续性概述。
本教程是使用 Azure Site Recovery 和 Azure SQL 数据库服务编写的,因为本教程依赖于这些服务的 HA 功能。 其他数据库选项是可能的,但必须考虑所选任何数据库的 HA 功能。
先决条件
- 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
- 请确保你在订阅中具有
Contributor
角色。 可以使用使用 Azure 门户列出 Azure 角色分配中的步骤来验证分配。 - 准备安装了 Windows、GNU/Linux 或 macOS 的本地计算机。
- 安装并设置 Git。
- 安装 Java SE 的实现,版本 17 或更高(例如,Microsoft 的 OpenJDK版本)。
- 安装 Maven3.9.3 或更高版本。
在配对区域中设置 Azure SQL 数据库故障转移组
在本部分中,将在配对区域中创建一个 Azure SQL 数据库故障转移组,用于 JBoss EAP 群集和应用。
首先,按照 快速入门中的 Azure 门户步骤创建主 Azure SQL 数据库:创建单一数据库 - Azure SQL 数据库。 按照清理资源部分的步骤进行操作,但不包括该部分。 在浏览本文时,请使用以下说明,然后在创建和配置 Azure SQL 数据库后返回到本文。
到达创建单一数据库部分时,请使用以下步骤:
在创建新资源组的步骤 4 中,记下 资源组名称 值,例如
sqlserver-rg-gzh032124
。在数据库名称的步骤 5 中,记下 数据库名称 值,例如
mySampleDatabase
。在创建服务器的步骤 6 中,使用以下步骤:
- 填写唯一的服务器名称 -例如,
sqlserverprimary-gzh032124
。 - 对于“位置”,请选择“(美国)美国东部”。
- 对于 身份验证方法,请选择 使用 SQL 身份验证。
- 记下 服务器管理员登录名 值,例如
azureuser
。 - 记下 密码 值。
- 填写唯一的服务器名称 -例如,
在步骤 8 中,对于工作负载环境,请选择开发。 查看说明,并考虑工作负载的其他选项。
在步骤 10 中,对于计算层,请选择已预配。
在步骤 11 中,对于 备份存储冗余,请选择 本地冗余备份存储。 请考虑备份的其他选项。 有关详细信息,请参阅 Azure SQL 数据库中 自动备份的 备份存储冗余 部分。
在步骤 14 中,在防火墙规则配置中,对于允许 Azure 服务和资源访问此服务器,请选择是。
在到达查询数据库部分时,请使用以下步骤,而不是另一篇文章中的步骤:
在步骤 3 中,输入 SQL 身份验证 服务器管理员登录信息进行登录。
注意
如果登录失败,出现类似于不允许 IP 地址为“xx.xx.xx.xx”的客户端访问该服务器的错误消息,请在错误消息末尾选择 Allowlist IP xx.xx.xx.xx on server <your-sqlserver-name>。 等待服务器防火墙规则完成更新,然后再次选择确定。
在步骤 5 中运行示例查询后,清除编辑器并输入以下查询,然后再次选择 运行:
CREATE TABLE ispn_entry_sessions_javaee_cafe_war ( id VARCHAR(255) PRIMARY KEY, -- ID Column to hold cache entry ids data VARBINARY(MAX), -- Data Column to hold cache entry data timestamp BIGINT, -- Timestamp Column to hold cache entry timestamps segment INT );
成功运行后,应会看到消息 查询成功:受影响的行:0。
数据库表
ispn_entry_sessions_javaee_cafe_war
用于存储 JBoss EAP 群集的会话数据。
然后,按照为 Azure SQL 数据库配置故障转移组中的 Azure 门户步骤,创建 Azure SQL 数据库故障转移组。 只需以下部分:创建故障转移组和测试计划的故障转移。 完成本文时,请使用以下步骤,然后在创建和配置 Azure SQL 数据库故障转移组后返回到本文:
到达创建故障转移组部分时,请使用以下步骤:
在创建故障转移组的步骤 5 中,输入并记下唯一的故障转移组名称,例如,
failovergroup-gzh032124
。在配置服务器的步骤 5 中,选择用于创建新的辅助服务器的选项,然后使用以下步骤:
- 输入唯一的服务器名称 -例如,
sqlserversecondary-gzh032124
。 - 输入与主服务器相同的服务器管理员和密码。
- 对于位置,请选择(美国)美国西部 2。
- 请确保已选中允许 Azure 服务访问服务器。
- 输入唯一的服务器名称 -例如,
在步骤 5 中,若要在组中配置
数据库,请选择在主服务器中创建的数据库,例如 。
完成测试计划的故障转移部分中的所有步骤后,保持故障转移组页面打开,稍后将其用于 JBoss EAP 群集的故障转移测试。
注意
本文将指导你创建具有 SQL 身份验证的 Azure SQL 数据库单一数据库,以便于简单起见,因为本文重点介绍的 HA/DR 设置已经非常复杂。 更安全的做法是使用 azure SQL 的
在 Azure VM 上设置主 JBoss EAP 群集
在本部分中,你将使用 VM 上的 JBoss EAP 群集服务在 Azure VM 上创建主 JBoss EAP 群集。 稍后使用 Azure Site Recovery 在故障转移期间从主群集还原辅助群集。
部署主 JBoss EAP 群集
首先,在浏览器中打开 VM 上的 JBoss EAP 群集服务,然后选择创建。 应会看到产品/服务的基本信息窗格。
使用以下步骤填写基本信息窗格:
- 确保为订阅显示的值与“先决条件”部分中列出的角色的值相同。
- 必须在空资源组中部署产品/服务。 在 资源组 字段中,选择 创建新 并填写资源组的唯一值,例如
jboss-eap-cluster-eastus-gzh032124
。 - 在 实例详细信息下,对于 区域,请选择 美国东部。
- 请对密码输入密码,并对确认密码使用相同的值。
- 对于要创建的虚拟机数,请输入 3。
- 将其他字段保留为默认值。
- 选择下一步,转到 JBoss EAP 设置窗格。
使用以下步骤来填写 JBoss EAP 设置窗格:
- 在“JBoss EAP 密码”字段中填写 JBoss EAP 密码。 对“确认密码”使用相同的值。 记下供以后使用的值。
- 将其他字段保留为默认值。
- 选择下一步,转到 Azure 应用程序网关窗格。
使用以下步骤填写 Azure 应用程序网关窗格:
- 对于连接到 Azure 应用程序网关?,选择是。
- 将其他字段保留为默认值。
- 选择下一步,转到网络窗格。
应该在网络窗格中看到所有字段都预先填充了默认值。 选择下一步,转到数据库窗格。
使用以下步骤填写数据库窗格:
- 对于连接到数据库?,请选择是。
- 为 选择数据库类型,选择 Microsoft SQL Server。
- 对于 JNDI 名称,请输入 java:jboss/datasources/JavaEECafeDB。
- 对于数据源连接字符串 (jdbc:sqlserver://<host>:<port>;database=<database>),将占位符替换为在上一节中为 Azure SQL 数据库的故障转移组记下的值,例如
jdbc:sqlserver://failovergroup-gzh032124.database.windows.net:1433;database=mySampleDatabase
。 - 对于数据库用户名,请输入服务器管理员登录名和在上一节中记下的故障转移组名称,例如
azureuser@failovergroup-gzh032124
。 - 对于数据库密码,请输入你之前记下的服务器管理员登录密码。 输入与 确认密码相同的值。
- 选择“查看 + 创建”。
- 等待 运行最终验证... 成功完成,然后选择 创建。
过了一会儿,应会看到部署页,其中显示了部署正在进行中。
注意
如果在正在运行最终验证... 期间看到任何问题,请修复这些问题,然后重试。
根据所选区域中的网络条件和其他活动,部署最多可能需要 35 分钟才能完成。 之后,你应当会看到部署页上显示文本“你的部署已完成”。
验证部署的功能
使用以下步骤从 Red Hat JBoss Enterprise Application Platform 管理控制台验证 Azure VM 上 JBoss EAP 群集的部署功能:
在部署完成页面上,选择输出。
选择“adminConsole”旁边的复制图标。
将 URL 粘贴到连接 Internet 的 Web 浏览器中,然后按 Enter。 应会看到熟悉的 Red Hat JBoss Enterprise Application Platform 管理控制台登录屏幕,如以下屏幕截图所示。
在“JBoss EAP 管理员用户名”中填写“jbossadmin”,提供之前为“密码”指定的“JBoss EAP 密码”的值,然后选择“登录”。
应会看到熟悉的 Red Hat JBoss Enterprise Application Platform 管理控制台欢迎页,如以下屏幕截图所示。
选择“运行时”选项卡。在导航窗格中,选择“拓扑”。 应会看到群集包含一个域控制器 主 和两个工作器节点,如以下屏幕截图所示:
使管理控制台保持打开状态。 在下一部分中,使用它将示例应用部署到 JBoss EAP 群集。
配置群集
使用以下步骤为所有应用程序服务器配置数据库分布式会话:
在导航面板中选择配置。 然后选择配置文件>ha>Infinspan>Web。
在 缓存 列中,选择 添加分布式缓存。
对于名称,请输入 azure-session,然后选择添加。
你应该会看到分布式缓存 azure-session 已成功添加消息。 如果未看到此消息,请检查通知中心。 在继续操作之前,必须看到此消息。
添加缓存后,选择 azure-session>视图。
选择存储。
更改下拉菜单以显示 JDBC,然后选择 添加。
对于 数据源,请选择 dataSource-mssqlserver,然后选择 添加。
应会看到消息 JDBC 已成功添加。 如果未看到此消息,请检查通知中心。 在继续操作之前,必须看到此消息。
在存储:JDBC 页面上,选择编辑。 设置以下属性值:
- 将方言设置为 SQL_SERVER。
- 将钝化 设置为关闭。
- 将清除设置为关闭。
- 将共享设置为打开。
选择 保存。
应会看到消息 JDBC 已成功修改。 如果未看到此消息,请检查通知中心。 在继续操作之前,必须看到此消息。
通过选择字符串表>编辑来编辑字符串表。 填写以下值,然后选择 保存:
- 将前缀设置为 ispn_entry_sessions。
- 将 ID 列/ID 列名称设置为 id。
- 将 ID 列/ID 列类型设置为 VARCHAR(255)。
- 将数据列/数据列名称设置为数据。
- 将数据列/数据列类型设置为 VARBINARY(MAX)。
- 将时间戳列/时间戳列名称设置为时间戳。
- 将 时间戳列/时间戳列类型 设置为 BIGINT。
此处的任何拼写错误都会导致整个系统失败。 在继续操作之前,请仔细检查填写的值。
选择 保存。
你应该会看到字符串表已成功修改消息。 如果未看到此消息,请检查通知中心。 在继续操作之前,必须看到此消息。
在顶部导航面板中选择配置。 然后选择配置文件>ha>可分发 Web>视图。
选择 Infinspan SSO>默认>编辑。
将 缓存 的值设置为 azure 会话,然后选择 保存。
你应该会看到 Infinispan 单一登录管理默认值已成功修改消息。 如果未看到此消息,请检查通知中心。 在继续操作之前,必须看到此消息。
使用拓扑重新加载或重启受影响的服务器。
在导航窗格中选择运行时,然后选择拓扑。
对于 main-server-group 列中的每一行,选择服务器后,然后选择重新加载。
重新加载的单元格现在应显示为绿色。
将应用部署到 JBoss EAP 群集
使用以下步骤将 JavaEE Cafe 示例应用程序部署到 Red Hat JBoss EAP 群集:
使用以下步骤生成 Java EE 咖啡馆示例。 这些步骤假定你安装了 Git 和 Maven 的本地环境。
使用以下命令从 GitHub 克隆源代码,并查看与此版本的文章对应的标记:
git clone https://github.com/Azure/rhel-jboss-templates.git --branch 20240904 --single-branch
如果看到包含文本
You are in 'detached HEAD' state
的错误消息,则可以安全地忽略它。使用以下命令生成源代码:
mvn clean install --file rhel-jboss-templates/eap-coffee-app/pom.xml
此命令会创建 rhel-jboss-templates/eap-coffee-app/target/javaee-cafe.war 文件。 你将在下一步上传这个文件。
在 Red Hat JBoss 企业应用程序平台管理控制台中使用以下步骤,将 javaee-cafe.war 上传到内容存储库:
使用以下步骤将应用程序部署到
main-server-group
:
现已部署完 JavaEE 应用程序。 使用以下步骤访问应用程序并验证所有设置:
在 Azure 门户顶部的搜索框中,输入 资源组,然后在搜索结果中选择 资源组。
选择资源组的名称 -例如,
jboss-eap-cluster-eastus-gzh032124
。选择资源组中的应用程序网关资源。
从 概述 窗格中复制 前端公共 IP 地址。
使用 IP 地址和路径(例如,
http://40.88.26.22/javaee-cafe
)构造 URL。将 URL 粘贴到 Web 浏览器导航栏中,然后按 Enter。 应会看到 JavaEE Cafe 应用程序主页。
创建两种不同名称和价格的咖啡。 应该会在以下屏幕截图中看到类似页面:
在 Azure VM 上设置辅助 JBoss EAP 群集
部署辅助 JBoss EAP 群集
请按照“部署主 JBoss EAP 群集”中的步骤,在配对区域部署次要 JBoss EAP 群集。 此示例使用西部美国 2 区域。 在使用此优惠时,将配置辅助 JBoss EAP 群集,以便您可以使用 Azure Site Recovery 还原拓扑结构。
在浏览器中打开 VM 上的 JBoss EAP 群集服务,然后选择创建。 应会看到产品/服务的基本信息窗格。
使用以下步骤填写基本信息窗格:
在 资源组 字段中,选择 创建新 并填写资源组的唯一值,例如
jboss-eap-cluster-westus-gzh032124
。在实例详细信息下,选择区域,选择美国西部 2。
将其他群集保留为与主群集相同。
对于 JBoss EAP 设置 窗格,请将其与主群集保持一致。
对于 Azure 应用程序网关 窗格,请将其与主群集保持一致。
对于“网络”窗格,打开 虚拟网络 设置并输入地址空间,该地址空间与主群集的值相同。
对于数据库窗格,请使用以下步骤:
- 将其与主群集保持一致。
- 选择“查看 + 创建”。
- 等待 运行最终验证... 成功完成,然后选择 创建。
过了一会儿,应会看到部署页,其中显示了部署正在进行中。
清理次要区域中未使用的资源
使用以下步骤清理名为 jboss-eap-cluster-westus-gzh032124
的资源组中未使用的资源,这些资源稍后将在主要区域由 Azure Site Recovery 服务复制。 此方法似乎浪费了,但可确保辅助资源组与主要资源组具有相同的配置。 生产级解决方案将使用更多的基础结构即代码技术来确保相同的配置,但这超出了本文的范围。
在 Azure 门户顶部的搜索框中,输入 资源组,然后在搜索结果中选择 资源组。
为新创建的次要区域选择资源组的名称。
在标注为筛选任何字段... 的文本区域旁边,选择 X 以删除所有筛选器。
选择添加筛选器。 将 筛选器 设置为 类型。 将运算符设置为等于。
选择字段值旁边的下拉菜单。
切换全选复选框,直到未选中所有值为止。
确保已选择以下所有类型:
- 虚拟机
- 磁盘
- 专用终结点
- 网络接口
- 存储帐户
选择字段值旁边的下拉菜单以关闭下拉菜单。 你必须将 5 种资源类型视为值的值。
选择 应用。
选中位于筛选列表顶部的名称标签旁边的复选框。
选择 删除。
输入 删除 以确认删除,然后选择 删除。 在通知中监视进程,直到它完成。
使用 Azure Site Recovery 为群集设置灾难恢复
在本节中,你将使用 Azure Site Recovery 为主群集中的 Azure VM 设置灾难恢复,具体步骤请参阅教程:为 Azure VM 设置灾难恢复。 只需以下部分:创建恢复服务保管库和启用复制。 在完成本文时请注意以下步骤,然后在主群集受保护后返回到本文:
访问 创建恢复服务保管库部分时,请使用以下步骤:
在 资源组的步骤 5 中,在订阅中创建具有唯一名称的新资源组,例如
recovery-service-westus-gzh032124
。在步骤 6 中,为 保管库名称提供一个保管库名称,例如
recovery-service-vault-westus-gzh032124
。在 区域的步骤 7 中,选择 美国西部 2。
在步骤 8 中选择查看 + 创建之前,请选择下一步:冗余。 在冗余窗格中,为备份存储冗余选择异地冗余,并为跨区域还原选择启用。
注意
确保在冗余窗格中为备份存储冗余选择异地冗余,为跨区域还原选择启用。 否则,无法将主群集的存储复制到次要区域。
按照启用 Site Recovery 部分中的步骤启用 Site Recovery。
在到达启用复制部分时,请使用以下步骤:
使用以下步骤选择源设置:
对于“区域”,请选择“美国东部”。
对于 资源组,请选择在其中部署主群集的资源,例如,
jboss-eap-cluster-eastus-gzh032124
。附注
如果所需的资源组未列出,你可以先为区域选择美国西部 2,然后切换回美国东部。
将其他字段保留为默认值
选择虚拟机。 在 虚拟机中,选择列出的所有 VM - 例如,本教程的主群集中部署了 3 个 VM。
查看复制设置时,请使用以下步骤:
对于目标位置,请选择美国西部 2。
对于目标资源组,请选择在其中部署服务恢复保管库的资源组,例如
jboss-eap-cluster-westus-gzh032124
。如果未显示预期的资源组,请选择另一个区域,然后返回 美国西部 2。
记下新的故障转移虚拟网络和故障转移子网,它们是从主要区域中的虚拟网络和子网映射而来的。
保留其他字段的默认值。
对于管理,请采取以下步骤:
对于 复制策略,请使用默认策略 24 小时保留策略。 还可以为企业创建新的策略。
保留其他字段的默认值。
对于评审,请采取以下步骤:
接下来,创建一个恢复计划,包括所有复制的项目,以便它们可以一起进行故障转移。 使用创建恢复计划中的说明,并进行以下自定义:
- 在步骤 2 中,输入计划的名称-例如,
recovery-plan-gzh032124
。 - 在步骤 3 中,对于源,选择美国东部,对于目标,选择美国西部 2。
- 在步骤 4 中,对于选择项,请选择所有受保护的项 - 例如本教程的 3 个受保护的 VM。
请保持页面处于打开状态,以便以后测试故障转移。
设置 Azure 流量管理器
在本部分中,你将创建一个 Azure 流量管理器,用于跨 Azure 区域将流量分发到面向公众的应用程序。 主终结点指向主要区域中应用程序网关的公共 IP 地址,辅助终结点指向次要区域中应用程序网关的公共 IP 地址。
按照 快速入门中的说明创建 Azure 流量管理器配置文件:使用 Azure 门户创建流量管理器配置文件。 只需以下部分:创建流量管理器配置文件 和 添加流量管理器终结点。 在完成这些部分时,请使用以下步骤,然后在创建和配置 Azure 流量管理器后返回到本文。
当你到达部分 创建流量管理器配置文件时,请在步骤 2 创建流量管理器配置文件中,使用以下步骤:
- 为名称记下唯一的流量管理器配置文件名称,例如
tm-profile-gzh032124
。 - 记下 资源组 的新资源组名称,例如
myResourceGroupTM1
。
- 为名称记下唯一的流量管理器配置文件名称,例如
到达添加流量管理器终结点部分时,请使用以下步骤:
在步骤 2 中打开流量管理器配置文件后,在配置页中,使用以下步骤:
对于 DNS 生存时间 (TTL),输入 10。
在快速终结点故障转移设置下,使用以下值:
- 对于探测内部,请选择 10。
- 对于容许的失败次数,输入 3。
- 对于探测超时,请输入 5。
选择 保存。 等待它完成。
在步骤 4 中,若要添加主终结点
myPrimaryEndpoint
,请使用以下步骤:对于 目标资源类型,请选择 公共 IP 地址。
选择 选择公共 IP 地址 下拉列表,并输入 美国东部 区域中应用程序网关的公共 IP 地址的名称。 应看到一个匹配的条目。 为公共 IP 地址选择它。
在添加故障转移辅助终结点
myFailoverEndpoint
的步骤 6 中,使用以下步骤:对于 目标资源类型,请选择 公共 IP 地址。
选择选择公共 IP 地址下拉列表,然后在美国西部 2 区域中输入应用程序网关的公共 IP 地址的名称。 应看到一个匹配的条目。 为公共 IP 地址选择它。
等待一段时间。 选择刷新,直到终结点
myPrimaryEndpoint
的监视状态为联机,终结点myFailoverEndpoint
的监视状态为已降级。
接下来,使用以下步骤验证部署到主 JBoss EAP 群集的示例应用是否可从流量管理器配置文件访问:
为创建的流量管理器配置文件选择概述。
检查并复制流量管理器配置文件的 DNS 名称。 向其追加 /javaee-café/。 例如,
http://tm-profile-gzh032124.trafficmanager.net/javaee-cafe/
。在浏览器的新选项卡中打开 URL。 你应该会看到之前创建的咖啡列在页面中。
如果你的 UI 看起来不相似,请在继续之前进行故障排除并解决问题。 保持控制台打开,稍后使用它进行故障转移测试。
现在,你可以设置流量管理器配置文件。 请保持页面处于打开状态,以便稍后在故障转移事件中,可以使用该页面监控终结点状态的变化。
测试从主服务器故障转移到辅助服务器
本部分中的步骤通过使用 Azure 门户手动将 Azure SQL Database 服务器和群集从主区域故障转移到辅助区域,然后再转移回来,来测试故障转移。
故障转移到辅助站点
首先,使用以下步骤将 Azure SQL 数据库从主服务器故障转移到辅助服务器:
- 切换到 Azure SQL 数据库故障转移组的浏览器选项卡,例如
failovergroup-gzh032124
。 - 选择故障转移>是。
- 等待它完成。
接下来,使用以下步骤通过恢复计划对 JBoss EAP 群集进行故障转移:
在 Azure 门户顶部的搜索框中,输入 恢复服务保管库,然后在搜索结果中选择 恢复服务保管库。
选择恢复服务保管库的名称 -例如,
recovery-service-vault-westus-gzh032124
。在“管理”下,选择“恢复计划(Site Recovery)”。 选择创建的恢复计划,例如
recovery-plan-gzh032124
。选择“故障转移”。 选择我了解风险。跳过测试故障转移。。 保留其他值的默认值。 选择“确定”。
注意
(可选)您可以运行测试故障转移和清理测试故障转移,以确保在故障转移之前一切正常。 有关详细信息,请参阅 教程:为 Azure VM 运行灾难恢复演练。 本教程直接使用故障转移来简化练习。
在通知中监视故障转移,直到它完成。 本教程的练习大约需要 10 分钟。
提交故障转移
确保上一部分中的步骤成功完成。 然后,使用以下步骤执行故障转移:
在 Azure 门户顶部的搜索框中,键入恢复服务保管库,并从搜索结果中选择它。
选择恢复服务保管库 - 例如
recovery-service-vault-westus-gzh032124
。在管理部分下,选择恢复计划 (Site Recovery)。
选择恢复计划 - 例如,
recovery-plan-gzh032124
。选择 提交,然后 确定。
监视通知,直到完成为止。
选择恢复计划中的项目。 应会看到 3 个项目列为已提交的故障转移。
禁用复制
使用以下步骤为恢复计划中的项目禁用复制并删除恢复计划:
- 对于恢复计划中
项中的每个项,右键单击该项,然后选择 禁用复制 。 - 如果系统提示你提供对此虚拟机禁用保护的一个或多个原因,请选择一个你喜欢的原因,例如,我已完成迁移应用程序。 选择“确定”。
- 重复步骤 1,直到禁用所有项的复制。
- 在通知中监视进程,直到它完成。
- 选择 概述>删除。 选择 『是』 以确认删除。
重新保护故障转移站点
现在次要区域是故障转移站点且处于活动状态,应在主要区域中重新保护它。
首先,清理不再使用 jboss-eap-cluster-eastus-gzh032124
资源组中的资源。
在 Azure 门户顶部的搜索框中,输入 资源组,然后在搜索结果中选择 资源组。
为新创建的次要区域选择资源组的名称。
在标注为筛选任何字段... 的文本区域旁边,选择 X 以删除所有筛选器。
选择“” 添加筛选器 “”。 将 筛选器 设置为 类型。 将 操作符 设置为 ,令其等于。
选择字段值旁边的下拉菜单。
切换全选复选框,直到未选中所有值为止。
确保已选择以下所有类型:
- 虚拟机
- 磁盘
- 专用端点
- 网络接口
- 存储帐户
选择字段值旁边的下拉菜单以关闭下拉菜单。 你必须将 5 种资源类型视为值的值。
选择 应用。
在已筛选列表顶端的“名称”标签旁边,选中复选框。
选择 删除。
输入 删除 以确认删除,然后选择 删除。 在通知中监视进程,直到它完成。
接下来,在主要区域内的使用 Azure Site Recovery 为群集设置灾难恢复中使用相同步骤,除了以下差异:
若要 创建恢复服务保管库,请使用以下步骤:
- 选择主要区域中部署的资源组,例如
jboss-eap-cluster-eastus-gzh032124
。 - 为服务保管库输入其他名称,例如
recovery-service-vault-eastus-gzh032124
。 - 对于区域,请选择美国东部。
- 选择主要区域中部署的资源组,例如
对于启用复制,请使用以下步骤:
对于源中的区域,请选择美国西部 2。
在复制设置中,请使用以下步骤:
对于 目标资源组,请选择主要区域中部署的现有资源组,例如
jboss-eap-cluster-eastus-gzh032124
。对于故障转移虚拟网络,请选择主要区域中的现有虚拟网络。
对于创建恢复计划,对于源,请选择美国西部 2,对于目标,请选择美国东部。
注意
你可能会注意到,当目标 VM 存在时,Azure Site Recovery 支持重新保护 VM。 有关详细信息,请参阅教程:将 Azure VM 故障转移到次要区域的重新保护 VM 部分。 但是,当根据验证结果对 JBoss EAP 群集仅同步源磁盘和目标磁盘之间的更改时,它不起作用。 本教程在故障转移后建立从辅助站点到主站点的新复制,其中整个磁盘会从故障转移区域复制到主要区域。 有关详细信息,请参阅重新保护已故障转移到主要区域的 Azure 虚拟机中的重新保护期间会发生什么?部分。
故障回复到主站点
使用故障转移到辅助站点部分中的相同步骤,故障回复到主站点,包括数据库服务器和群集,但存在以下差异:
选择主要区域中部署的恢复服务保管库,例如
recovery-service-vault-eastus-gzh032124
。选择主要区域中部署的资源组,例如
jboss-eap-cluster-eastus-gzh032124
。在提交故障转移部分中,选择部署在主服务器上的恢复服务保管库,例如
recovery-service-vault-eastus-gzh032124
。在流量管理器配置文件中,应会看到终结点
myPrimaryEndpoint
变为联机,终结点myFailoverEndpoint
变为已降级。在“重新保护故障转移站点”部分中,按照以下步骤进行操作:
主要区域是故障转移站点,并且处于活动状态,因此应在次要区域中重新保护它。
清理部署在次要区域中的资源,例如部署在
jboss-eap-cluster-westus-gzh032124
中的资源。使用使用 Azure Site Recovery 为群集设置灾难恢复中的相同步骤,保护次要区域中的主要区域,但以下步骤除外:
跳过创建恢复服务保管库中的步骤,因为已创建恢复服务保管库,例如
recovery-service-vault-westus-gzh032124
。对于启用复制>复制设置>故障转移虚拟网络,请选择次要区域中的现有虚拟网络。
清理资源
如果不打算继续使用 JBoss EAP 群集和其他组件,请使用以下步骤删除资源组以清理本教程中使用的资源:
在 Azure 门户顶部的搜索框中输入 Azure SQL 数据库服务器的资源组名称(例如
sqlserver-rg-gzh032124
)。 然后,从搜索结果中选择匹配的资源组。选择 删除资源组。
对于输入资源组名称以确认删除,请输入资源组名称。
选择 删除。
对流量管理器的资源组重复步骤 1-4,例如
myResourceGroupTM1
。在 Azure 门户顶部的搜索框中,输入 恢复服务保管库,然后在搜索结果中选择 恢复服务保管库。
选择恢复服务保管库的名称 -例如,
recovery-service-vault-westus-gzh032124
。在“管理”下,选择“恢复计划(Site Recovery)”。 选择创建的恢复计划,例如
recovery-plan-gzh032124
。使用禁用复制部分中的相同步骤删除对复制项的锁定。
对主 JBoss EAP 群集的资源组重复步骤 1-4,例如
jboss-eap-cluster-westus-gzh032124
。对辅助 JBoss EAP 群集的资源组重复步骤 1-4,例如
jboss-eap-cluster-eastus-gzh032124
。
后续步骤
在本教程中,你将设置一个 HA/DR 解决方案,该解决方案由具有主动-被动数据库层的主动-被动应用程序基础结构层组成,以及这两个层跨越两个地理上不同的站点。 在第一个站点中,应用程序基础结构层和数据库层都处于活动状态。 第二个站点使用 Azure Site Recovery 服务还原辅助域,辅助数据库处于备用状态。
继续浏览以下参考,获取更多用于生成 HA/DR 解决方案并在 Azure 上运行 JBoss EAP 的选项: