教程:将 WebSphere Application Server 迁移到具有高可用性和灾难恢复的 Azure 虚拟机
本教程介绍如何在 Azure 虚拟机 (VM) 上使用 WebSphere Application Server 实现 Java 的高可用性和灾难恢复 (HA/DR)。 该解决方案介绍如何使用在 WebSphere Application Server 上运行的简单数据库驱动的 Jakarta EE 应用程序实现低恢复时间目标 (RTO) 和恢复点目标 (RPO)。 HA/DR 是一个复杂的主题,其中包含许多可能的解决方案。 最佳解决方案取决于你的独特要求。 有关实现 HA/DR 的其他方法,请参阅本文末尾的资源。
本教程介绍如何执行下列操作:
- 使用 Azure 优化的最佳做法来实现高可用性和灾难恢复。
- 在配对区域中设置 Microsoft Azure SQL 数据库故障转移组。
- 在 Azure VM 上设置主 WebSphere 群集。
- 使用 Azure Site Recovery 为群集设置灾难恢复。
- 设置 Azure 流量管理器。
- 测试从主服务器故障转移到辅助服务器。
下图说明了你构建的体系结构:
Azure 流量管理器检查所在区域的运行状况,并相应地将流量路由到应用程序层。 主要区域已完全部署 WebSphere 群集。 在主要区域受到 Azure Site Recovery 的保护后,可以在故障转移期间还原次要区域。 因此,主要区域主动为来自用户的网络请求提供服务;而次要区域是被动的,仅在主要区域遇到服务中断时才被激活以接收流量。
Azure 流量管理器检测部署在 IBM HTTP 服务器中的应用程序的运行状况,以实现条件路由。 应用程序层的异地故障转移 RTO 取决于关闭主群集、还原辅助群集、启动 VM 和运行辅助 WebSphere 群集的时间。 RPO 取决于 Azure Site Recovery 和 Azure SQL 数据库的复制策略。 这种依赖关系是因为群集数据在 VM 的本地存储中存储和复制,而应用程序数据在 Azure SQL 数据库故障转移组中持久化和复制。
上图显示了主要区域和次要区域是构成 HA/DR 体系结构的两个区域。 这些区域需要是 Azure 配对区域。 有关配对区域的详细信息,请参阅 Azure 跨区域复制。 本文使用美国东部和美国西部作为两个区域,但它们可以是对你的方案有意义的任何配对区域。 有关区域配对的列表,请参阅 Azure 跨区域复制的 Azure 配对区域部分。
数据库层由具有主服务器和辅助服务器的 Azure SQL 数据库故障转移组组成。 读/写侦听器终结点始终指向主服务器,并连接到每个区域中的 WebSphere 群集。 异地故障转移都会将组中所有的辅助数据库切换为主角色。 有关 Azure SQL 数据库的异地故障转移 RPO 和 RTO,请参阅使用 Azure SQL 数据库确保业务连续性的相关概述。
本教程是使用 Azure Site Recovery 和 Azure SQL 数据库服务编写的,因为本教程依赖于这些服务的 HA 功能。 其他数据库选择也是可能的,但必须考虑所选任何数据库的 HA 功能。
先决条件
- Azure 订阅。 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
- 请确保你在订阅中具有
Contributor
角色。 可以使用使用 Azure 门户列出 Azure 角色分配中的步骤来验证分配。 - 准备安装了 Windows、Linux 或 macOS 的本地计算机。
- 安装并设置 Git。
- 安装版本为 17 或更高的 Java SE 实现 - 例如,OpenJDK 的 Microsoft 版本。
- 安装 Maven 3.9.3 版或更高版本。
在配对区域中设置 Azure SQL 数据库故障转移组
在本节中,你将在配对区域中创建一个 Azure SQL 数据库故障转移组,以供 WebSphere 群集和应用使用。 在后面的部分中,将 WebSphere 配置为将其会话数据存储到此数据库。 这种做法引用为会话持久性创建表。
首先,按照快速入门:创建单一数据库 - Azure SQL 数据库中的 Azure 门户步骤,创建主 Azure SQL 数据库。 按照“清理资源”部分的步骤进行操作,但不包括该部分。 阅读本文时请遵循以下说明,然后在创建并配置 Azure SQL 数据库后返回本文:
到达创建单一数据库部分时,请使用以下步骤:
- 在创建新资源组的步骤 4 中,请保存资源组名称值,例如
myResourceGroup
。 - 在数据库名称的步骤 5 中,保存数据库名称值 - 例如
mySampleDatabase
。 - 在创建服务器的步骤 6 中,使用以下步骤:
- 填写唯一的服务器名称,例如
sqlserverprimary-mjg022624
。 - 对于“位置”,请选择“(美国)美国东部”。
- 对于身份验证方法,选择使用 SQL 身份验证。
- 保存服务器管理员登录 值 - 例如
azureuser
。 - 保存密码值。
- 填写唯一的服务器名称,例如
- 在步骤 8 中,对于工作负载环境,请选择开发。 查看说明,并考虑工作负载的其他选项。
- 在步骤 11 中,对于备份存储冗余,选择本地冗余备份存储。 请考虑备份的其他选项。 有关详细信息,请参阅 Azure SQL 数据库中的自动备份的备份存储冗余部分。
- 在步骤 14 中,在防火墙规则配置中,对于允许 Azure 服务和资源访问此服务器,请选择是。
- 在创建新资源组的步骤 4 中,请保存资源组名称值,例如
到达查询数据库部分时,请使用以下步骤:
在步骤 3 中,输入 SQL 身份验证服务器管理员登录信息以登录。
注意
如果登录失败,出现类似于不允许 IP 地址为“xx.xx.xx.xx”的客户端访问该服务器的错误消息,请在错误消息末尾选择 Allowlist IP xx.xx.xx.xx on server <your-sqlserver-name>。 等待服务器防火墙规则完成更新,然后再次选择确定。
在步骤 5 中运行示例查询后,清除编辑器并输入以下查询,然后再次选择运行:
CREATE TABLE sessions ( ID VARCHAR(128) NOT NULL, PROPID VARCHAR(128) NOT NULL, APPNAME VARCHAR(128) NOT NULL, LISTENERCNT SMALLINT, LASTACCESS BIGINT, CREATIONTIME BIGINT, MAXINACTIVETIME INT, USERNAME VARCHAR(256), SMALL VARBINARY(MAX), MEDIUM VARCHAR(MAX), LARGE VARBINARY(MAX) );
成功运行后,应该会看到消息“查询成功: 受影响的行: 0”。
数据库表
sessions
用于存储 WebSphere 应用的会话数据。 WebSphere 群集数据(包括事务日志)被持久化到部署群集的 VM 的本地存储中。
然后,按照为 Azure SQL 数据库配置故障转移组中的 Azure 门户步骤,创建 Azure SQL 数据库故障转移组。 只需以下部分:创建故障转移组和测试计划的故障转移。 阅读本文时请使用以下步骤,然后在创建并配置 Azure SQL 数据库故障转移组后返回本文。
在创建故障转移组部分中,使用以下步骤:
- 在创建故障转移组的步骤 5 中,输入并保存唯一的故障转移组名称,例如
failovergroup-mjg022624
。 - 在配置服务器的步骤 5 中,选择用于创建新的辅助服务器的选项,然后使用以下步骤:
- 输入唯一的服务器名称 - 例如,
sqlserversecondary-mjg022624
。 - 输入与主服务器相同的服务器管理员和密码。
- 对于位置,请选择(美国)美国西部。
- 请确保已选中允许 Azure 服务访问服务器。
- 输入唯一的服务器名称 - 例如,
- 在步骤 5 中,若要配置组中的数据库,请选择在主服务器中创建的数据库,例如
mySampleDatabase
。
- 在创建故障转移组的步骤 5 中,输入并保存唯一的故障转移组名称,例如
完成测试计划的故障转移部分中的所有步骤后,保持故障转移组页面打开,稍后将其用于 WebSphere 群集的故障转移测试。
在 Azure VM 上设置主 WebSphere 群集
在本节中,将使用 Azure VM 上的 IBM WebSphere Application Server 群集产品/服务在 Azure VM 上创建主 WebSphere 群集。 稍后使用 Azure Site Recovery 在故障转移期间从主群集还原辅助群集。
部署主 WebSphere 群集
首先,在浏览器中打开 Azure VM 上的 IBM WebSphere Application Server 群集产品/服务,然后选择创建。 应会看到产品/服务的基本信息窗格。
使用以下步骤填写基本信息窗格:
- 确保为订阅显示的值与“先决条件”部分中列出的角色的值相同。
- 必须在空资源组中部署产品/服务。 在资源组字段中,选择新建,然后为资源组填写唯一值 - 例如,
was-cluster-eastus-mjg022624
。 - 在实例详细信息下,选择区域,选择美国东部。
- 对于使用现有的 WebSphere 权利还是使用评估许可证进行部署?,请为本教程选择评估。 也可以选择已授权,并提供 IBMid 凭据。
- 选择我已阅读并接受 IBM 许可协议。
- 其他字段保留默认值。
- 选择下一步转到群集配置窗格。
使用以下步骤填写群集配置窗格:
- 对于 VM 管理员的密码,请提供密码。
- 对于 WebSphere 管理员的密码,请提供密码。 为 WebSphere 管理员保存用户名和密码。
- 其他字段保留默认值。
- 选择下一步以转到负载均衡器窗格。
使用以下步骤填写负载均衡器窗格:
- 对于 VM 管理员的密码,请提供密码。
- 对于 IBM HTTP 服务器管理员的密码,请提供密码。
- 其他字段保留默认值。
- 选择下一步,转到网络窗格。
应该在网络窗格中看到所有字段都预先填充了默认值。 选择下一步,转到数据库窗格。
以下步骤演示如何填写数据库窗格:
- 对于连接到数据库?,请选择是。
- 对于选择数据库类型,请选择 Microsoft SQL Server。
- 对于 JNDI 名称,请输入 jdbc/WebSphereCafeDB。
- 对于数据源连接字符串 (jdbc:sqlserver://<host>:<port>;database=<database>),将占位符替换为在上一节中为 Azure SQL 数据库的故障转移组保存的值,例如
jdbc:sqlserver://failovergroup-mjg022624.database.windows.net:1433;database=mySampleDatabase
。 - 对于数据库用户名,请输入服务器管理员登录名和在上一节中保存的故障转移组名称,例如
azureuser@failovergroup-mjg022624
。注意
请特别注意为故障转移组使用正确的数据库服务器主机名和数据库用户名,而不是主数据库或备份数据库中的服务器主机名和用户名。 通过使用故障转移组中的值,你实际上是在告诉 WebSphere 与故障转移组进行通信。 然而,就 WebSphere 而言,这只是一个正常的数据库连接。
- 输入以前为数据库密码保存的服务器管理员登录密码。 为确认密码输入相同的值。
- 其他字段保留默认值。
- 选择“查看 + 创建”。
- 等待正在运行最终验证... 成功完成,然后选择创建。
过了一会儿,应会看到部署页,其中显示了部署正在进行中。
注意
如果在正在运行最终验证... 期间看到任何问题,请修复这些问题,然后重试。
根据所选地区的网络状况和其他活动,部署可能需要 25 分钟才能完成。 之后,你应当会看到部署页上显示文本“你的部署已完成”。
验证群集的部署
你在群集中部署了 IBM HTTP 服务器 (IHS) 和 WebSphere 部署管理器 (Dmgr)。 IHS 充当群集中所有应用程序服务器的负载均衡器。 Dmgr 为群集配置提供了一个 Web 控制台。
在进入下一步之前,请使用以下步骤验证 IHS 和 Dmgr 控制台是否正常工作:
返回到部署页,然后选择输出。
复制属性 ihsConsole 的值。 在新浏览器选项卡中打开该 URL。请注意,在本例中,IHS 不使用
https
。 应会看到 IHS 的欢迎页面,没有任何错误消息。 如果没看到,则必须先排除故障并解决问题,然后才能继续。 保持控制台打开,稍后使用它来验证群集的应用程序部署。复制并保存属性 adminSecuredConsole 的值。 在新浏览器选项卡中打开它。接受自签名 TLS 证书的浏览器警告。 不要使用自签名 TLS 证书进入生产环境。
应会看到 WebSphere 集成解决方案控制台的登录页面。 使用之前保存的 WebSphere 管理员的用户名和密码登录到控制台。 如果你无法登录,则必须先排除故障并解决问题,然后才能继续。 保持控制台打开,稍后使用它对 WebSphere 群集进行进一步配置。
使用以下步骤获取 IHS 的公共 IP 地址的名称。 稍后设置 Azure 流量管理器时使用。
- 打开部署群集的资源组 - 例如,选择概述以切换回部署页的“概述”窗格,然后选择转到资源组。
- 在资源表中,找到类型列。 选择它可按资源类型进行排序。
- 查找前缀为
ihs
的公共 IP 地址资源,然后复制并保存其名称。
配置群集
首先,使用以下步骤启用将更改与节点同步选项,以便可以将任何配置自动同步到所有应用程序服务器:
- 如果你已注销,请切换回 WebSphere 集成解决方案控制台,并重新登录。
- 在导航窗格中,选择系统管理>控制台首选项。
- 在控制台首选项窗格中,选择将更改与节点同步,然后选择应用。 应会看到消息你的首选项已更改。
然后,使用以下步骤为所有应用程序服务器配置数据库分布式会话:
- 在导航窗格中,选择服务器>服务器类型>WebSphere 应用程序服务器。
- 在应用程序服务器窗格中,应会看到 3 个应用程序服务器列出。 对于每个应用程序服务器,请使用以下说明配置数据库分布式会话:
- 在文本下的表中,可以管理以下资源,选择应用程序服务器的超链接,该超链接以
MyCluster
开头。 - 在容器设置部分中,选择会话管理。
- 在其他属性部分中,选择分布式环境设置。
- 对于分布式会话,请选择数据库(仅 Web 容器支持)。
- 选择数据库并使用以下步骤:
- 对于数据源 JNDI 名称,请输入 jdbc/WebSphereCafeDB。
- 对于用户 ID,请输入服务器管理员登录名和在上一节中保存的故障转移组名称,例如
azureuser@failovergroup-mjg022624
。 - 填写之前为密码保存的 Azure SQL Server 管理员登录密码。
- 对于表空间名称,请输入会话。
- 选择使用多行架构。
- 选择“确定”。 你将被定向回分布式环境设置窗格。
- 在其他属性部分下,选择自定义优化参数。
- 对于优化级别,请选择低(针对故障转移进行优化)。
- 选择“确定”。
- 在消息下,选择保存。 请等待直至完成为止。
- 从顶部痕迹导航栏选择应用程序服务器。 你被定向回应用程序服务器窗格。
- 在文本下的表中,可以管理以下资源,选择应用程序服务器的超链接,该超链接以
- 在导航窗格中,选择服务器>群集>WebSphere 应用程序服务器群集。
- 在 WebSphere 应用程序服务器群集窗格中,应会看到列出的群集
MyCluster
。 选中 MyCluster 旁边的复选框。 - 选择 Ripplestart。
- 等待群集重启。 可以选择状态图标,如果新窗口未显示已启动,则切换回控制台,并在一段时间后刷新网页。 重复该操作,直到看到已启动。 在达到已启动状态之前,你可能会看到部分启动
保持控制台打开,稍后用于应用程序部署。
部署示例应用
本节介绍如何在 WebSphere 群集上部署和运行示例 CRUD Java/Jakarta EE 应用程序,以便稍后进行灾难恢复故障转移测试。
你已将应用程序服务器配置为使用数据源 jdbc/WebSphereCafeDB
来存储以前会话数据,这样就可以跨 WebSphere 应用程序服务器的群集实现故障转移和负载均衡。 示例应用还配置持久性架构,以在同一数据源 jdbc/WebSphereCafeDB
中持久保存应用程序数据 coffee
。
首先,使用以下命令下载、生成和打包示例:
git clone https://github.com/Azure-Samples/websphere-cafe
cd websphere-cafe
git checkout 20240326
mvn clean package
如果你看到一条关于处于 Detached HEAD
状态的消息,可以放心忽略此消息。
该包应已成功生成,并位于 <parent-path-to-your-local-clone>/websphere-cafe/websphere-cafe-application/target/websphere-cafe.ear。 如果没有看到该包,则必须先排查并解决问题,然后才能继续。
然后,使用以下步骤将示例应用部署到群集:
- 如果你已注销,请切换回 WebSphere 集成解决方案控制台,并重新登录。
- 在导航窗格中,选择应用程序>应用程序类型>WebSphere 企业应用程序。
- 在企业应用程序窗格中,选择安装>选择文件。 然后,找到位于 <parent-path-to-your-local-clone>/websphere-cafe/websphere-cafe-application/target/websphere-cafe.ear 的包,然后选择打开。 选择“下一步”>“下一步”>“下一步”。
- 在将模块映射到服务器窗格中,按 Ctrl 并选择群集和服务器下列出的所有项。 选中 websphere-cafe.war 旁边的复选框。 选择“应用”。 选择下一步,直到看到完成按钮。
- 选择完成>保存,然后等待完成。 选择“确定”。
- 选择已安装的应用程序
websphere-cafe
,然后选择启动。 等待,直到你看到指示应用程序已成功启动的消息。 如果无法看到成功消息,则必须先排除故障并解决问题,然后才能继续。
现在,使用以下步骤验证应用是否按预期运行:
切换回 IHS 控制台。 将已部署应用的上下文根
/websphere-cafe/
附加到地址栏中,例如,http://ihs70685e.eastus.cloudapp.azure.com/websphere-cafe/
,然后按 Enter。 应会看到示例应用的欢迎页面。创建一个具有名称和价格的新咖啡(例如,价格为 $10 的咖啡 1)- 它被持久化到数据库的应用程序数据表和会话表中。 看到的 UI 应该类似于以下屏幕截图:
如果 UI 看起来不相似,请排除故障并解决问题,然后继续。
使用 Azure Site Recovery 为群集设置灾难恢复
在本节中,你将使用 Azure Site Recovery 为主群集中的 Azure VM 设置灾难恢复,具体步骤请参阅教程:为 Azure VM 设置灾难恢复。 只需以下部分:创建恢复服务保管库和启用复制。 在阅读本文时,请注意以下步骤,然后在主群集受到保护后返回本文:
在创建恢复服务保管库部分中,使用以下步骤:
在资源组的步骤 5 中,在订阅中创建具有唯一名称的新资源组,例如
was-cluster-westus-mjg022624
。在保管库名称的步骤 6 中,提供保管库名称,例如
recovery-service-vault-westus-mjg022624
。在区域的步骤 7 中,选择美国西部。
在步骤 8 中选择查看 + 创建之前,请选择下一步:冗余。 在冗余窗格中,为备份存储冗余选择异地冗余,并为跨区域还原选择启用。
注意
确保在冗余窗格中为备份存储冗余选择异地冗余,为跨区域还原选择启用。 否则,无法将主群集的存储复制到次要区域。
按照启用 Site Recovery 部分中的步骤启用 Site Recovery。
在到达启用复制部分时,请使用以下步骤:
- 在选择源设置部分中,使用以下步骤:
对于“区域”,请选择“美国东部”。
对于资源组,请选择在其中部署主群集的资源,例如
was-cluster-eastus-mjg022624
。注意
如果所需的资源组未列出,你可以先为该区域选择“美国西部”,然后切换回“美国东部”。
其他字段保留默认值。 选择下一步。
- 在选择 VM 部分,对于虚拟机,选择列出的所有五个 VM,然后选择下一步。
- 在查看复制设置部分中,使用以下步骤:
- 对于目标位置,请选择美国西部。
- 对于目标资源组,请选择在其中部署服务恢复保管库的资源组,例如
was-cluster-westus-mjg022624
。 - 记下新的故障转移虚拟网络和故障转移子网,它们是从主要区域中的虚拟网络和子网映射而来的。
- 其他字段保留默认值。
- 选择下一步。
- 在管理部分中,使用以下步骤:
- 对于复制策略,请使用默认策略 24-hour-retention-policy。 还可以为企业创建新的策略。
- 其他字段保留默认值。
- 选择下一步。
- 在查看部分中,使用以下步骤:
- 在选择源设置部分中,使用以下步骤:
接下来,创建一个恢复计划,包括所有复制的项目,以便它们可以一起进行故障转移。 使用创建恢复计划中的说明,并进行以下自定义:
- 在步骤 2 中,输入计划的名称,例如
recovery-plan-mjg022624
。 - 在步骤 3 中,对于源,选择美国东部,对于目标,选择美国西部。
- 在选择项的步骤 4 中,为本教程选择所有五个受保护的 VM。
接下来,创建恢复计划。 保持页面打开,以便以后可以将其用于故障转移测试。
次要区域的进一步网络配置
还需要进一步的网络配置,才能在故障转移事件中启用和保护对次要区域的外部访问。 使用以下步骤进行此配置:
按照快速入门:使用 Azure 门户创建公共 IP 地址中的说明,在次要区域中为 Dmgr 创建公共 IP 地址。
- 对于资源组,请选择在其中部署服务恢复保管库的资源组,例如
was-cluster-westus-mjg022624
。 - 对于区域,请选择(美国)美国西部。
- 对于名称,输入一个值 - 例如,
dmgr-public-ip-westus-mjg022624
。 - 对于 DNS 名称标签,请输入唯一值,例如
dmgrmjg022624
。
- 对于资源组,请选择在其中部署服务恢复保管库的资源组,例如
按照相同的指南,在次要区域为 IHS 创建另一个公共 IP 地址,并进行以下自定义:
- 对于资源组,请选择在其中部署服务恢复保管库的资源组,例如
was-cluster-westus-mjg022624
。 - 对于区域,请选择(美国)美国西部。
- 对于名称,输入一个值 - 例如,
ihs-public-ip-westus-mjg022624
。 写下来。 - 对于 DNS 名称标签,请输入唯一值,例如
ihsmjg022624
。
- 对于资源组,请选择在其中部署服务恢复保管库的资源组,例如
按照创建、更改或删除网络安全组的创建网络安全组部分中的说明,在次要区域中创建网络安全组,并进行以下自定义:
- 对于资源组,请选择在其中部署服务恢复保管库的资源组,例如
was-cluster-westus-mjg022624
。 - 对于名称,输入一个值 - 例如,
nsg-westus-mjg022624
。 - 对于“区域”,请选择“美国西部”。
- 对于资源组,请选择在其中部署服务恢复保管库的资源组,例如
按照同一篇文章的创建安全规则一节中的说明,为网络安全组创建入站安全规则,并进行以下自定义:
- 在步骤 2 中,选择创建的网络安全组,例如
nsg-westus-mjg022624
。 - 在步骤 3 中,选择入站安全规则。
- 在步骤 4 中,自定义以下设置:
- 对于目标端口范围,输入 9060,9080,9043,9443,80。
- 对于“协议”,请选择“TCP”。
- 对于名称,输入 ALLOW_HTTP_ACCESS。
- 在步骤 2 中,选择创建的网络安全组,例如
按照同一篇文章的将网络安全组与子网关联或从子网分离一节中的说明,将网络安全组织与子网相关联,并进行以下自定义:
- 在步骤 2 中,选择创建的网络安全组,例如
nsg-westus-mjg022624
。 - 选择关联,将网络安全组与你之前记下的故障转移子网相关联。
- 在步骤 2 中,选择创建的网络安全组,例如
设置 Azure 流量管理器
在本节中,将创建一个 Azure 流量管理器,用于将流量分发到全球 Azure 区域中面向公众的应用程序。 主终结点指向主要区域中 IHS 的公共 IP 地址。 辅助终结点指向次要区域中 IHS 的公共 IP 地址。
按照快速入门:使用 Azure 门户创建流量管理器配置文件中的说明,创建 Azure 流量管理器配置文件。 只需以下部分:创建流量管理器配置文件和添加流量管理器终结点。 必须跳过指示你创建应用程序服务资源的部分。 在浏览这些部分时,请使用以下步骤,然后在创建和配置 Azure 流量管理器后返回本文。
在创建流量管理器配置文件部分的步骤 2 中,对于创建流量管理器配置文件,使用以下步骤:
- 为名称保存唯一的流量管理器配置文件名称,例如
tmprofile-mjg022624
。 - 为资源组保存新的资源组名称 - 例如
myResourceGroupTM1
。
- 为名称保存唯一的流量管理器配置文件名称,例如
到达添加流量管理器终结点部分时,请使用以下步骤:
- 在步骤 2 中打开流量管理器配置文件后,在配置页中,使用以下步骤:
- 对于 DNS 生存时间 (TTL),输入 10。
- 在终结点监视器设置下,对于路径,输入 /websphere-cafe/,这是已部署的示例应用的上下文根。
- 在快速终结点故障转移设置下,使用以下值:
- 对于探测内部,请选择 10。
- 对于容许的失败次数,输入 3。
- 对于探测超时,请使用 5。
- 选择“保存”。 等待它完成。
- 在添加主终结点
myPrimaryEndpoint
的步骤 4 中,使用以下步骤:- 对于目标资源类型,请选择公共 IP 地址。
- 选择选择公共 IP 地址下拉列表,然后输入前面保存的美国东部区域中 IHS 的公共 IP 地址的名称。 应看到一个匹配的条目。 为公共 IP 地址选择它。
- 在添加故障转移/辅助终结点
myFailoverEndpoint
的步骤 6 中,使用以下步骤:- 对于目标资源类型,请选择公共 IP 地址。
- 选择选择公共 IP 地址下拉列表,然后输入前面保存的美国西部区域中 IHS 的公共 IP 地址的名称。 应看到一个匹配的条目。 为公共 IP 地址选择它。
- 请稍等片刻。 选择刷新,直到终结点
myPrimaryEndpoint
的监视状态为联机,终结点myFailoverEndpoint
的监视状态为已降级。
- 在步骤 2 中打开流量管理器配置文件后,在配置页中,使用以下步骤:
接下来,使用以下步骤验证部署到主 WebSphere 群集的示例应用是否可从流量管理器配置文件访问:
为创建的流量管理器配置文件选择概述。
选择并复制流量管理器配置文件的域名系统 (DNS) 名称,然后将其附加到
/websphere-cafe/
- 例如http://tmprofile-mjg022624.trafficmanager.net/websphere-cafe/
。在浏览器的新选项卡中打开 URL。 你应该在页面上看到之前创建的咖啡。
创建具有不同名称和价格的另一个咖啡(例如,价格为 $20 的咖啡 2)- 它被持久化到数据库的应用程序数据表和会话表中。 看到的 UI 应该类似于以下屏幕截图:
如果 UI 看起来不相似,请排除故障并解决问题,然后继续。 保持控制台打开,稍后使用它进行故障转移测试。
现在,你设置了流量管理器配置文件。 保持页面打开,你可以在以后的故障转移事件中使用它来监视终结点状态更改。
测试从主服务器故障转移到辅助服务器
若要测试故障转移,需要手动对 Azure SQL Database 服务器和群集进行故障转移,然后使用 Azure 门户进行故障回复。
故障转移到辅助站点
首先,使用以下步骤将 Azure SQL 数据库从主服务器故障转移到辅助服务器:
- 切换到 Azure SQL 数据库故障转移组的浏览器选项卡,例如
failovergroup-mjg022624
。 - 选择故障转移>是。
- 等待它完成。
接下来,使用以下步骤通过恢复计划对 WebSphere 群集进行故障转移:
在 Azure 门户顶部的搜索框中,输入恢复服务保管库,然后在搜索结果中选择恢复服务保管库。
选择恢复服务保管库的名称,例如
recovery-service-vault-westus-mjg022624
。在“管理”下,选择“恢复计划(Site Recovery)”。 选择你创建的恢复计划 - 例如,
recovery-plan-mjg022624
。选择“故障转移”。 选择我了解风险。跳过测试故障转移。。 保留其他字段的默认值,然后选择确定。
注意
可以选择执行测试故障转移和清理测试故障转移,以确保测试故障转移之前一切正常。 有关详细信息,请参阅教程:为 Azure VM 运行灾难恢复演练。 本教程直接测试故障转移,以简化练习。
在通知中监视故障转移,直到它完成。 本教程中的练习大约需要 10 分钟。
你也可以通过选择故障转移事件来查看故障转移作业的详细信息,例如,'recovery-plan-mjg022624'的故障转移正在进行中... - 来自通知。
然后,使用以下步骤启用对次要区域中的 WebSphere 集成解决方案控制台和示例应用的外部访问:
- 在 Azure 门户顶部的搜索框中,输入资源组,然后在搜索结果中选择资源组。
- 为次要区域选择资源组的名称,例如
was-cluster-westus-mjg022624
。 在资源组页面中,按类型对项目进行排序。 - 选择前缀为
dmgr
的网络接口。 选择 IP 配置>ipconfig1。 选择关联公共 IP 地址。 对于公共 IP 地址,请选择前缀为dmgr
的公共 IP 地址。 此地址是你之前创建的地址。 在本文中,地址命名为dmgr-public-ip-westus-mjg022624
。 选择保存,然后等待它完成。 - 切换回资源组,然后选择前缀为
ihs
的网络接口。 选择 IP 配置>ipconfig1。 选择关联公共 IP 地址。 对于公共 IP 地址,请选择前缀为ihs
的公共 IP 地址。 此地址是你之前创建的地址。 在本文中,地址命名为ihs-public-ip-westus-mjg022624
。 选择保存,然后等待它完成。
现在,使用以下步骤验证故障转移是否按预期工作:
查找之前创建的 Dmgr 的公共 IP 地址的 DNS 名称标签。 在新浏览器选项卡中打开 Dmgr WebSphere 集成解决方案控制台的 URL。别忘了使用
https
。 例如https://dmgrmjg022624.westus.cloudapp.azure.com:9043/ibm/console
。 刷新页面,直到看到登录的欢迎页面。使用之前保存的 WebSphere 管理员的用户名和密码登录到控制台,然后使用以下步骤:
在导航窗格中,选择服务器>所有服务器。 在中间件服务器窗格中,应会看到列出了 4 台服务器,包括 3 台由 WebSphere 群集
MyCluster
组成的 WebSphere 应用程序服务器和 1 台作为 IHS 的 Web 服务器。 刷新页面,直到看到所有服务器都已启动。在导航窗格中,选择应用程序>应用程序类型>WebSphere 企业应用程序。 在企业应用程序窗格中,应会看到 1 个应用程序 -
websphere-cafe
已列出并启动。若要验证次要区域中的群集配置,请按照配置群集部分中的步骤进行操作。 你应该看到,将更改与节点同步和分布式会话的设置已复制到故障转移群集,如以下屏幕截图所示:
查找之前创建的 IHS 的公共 IP 地址的 DNS 名称标签。 打开附加有根上下文
/websphere-cafe/
的 IHS 控制台的 URL。 请注意,不得使用https
。 本例没有对 IHS 使用https
,例如http://ihsmjg022624.westus.cloudapp.azure.com/websphere-cafe/
。 你应该在页面中看到之前创建的两种咖啡。切换到流量管理器配置文件的浏览器选项卡,然后刷新页面,直到看到终结点
myFailoverEndpoint
的监视状态值变为联机,终结点myPrimaryEndpoint
的监视状态值变为已降级。切换到浏览器选项卡,其中包含流量管理器配置文件的 DNS 名称,例如
http://tmprofile-mjg022624.trafficmanager.net/websphere-cafe/
。 刷新页面,应会看到应用程序数据表和会话表中保留的相同数据。 看到的 UI 应该类似于以下屏幕截图:如果未观察到此行为,可能是因为流量管理器需要时间来更新 DNS 以指向故障转移站点。 问题也可能是浏览器缓存了指向故障站点的 DNS 名称解析结果。 等待一段时间,然后再次刷新页面。
提交故障转移
在对故障转移结果感到满意后,使用以下步骤提交故障转移:
在 Azure 门户顶部的搜索框中,输入恢复服务保管库,然后在搜索结果中选择恢复服务保管库。
选择恢复服务保管库的名称,例如
recovery-service-vault-westus-mjg022624
。在“管理”下,选择“恢复计划(Site Recovery)”。 选择你创建的恢复计划 - 例如,
recovery-plan-mjg022624
。选择提交>确定。
监视通知中的提交,直到完成。
选择恢复计划中的项目。 应会看到 5 个项目列为已提交的故障转移。
禁用复制
使用以下步骤禁用恢复计划中项目的复制,然后删除恢复计划:
对于恢复计划中的项中的每个项,请选择省略号按钮 (...),然后选择禁用复制。
如果系统提示你提供对此虚拟机禁用保护的原因,请选择一个你喜欢的原因,例如,我已完成迁移应用程序。 选择“确定”。
重复步骤 1,直到禁用所有项的复制。
在通知中监视进程,直到它完成。
选择概述>删除。 选择“是”以确认删除。
为故障回复做好准备:重新保护故障转移站点
次要区域现在是故障转移站点并且处于活动状态。 应在主要区域中重新保护它。
首先,使用以下步骤清理未使用的资源,Azure Site Recovery 服务稍后将在你的主要区域中复制这些资源。 不能只是删除资源组,因为站点恢复会将资源还原到现有资源组中。
- 在 Azure 门户顶部的搜索框中,输入资源组,然后在搜索结果中选择资源组。
- 为主要区域选择资源组的名称,例如
was-cluster-eastus-mjg022624
。 在资源组页面中,按类型对项目进行排序。 - 使用以下步骤删除虚拟机:
- 选择类型筛选器,然后从值下拉列表中选择虚拟机。
- 选择“应用”。
- 选择所有虚拟机,选择删除,然后输入删除以确认删除。
- 选择“删除”。
- 在通知中监视进程,直到它完成。
- 使用以下步骤删除磁盘:
- 选择类型筛选器,然后从值下拉列表中选择磁盘。
- 选择“应用”。
- 选择所有磁盘,选择删除,然后输入删除以确认删除。
- 选择“删除”。
- 在通知中监视流程,并等待其完成。
- 使用以下步骤删除终结点:
- 选择类型筛选器,从值下拉列表中选择专用终结点。
- 选择“应用”。
- 选择所有专用终结点,选择删除,然后输入删除以确认删除。
- 选择“删除”。
- 在通知中监视进程,直到它完成。 如果未列出类型专用终结点,请忽略此步骤。
- 使用以下步骤删除网络接口:
- 选择类型筛选器 >,从值下拉列表中选择网络接口。
- 选择“应用”。
- 选择所有网络接口,选择删除,然后输入删除以确认删除。
- 选择“删除”。 在通知中监视进程,直到它完成。
- 使用以下步骤删除存储帐户:
- 选择类型筛选器 >,从值下拉列表中选择存储帐户。
- 选择“应用”。
- 选择所有存储帐户,选择删除,然后输入删除以确认删除。
- 选择“删除”。 在通知中监视进程,直到它完成。
接下来,对主要区域使用使用 Azure Site Recovery 为群集设置灾难恢复一节中的相同步骤,除了以下差异:
- 对于创建恢复服务保管库部分,使用以下步骤:
- 选择主要区域中部署的资源组,例如
was-cluster-eastus-mjg022624
。 - 为服务保管库输入其他名称,例如
recovery-service-vault-eastus-mjg022624
。 - 对于“区域”,请选择“美国东部”。
- 选择主要区域中部署的资源组,例如
- 对于启用复制,请使用以下步骤:
- 对于源中的区域,请选择美国西部。
- 对于复制设置,请使用以下步骤:
- 对于目标资源组,请选择主要区域中部署的现有资源组,例如
was-cluster-eastus-mjg022624
。 - 对于故障转移虚拟网络,请选择主要区域中的现有虚拟网络。
- 对于目标资源组,请选择主要区域中部署的现有资源组,例如
- 对于创建恢复计划,对于源,请选择美国西部,对于目标,请选择美国东部。
- 跳过次要区域的进一步网络配置中的步骤,因为之前已创建并配置了这些资源。
注意
你可能会注意到,当目标 VM 存在时,Azure Site Recovery 支持 VM 重新保护。 有关详细信息,请参阅教程:将 Azure VM 故障转移到次要区域的重新保护 VM 部分。 由于我们为 WebSphere 采取的方法,此功能不起作用。 原因是,根据验证结果,只有源磁盘和目标磁盘之间的更改才会为 WebSphere 群集同步。 为了取代 VM 重新保护特性的功能,本教程在故障转移后建立从辅助站点到主站点的新复制。 将整个磁盘从故障转移区域复制到主要区域。 有关详细信息,请参阅重新保护已故障转移到主要区域的 Azure 虚拟机的重新保护期间会发生什么?部分。
故障回复到主站点
使用故障转移到辅助站点部分中的相同步骤,故障回复到主站点,包括数据库服务器和群集,但存在以下差异:
- 选择主要区域中部署的恢复服务保管库,例如
recovery-service-vault-eastus-mjg022624
。 - 选择主要区域中部署的资源组,例如
was-cluster-eastus-mjg022624
。 - 在主要区域中启用对 WebSphere 集成解决方案控制台和示例应用的外部访问后,请重新访问 WebSphere 集成解决方案控制台的浏览器选项卡以及之前打开的主群集的示例应用。 验证它们是否按预期工作。 根据故障回复所需的时间,如果会话数据在一个多小时前过期,你可能不会在示例应用 UI 的新咖啡部分看到会话数据。
- 在提交故障转移部分中,选择部署在主服务器上的恢复服务保管库,例如
recovery-service-vault-eastus-mjg022624
。 - 在流量管理器配置文件中,应会看到终结点
myPrimaryEndpoint
变为联机,终结点myFailoverEndpoint
变为已降级。 - 在为故障回复做好准备:重新保护故障转移站点部分,使用以下步骤:
- 主要区域是故障转移站点,并且处于活动状态,因此应在次要区域中重新保护它。
- 清理部署在次要区域中的资源,例如部署在
was-cluster-westus-mjg022624
中的资源。 - 使用使用 Azure Site Recovery 为群集设置灾难恢复一节中的相同步骤,保护次要区域中的主要区域,但以下更改除外:
- 跳过创建恢复服务保管库部分中的步骤,因为你之前创建了一个保管库,例如
recovery-service-vault-westus-mjg022624
。 - 对于启用复制>复制设置>故障转移虚拟网络,请选择次要区域中的现有虚拟网络。
- 跳过次要区域的进一步网络配置部分中的步骤,因为之前已创建并配置了这些资源。
- 跳过创建恢复服务保管库部分中的步骤,因为你之前创建了一个保管库,例如
清理资源
如果不打算继续使用 WebSphere 群集和其他组件,请使用以下步骤删除资源组以清理本教程中使用的资源:
- 在 Azure 门户顶部的搜索框中输入 Azure SQL Database 服务器的资源组名称(例如
myResourceGroup
),并从搜索结果中选择匹配的资源组。 - 选择“删除资源组”。
- 在输入资源组名称以确认删除中,输入资源组名称。
- 选择“删除”。
- 对流量管理器的资源组重复步骤 1-4,例如
myResourceGroupTM1
。 - 在 Azure 门户顶部的搜索框中,输入恢复服务保管库,然后在搜索结果中选择恢复服务保管库。
- 选择恢复服务保管库的名称,例如
recovery-service-vault-westus-mjg022624
。 - 在“管理”下,选择“恢复计划(Site Recovery)”。 选择你创建的恢复计划 - 例如,
recovery-plan-mjg022624
。 - 使用禁用复制部分中的相同步骤删除对复制项的锁定。
- 对主 WebSphere 群集的资源组重复步骤 1-4,例如
was-cluster-westus-mjg022624
。 - 对辅助 WebSphere 群集的资源组重复步骤 1-4,例如
was-cluster-eastus-mjg022624
。
后续步骤
在本教程中,你将设置一个 HA/DR 解决方案,该解决方案由一个主动-被动应用程序基础结构层和一个主动-被动数据库层组成,其中这两个层跨越两个地理位置不同的站点。 在第一个站点中,应用程序基础结构层和数据库层都处于活动状态。 在第二个站点,使用 Azure Site Recovery 服务还原辅助域,辅助数据库处于备用状态。
继续浏览以下参考,以获取更多用于生成 HA/DR 解决方案并在 Azure 上运行 WebSphere 的选项: