教程:使用异地冗余将 Oracle WebLogic Server 迁移到Azure Kubernetes 服务

本教程介绍了在 Azure Kubernetes 服务 (AKS) 上使用 Oracle WebLogic Server (WLS) 实现 Java 业务连续性和灾难恢复(DR)策略的简单而有效的方法。 该解决方案演示如何使用在 AKS 上运行的简单数据库驱动的 Jakarta 企业版 应用程序备份和还原 WLS 工作负荷。 异地冗余是一个复杂的主题,有许多可能的解决方案。 最佳解决方案取决于你的独特要求。 有关实现异地冗余的其他方法,请参阅本文末尾的资源。

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

  • 使用 Azure 优化的最佳做法来实现高可用性和灾难恢复(HA/DR)。
  • 在配对区域中设置Microsoft Azure SQL 数据库故障转移组。
  • 在 AKS 上设置和配置主 WLS 群集。
  • 使用Azure 备份配置异地冗余。
  • 还原次要区域中的 WLS 群集。
  • 设置Azure 流量管理器。
  • 测试故障转移。

下图演示了生成的体系结构:

Azure VM 上具有高可用性和灾难恢复的 WLS 的解决方案体系结构示意图。

Azure 流量管理器 检查区域的运行状况,并相应地将流量路由到应用程序层。 主要区域具有 WLS 群集的完整部署。 只有主要区域正在主动为来自用户的网络请求提供服务。 如果发生灾难或声明的 DR 事件,次要区域将从主要区域的备份还原 WLS 群集。 仅当主要区域遇到服务中断时,才会激活次要区域来接收流量。

Azure 流量管理器使用Azure 应用程序网关和 WebLogic Kubernetes 运算符(WKO)的运行状况检查功能来实现此条件路由。 WKO 与 AKS 运行状况检查深度集成,使Azure 流量管理器能够高度了解 Java 工作负载的运行状况。 主 WLS 群集正在运行,辅助群集已关闭。

应用程序层的异地故障转移恢复时间目标(RTO)取决于启动 AKS 和运行辅助 WLS 群集的时间,这通常不到一小时。 应用程序数据在Azure SQL 数据库故障转移组中持久化并副本 (replica),RTO 为分钟或小时,恢复点目标(RPO)为分钟或小时。 在此体系结构中,Azure 备份每天只有一个 保管库标准 备份用于 WLS 配置。 有关详细信息,请参阅什么是Azure Kubernetes 服务 (AKS) 备份?

数据库层由具有主服务器和辅助服务器的Azure SQL 数据库故障转移组组成。 主服务器处于活动读写模式,并连接到主 WLS 群集。 辅助服务器处于被动就绪模式并连接到辅助 WLS 群集。 异地故障转移都会将组中所有的辅助数据库切换为主角色。 有关Azure SQL 数据库的异地故障转移 RPO 和 RTO,请参阅业务连续性概述。

本文是使用 Azure SQL 数据库 服务编写的,因为本文依赖于该服务的高可用性 (HA) 功能。 其他数据库选项是可能的,但必须考虑所选任何数据库的 HA 功能。 有关详细信息,包括有关如何优化数据源配置以副本 (replica)的信息,请参阅为 Oracle Fusion 中间件主动-被动部署配置数据源。

本文使用Azure 备份来保护 AKS。 有关区域可用性、支持的方案和限制,请参阅Azure Kubernetes 服务备份支持矩阵。 目前,Azure 备份支持保管库层备份和跨区域还原,这些备份在公共预览版中提供。 有关详细信息,请参阅使用 Azure 备份 为 AKS 启用保管库层备份和跨区域还原。

注意

在本文中,必须经常为各种资源创建唯一标识符。 本文使用作为前缀的 <initials><sequence-number> 约定。 例如,如果你的姓名是 Emily Juanita Bernal,则唯一标识符为 ejb01。 为了进一步消除歧义,可以采用格式追加今天的日期 MMDD ,例如 ejb010307

先决条件

  • 如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

  • 请确保在订阅中具有 Owner 角色或 Contributor 角色 User Access Administrator 。 可以使用Azure 门户按照列出 Azure 角色分配中的步骤来验证分配。

  • 准备安装了 Windows、Linux 或 macOS 的本地计算机。

  • 若要运行 Azure CLI 命令,请安装 Azure CLI 版本 2.54.0 或更高版本。

  • 安装和设置 kubectl

  • 安装和设置 Git

  • 安装 Java 标准版实现版本 17 或更高版本 - 例如 OpenJDK 的 Microsoft 内部版本。

  • 安装 Maven 版本 3.9.3 或更高版本。

  • 具有 Oracle 单一登录 (SSO) 帐户的凭据。 要创建帐户,请参阅创建 Oracle 帐户

  • 使用以下步骤接受 WLS 的许可条款:

    1. 访问Oracle 容器注册表并登录。
    2. 如果有支持权利,请选择“中间件”,然后搜索并选择“weblogic_cpu”。
    3. 如果没有 Oracle 的支持权利,请选择“中间件”,然后搜索并选择“Weblogic”。
    4. 接受许可协议。
  • 在 AKS 上运行 WLS 需要了解 WLS 域。 有关 WLS 域的详细信息,请参阅决定是否使用 Migrate WebLogic Server 应用程序的预生成Azure 市场产品/服务部分来Azure Kubernetes 服务。 本文假定你在 AKS 上运行 WLS,该模型使用 映像 域主源类型中的模型、事务日志和存储在外部数据库中,并且没有外部存储。

在配对区域中设置Azure SQL 数据库故障转移组

在本部分中,将在配对区域中创建一个Azure SQL 数据库故障转移组,用于 WLS 群集和应用。 在后面的部分中,将 WLS 配置为将其会话数据和事务日志 (TLOG) 数据存储到此数据库。 这种做法与 Oracle 的最大可用性体系结构(MAA)保持一致。 本指南提供适用于 MAA 的 Azure 适应。 有关 MAA 的详细信息,请参阅 Oracle 最大可用性体系结构

首先,按照快速入门中的Azure 门户步骤创建主Azure SQL 数据库:创建单一数据库 - Azure SQL 数据库。 按照步骤执行,但不包括“清理资源”部分。 在浏览本文时,请使用以下说明,然后在创建并配置Azure SQL 数据库后返回到本文:

  1. 到达“创建单一数据库”部分时,请使用以下步骤:

    1. 在创建新资源组的步骤 4 中,请保存 资源组名称 值,例如 myResourceGroup
    2. 在步骤 5 中, 保存数据库名称 值 - 例如 mySampleDatabase
    3. 在创建服务器的步骤 6 中,使用以下步骤:
      1. 请保存唯一的服务器名称 - 例如 sqlserverprimary-ejb120623
      2. 对于“位置”,请选择“(美国)美国东部”
      3. 对于 身份验证方法,请选择“ 使用 SQL 身份验证”。
      4. 保存服务器管理员登录值 - 例如 azureuser
      5. 将密码值保存到一边
    4. 在步骤 8 中,对于 工作负荷环境,请选择“ 开发”。 查看说明,并考虑工作负荷的其他选项。
    5. 在步骤 11 中,对于 备份存储冗余,请选择“ 本地冗余备份存储”。 请考虑备份的其他选项。 有关详细信息,请参阅 Azure SQL 数据库 中自动备份的“备份存储冗余”部分。
    6. 在步骤 14 的防火墙规则配置中,对于“允许 Azure 服务和资源访问此服务器”,请选择“”。
  2. 到达“查询数据库”部分时,请使用以下步骤:

    1. 在步骤 3 中,输入 SQL 身份验证 服务器管理员登录信息以登录。

      注意

      如果登录失败,出现类似于 IP 地址为“xx.xx.xx.xx.xx”的客户端无法访问服务器的错误消息,请在错误消息末尾选择 服务器 <your-sqlserver-name> 上的 Allowlist IP xx.xx.xx.xx。 等待服务器防火墙规则完成更新,然后再次选择“ 确定 ”。

    2. 在步骤 5 中运行示例查询后,请清除编辑器并创建表。

  1. 若要创建架构,请输入以下查询:

    1. 若要为 TLOG 创建架构,请输入以下查询:

      create table TLOG_msp1_WLStore (ID DECIMAL(38) NOT NULL, TYPE DECIMAL(38) NOT NULL, HANDLE DECIMAL(38) NOT NULL, RECORD VARBINARY(MAX) NOT NULL, PRIMARY KEY (ID));
      create table TLOG_msp2_WLStore (ID DECIMAL(38) NOT NULL, TYPE DECIMAL(38) NOT NULL, HANDLE DECIMAL(38) NOT NULL, RECORD VARBINARY(MAX) NOT NULL, PRIMARY KEY (ID));
      create table TLOG_msp3_WLStore (ID DECIMAL(38) NOT NULL, TYPE DECIMAL(38) NOT NULL, HANDLE DECIMAL(38) NOT NULL, RECORD VARBINARY(MAX) NOT NULL, PRIMARY KEY (ID));
      create table TLOG_msp4_WLStore (ID DECIMAL(38) NOT NULL, TYPE DECIMAL(38) NOT NULL, HANDLE DECIMAL(38) NOT NULL, RECORD VARBINARY(MAX) NOT NULL, PRIMARY KEY (ID));
      create table TLOG_msp5_WLStore (ID DECIMAL(38) NOT NULL, TYPE DECIMAL(38) NOT NULL, HANDLE DECIMAL(38) NOT NULL, RECORD VARBINARY(MAX) NOT NULL, PRIMARY KEY (ID));
      create table wl_servlet_sessions (wl_id VARCHAR(100) NOT NULL, wl_context_path VARCHAR(100) NOT NULL, wl_is_new CHAR(1), wl_create_time DECIMAL(20), wl_is_valid CHAR(1), wl_session_values VARBINARY(MAX), wl_access_time DECIMAL(20), wl_max_inactive_interval INTEGER, PRIMARY KEY (wl_id, wl_context_path));
      

      成功运行后,应会看到消息 Query succeeded: Affected rows: 0

      这些数据库表用于存储 WLS 群集和应用的事务日志(TLOG)和会话数据。 有关详细信息,请参阅使用 JDBC TLOG 存储和使用 Database for Persistent 存储(JDBC 持久性)。

    2. 若要为示例应用程序创建架构,请输入以下查询:

      CREATE TABLE COFFEE (ID NUMERIC(19) NOT NULL, NAME VARCHAR(255) NULL, PRICE FLOAT(32) NULL, PRIMARY KEY (ID));
      CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT NUMERIC(28) NULL, PRIMARY KEY (SEQ_NAME));
      

      成功运行后,应会看到消息 Query succeeded: Affected rows: 0

现在,你已完成文章“快速入门:创建单一数据库 - Azure SQL 数据库”。

接下来,按照配置Azure SQL 数据库故障转移组中的Azure 门户步骤创建Azure SQL 数据库故障转移组。 只需以下部分:创建故障转移组测试计划的故障转移。 完成本文时,请使用以下步骤,然后在创建和配置Azure SQL 数据库故障转移组后返回到本文:

  1. 到达“创建故障转移组”部分时,请使用以下步骤:

    1. 在创建故障转移组的步骤 5 中,选择用于创建新的辅助服务器的选项,然后使用以下步骤:
      1. 输入并保存故障转移组名称 - 例如 failovergroupname-ejb120623
      2. 输入并保存唯一的服务器名称 - 例如 sqlserversecondary-ejb120623
      3. 输入与主服务器相同的服务器管理员和密码。
      4. 对于 “位置”,请选择与用于主数据库的区域不同的区域。
      5. 确保 已选择“允许 Azure 服务访问服务器 ”。
    2. 在步骤 5 中,若要配置 组中的数据库,请选择在主服务器中创建的数据库,例如 mySampleDatabase
  2. 完成“测试计划的故障转移”部分中的所有步骤后,请保持故障转移组页处于打开状态,并在以后将其用于 WLS 群集的故障转移测试。

获取故障转移组的 JDBC 连接字符串和数据库管理员用户名

以下步骤指示获取故障转移组中数据库的 JDBC 连接字符串和数据库用户名。 这些值不同于主数据库的相应值。

  1. 在Azure 门户中,找到在其中部署主数据库的资源组。

  2. 在资源列表中,选择类型为 SQL 数据库的主数据库

  3. 在“设置”下,选择“连接字符串”。

  4. 选择 JDBC

  5. 在 JDBC(SQL 身份验证)的文本区域中,选择复制图标,将 JDBC 连接字符串的值放在剪贴板上。

  6. 在文本编辑器中,粘贴值。 在另一步中对其进行编辑。

  7. 返回到资源组。

  8. 选择 SQL Server 类型的资源,其中包含在前面的步骤中刚刚查看的数据库。

  9. 数据管理下,选择故障转移组

  10. 在页面中间的表中,选择故障转移组。

  11. 在“读/写侦听器终结点”下的文本区域中,选择复制图标,将 JDBC 连接字符串的值放在剪贴板上。

  12. 将值粘贴到文本编辑器中的新行上。 文本编辑器现在应包含类似于以下示例的行:

    jdbc:sqlserver://ejb010307db.database.windows.net:1433;database=ejb010307db;user=azureuser@ejb010307db;password={your_password_here};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;
    ejb010307failover.database.windows.net
    
  13. 使用以下修改创建新行:

    1. 复制整个第一行。

    2. 更改 URL 的主机名部分,以使用读/写侦听器终结点行中的主机名。

    3. 删除对后 name=value 的所有内容 database。 换句话说,删除所有内容,包括之后和之后;database=ejb010307db

      完成后,字符串应类似于以下示例:

      jdbc:sqlserver://ejb010307failover.database.windows.net:1433;database=ejb010307db
      

      此值是 JDBC 连接字符串。

  14. 在同一文本编辑器中,从原始 JDBC 连接字符串获取参数的值user,并将数据库名称替换为读/写侦听器终结点行的第一部分来派生数据库用户名。 继续上一个示例,该值将为 azureuser@ejb010307failover。 此值是数据库管理员用户名。

在 AKS 上设置和配置主 WLS 群集

在本部分中,将使用 AKS 产品/服务上的 Oracle WebLogic Server 在 AKS 上创建 WLS 群集。 美国东部的群集是主要群集,配置为活动群集。

准备示例应用

在本部分中,你将生成并打包示例 CRUD Java/Jakarta企业版 应用程序,该应用程序稍后在 WLS 群集上部署并运行,以便进行故障转移测试。

应用使用 WebLogic Server JDBC 会话持久性 来存储 HTTP 会话数据。 数据源 jdbc/WebLogicCafeDB 存储会话数据,以便在 WebLogic Server 群集中启用故障转移和负载均衡。 它将持久性架构配置为将应用程序数据coffee保存在同一数据源jdbc/WebLogicCafeDB中。

使用以下步骤生成和打包示例:

  1. 使用以下命令克隆示例存储库,并检查与本文对应的标记:

    git clone https://github.com/Azure-Samples/azure-cafe.git
    cd azure-cafe
    git checkout 20231206
    

    如果看到一 Detached HEAD条消息,可以放心地忽略。

  2. 使用以下命令导航到示例目录,然后编译并打包示例:

    cd weblogic-cafe
    mvn clean package
    

成功生成包后,可以在 parent-path-to-your-local-clone/azure-café/weblogic-café/target/weblogic-café.war 中找到它<。> 如果没有看到该包,则必须先排查并解决问题,然后才能继续。

创建存储帐户和存储容器以保存示例应用程序

使用以下步骤创建存储帐户和容器。 其中一些步骤会将你定向到其他指南。 完成这些步骤后,可以上传示例应用程序以在 WLS 上部署。

  1. 登录 Azure 门户

  2. 按照创建存储帐户中的步骤创建存储帐户。 对本文中的值使用以下专用化:

    • 为存储帐户创建新的资源组。
    • 对于“区域”,请选择“美国东部”。
    • 对于存储帐户名称,请使用与资源组名称相同的值。
    • 对于“性能”,请选择“标准”。
    • 对于“冗余”,请选择“本地冗余存储 (LRS)”
    • 其余选项卡不需要专用化。
  3. 继续验证并创建帐户,然后返回本文。

  4. 按照快速入门的“创建容器”部分中的步骤在帐户中创建存储容器:使用Azure 门户上传、下载和列出 blob。

  5. 使用同一篇文章,按照“上传块 blob”部分中的步骤上传之前生成的 azure-café/weblogic-café/target/weblogic-café.war 包。 然后,返回到本文。

部署 AKS 上的 WLS

使用以下步骤在 AKS 上部署 WLS:

  1. 在浏览器中打开 AKS 产品/服务上的 Oracle WebLogic Server,然后选择“ 创建”。 应会看到 套餐的“基本信息 ”窗格。

    显示 AKS 基本信息窗格上的 Oracle WebLogic Server 的Azure 门户的屏幕截图。

  2. 使用以下步骤填写 “基本信息 ”窗格:

    1. 确保为 订阅 显示的值与先决条件部分中列出的角色的值相同。

    2. 必须在空资源组中部署产品/服务。 在 “资源组 ”字段中,选择“ 新建 ”并填写资源组的唯一值,例如 wlsaks-eastus-20240109

    3. 在“实例详细信息”下,选择美国东部”。

    4. 在凭据 WebLogic,分别提供 WebLogic 管理员istratorWebLogic 模型加密的密码。 保存 WebLogic 管理员istrator 的用户名和密码

    5. 在“可选基本配置”下,对于“接受可选配置默认值”,请选择“”。 可选配置显示。

      显示 AKS 基本信息窗格中 Oracle WebLogic Server(可选基本配置)的Azure 门户的屏幕截图。

    6. 对于 托管服务器的名称前缀,请 msp填写 。 稍后使用前缀 TLOG_${serverName}_ 配置 WLS TLOG 表。 本文创建名为 TLOG_msp${index}_WLStoreTLOG 表。 如果需要其他托管服务器名称前缀,请确保该值与 Microsoft SQL Server 表命名约定和真实表名匹配。

    7. 保留其他字段的默认值。

  3. 选择“下一步转到“AKS”窗格。

  4. 在“图像选择”,提供以下信息:

    • 对于 Oracle 单一登录身份验证的用户名,请填写先决条件中的 Oracle SSO 用户名。
    • 对于 Oracle 单一登录身份验证的密码,请填写先决条件中的 Oracle SSO 凭据。

    显示 AKS 窗格上的 Oracle WebLogic Server - 图像选择的Azure 门户的屏幕截图。

  5. 在“应用程序”下,使用以下步骤:

    1. 在“应用程序”部分的“部署应用程序?”旁边,选择“是”。
    2. 在“应用程序包 (.war,.ear,.jar) ”旁边,选择“浏览”。
    3. 开始键入上一部分中存储帐户的名称。 当所需的存储帐户出现时,请选择它。
    4. 从上一部分选择存储容器。
    5. 选择在上一部分中上传的 weblogic-café.war 旁边的检查框。 选择“选择” 。
    6. 保留其他字段的默认值。

    显示 AKS 窗格上的 Oracle WebLogic Server - 应用选择的Azure 门户的屏幕截图。

  6. 选择下一步

  7. 在“TLS/SSL 配置”窗格中保留默认值,然后选择“下一步转到“负载均衡”窗格。

    显示 AKS 负载均衡窗格上的 Oracle WebLogic Server 群集Azure 门户的屏幕截图。

  8. “负载均衡”窗格中,在“为管理员管理控制台创建入口”旁。请确保没有路径 /console*的应用程序,它将导致与管理员管理控制台路径冲突,请选择“”。

  9. 保留其他字段的默认值,然后选择“下一步”

  10. 在 DNS 窗格中保留默认值,然后选择“下一步转到“数据库”窗格。

    显示 AKS 数据库窗格上的 Oracle WebLogic Server 群集Azure 门户的屏幕截图。

  11. “数据库 ”窗格中输入以下值:

    • 对于数据库连接?,请选择“”。
    • 对于“选择数据库类型”,请选择“Microsoft SQL Server”(支持无密码连接)。
    • 对于 JNDI 名称,请输入 jdbc/WebLogicCafeDB
    • 对于 DataSource 连接ion String,请将为 JDBC 连接字符串 保存的值粘贴到“获取故障转移组”部分的 JDBC 连接字符串和数据库管理员用户名中。
    • 对于 全局事务协议,请选择“ ”。
    • 对于数据库用户名,请将为数据库管理员用户名保存的值粘贴到“获取 JDBC”连接字符串和故障转移组部分的数据库管理员用户名中。
    • 输入以前为 数据库密码保存的数据库服务器管理员登录密码。 为 “确认密码”输入相同的值。
    • 保留其他字段的默认值。
  12. 选择“查看 + 创建”。

  13. 等到 运行最终验证... 成功完成,然后选择“ 创建”。 过了一会儿,应会看到 “部署 ”页,其中 显示了部署正在进行 中。

注意

如果在运行最终验证期间 看到任何问题...,请修复这些问题,然后重试。

根据所选区域中的网络条件和其他活动,部署最长可能需要 70 分钟才能完成。 之后,应会看到 部署完成后 会显示在部署页上的文本。

配置 TLOG 数据的存储

在本部分中,你将使用 a ConfigMap替代 WLS 图像模型来配置 TLOG 数据的存储。 有关该操作 ConfigMap的详细信息,请参阅 WebLogic 部署工具模型 ConfigMap

本部分需要安装 Azure CLI 和 kubectl 的 Bash 终端。 使用以下步骤派生必要的 YAML,并配置 TLOG 数据的存储:

  1. 使用以下步骤连接到 AKS 群集:

    1. 打开Azure 门户,转到在 AKS 上的“部署 WLS”部分中预配的资源组。
    2. 从资源列表中选择 AKS 群集,然后选择连接以连接到 AKS 群集。
    3. 选择 Azure CLI ,并按照步骤连接到本地终端中的 AKS 群集。
  2. 使用以下步骤从 WLS 映像模型 YAML 获取 topology: 条目:

    1. 打开Azure 门户,转到在 AKS 上的“部署 WLS”部分中预配的资源组。
    2. 选择“设置”>“部署”。 选择名称以 oracle.20210620-wls-on-aks 开头的第一个部署。
    3. 选择“输出”。 将 shellCmdtoOutputWlsImageModelYaml 值复制到剪贴板。 该值是一个 shell 命令,用于解码模型文件的 base64 字符串,并将内容保存在名为 model.yaml 的文件中。
    4. 将值粘贴到 Bash 终端中,并运行命令以生成 model.yaml 文件。
    5. 编辑文件以删除除顶级 topology: 条目以外的所有内容。 文件中不应有顶级条目,但除外 topology:
    6. 保存文件。
  3. 使用以下步骤从 WLS 域模型 YAML 获取 ConfigMap 名称和命名空间名称:

    1. 打开Azure 门户,转到 AKS 上的“部署 WLS”部分中预配的资源组。

    2. 选择“设置”>“部署”。 选择名称以 oracle.20210620-wls-on-aks 开头的第一个部署。

    3. 选择“输出”。 将 shellCmdtoOutputWlsDomainYaml 的值复制到剪贴板。 该值是一个 shell 命令,用于解码模型文件的 base64 字符串,并将内容保存在 model.yaml

    4. 将值粘贴到终端,并获取名为 domain.yaml 的文件。

    5. 查看 domain.yaml 以下值。

      • spec.configuration.model.configMap。 如果接受默认值,则此值为 sample-domain1-wdt-config-map.
      • metadata.namespace。 如果接受默认值,则此值为 sample-domain1-ns.

      为方便起见,可以使用以下命令将这些值保存为 shell 变量:

      export CONFIG_MAP_NAME=sample-domain1-wdt-config-map
      export WLS_NS=sample-domain1-ns
      
  4. 使用以下命令获取 ConfigMap YAML:

    kubectl get configmap ${CONFIG_MAP_NAME} -n ${WLS_NS} -o yaml > configMap.yaml
    
  5. 使用以下步骤创建 tlog-db-model.yaml 文件:

    1. 在文本编辑器中,创建名为 tlog-db-model.yaml 的空文件。

    2. 插入 model.yaml 的内容,添加空白行,然后插入 configMap.yaml 文件的内容

  6. 在 tlog-db-model.yaml 文件中,找到行结束符。ListenPort: 8001 在以下行中追加此文本,请谨慎 TransactionLogJDBCStore 地注意以下 ListenPort 代码片段中的剩余行被缩进两行,如以下示例所示:

    TransactionLogJDBCStore:
      Enabled: true
      DataSource: jdbc/WebLogicCafeDB
      PrefixName: TLOG_${serverName}_
    

    已完成 的 tlog-db-model.yaml 应非常接近以下示例:

    topology:
      Name: "@@ENV:CUSTOM_DOMAIN_NAME@@"
      ProductionModeEnabled: true
      AdminServerName: "admin-server"
      Cluster:
        "cluster-1":
          DynamicServers:
            ServerTemplate: "cluster-1-template"
            ServerNamePrefix: "@@ENV:MANAGED_SERVER_PREFIX@@"
            DynamicClusterSize: "@@PROP:CLUSTER_SIZE@@"
            MaxDynamicClusterSize: "@@PROP:CLUSTER_SIZE@@"
            MinDynamicClusterSize: "0"
            CalculatedListenPorts: false
      Server:
        "admin-server":
          ListenPort: 7001
      ServerTemplate:
        "cluster-1-template":
          Cluster: "cluster-1"
          ListenPort: 8001
          TransactionLogJDBCStore:
            Enabled: true
            DataSource: jdbc/WebLogicCafeDB
            PrefixName: TLOG_${serverName}_
      SecurityConfiguration:
        NodeManagerUsername: "@@SECRET:__weblogic-credentials__:username@@"
        NodeManagerPasswordEncrypted: "@@SECRET:__weblogic-credentials__:password@@"
    
    resources:
      JDBCSystemResource:
        jdbc/WebLogicCafeDB:
          Target: 'cluster-1'
          JdbcResource:
            JDBCDataSourceParams:
              JNDIName: [
                jdbc/WebLogicCafeDB
              ]
              GlobalTransactionsProtocol: None
            JDBCDriverParams:
              DriverName: com.microsoft.sqlserver.jdbc.SQLServerDriver
              URL: '@@SECRET:ds-secret-sqlserver-1709938597:url@@'
              PasswordEncrypted: '@@SECRET:ds-secret-sqlserver-1709938597:password@@'
              Properties:
                user:
                  Value: '@@SECRET:ds-secret-sqlserver-1709938597:user@@'
            JDBCConnectionPoolParams:
                TestTableName: SQL SELECT 1
                TestConnectionsOnReserve: true
    
  7. 使用 ConfigMap.. 替代 WLS 模型。 若要替代 WLS 模型,请将现有 ConfigMap 模型替换为新模型。 有关详细信息,请参阅 Oracle 文档中的更新现有模型 。 运行以下命令以重新创建:ConfigMap

    export CM_NAME_FOR_MODEL=sample-domain1-wdt-config-map
    kubectl -n sample-domain1-ns delete configmap ${CM_NAME_FOR_MODEL}
    
    # replace path of tlog-db-model.yaml
    kubectl -n sample-domain1-ns create configmap ${CM_NAME_FOR_MODEL} \
      --from-file=tlog-db-model.yaml
    kubectl -n sample-domain1-ns label configmap ${CM_NAME_FOR_MODEL} \
      weblogic.domainUID=sample-domain1
    
  8. 使用以下命令重启 WLS 群集。 需要进行滚动更新才能使新模型正常工作。

    export RESTART_VERSION=$(kubectl -n sample-domain1-ns get domain sample-domain1 '-o=jsonpath={.spec.restartVersion}')
    # increase restart version
    export RESTART_VERSION=$((RESTART_VERSION + 1))
    
    kubectl -n sample-domain1-ns patch domain sample-domain1 \
        --type=json \
        '-p=[{"op": "replace", "path": "/spec/restartVersion", "value": "'${RESTART_VERSION}'" }]'
    

在继续操作之前,请确保 WLS Pod 正在运行。 可以使用以下命令来监视 Pod 的状态:

kubectl get pod -n sample-domain1-ns -w

注意

在本文中,WLS 模型包含在应用程序容器映像中,该映像是由 AKS 产品/服务上的 WLS 创建的。 TLOG 通过重写包含模型文件的 WDT ConfigMap 来配置现有模型,并使用域 CRD configuration.model.configMap 字段引用映射。 在生产方案中, 建议使用辅助映像 在 Pod 中包括映像模型文件中的模型、应用程序存档文件和 WebLogic 部署工具安装。 此功能无需在指定的 domain.spec.image映像中提供这些文件。

使用 Azure 备份 配置异地冗余

在本部分中,你将使用Azure 备份通过备份扩展(必须在群集中安装)来备份 AKS 群集。

使用以下步骤配置异地冗余:

  1. 在创建存储帐户和存储容器中创建 的存储帐户中为 AKS 备份扩展创建新的存储容器,用于保存示例应用程序 部分。

  2. 使用以下命令安装 AKS 备份扩展并为群集启用 CSI 驱动程序和快照:

    #replace with your resource group name.
    export RG_NAME=wlsaks-eastus-20240109
    export AKS_NAME=$(az aks list \
        --resource-group ${RG_NAME} \
        --query "[0].name" \
        --output tsv)
    
    az aks update \
        --resource-group ${RG_NAME} \
        --name ${AKS_NAME} \
        --enable-disk-driver \
        --enable-file-driver \
        --enable-blob-driver \
        --enable-snapshot-controller --yes
    

    启用驱动程序大约需要 5 分钟。 在继续操作之前,请确保命令完成且没有错误。

  1. 打开已部署 AKS 的资源组。 从资源列表中选择 AKS 群集。

  2. 在 AKS 登陆页上,选择“设置>备份安装>扩展”。

  3. “安装 AKS 备份扩展 ”页上,选择“ 下一步”。 选择在前面的步骤中创建的存储帐户和 Blob 容器。 选择“下一步”,然后选择“创建”。 完成此步骤大约需要 5 分钟。

  1. 打开Azure 门户,在顶部的搜索栏中搜索备份保管库。 应会看到它列在“服务”下。 选择该文件夹。

  2. 若要启用 AKS 备份,请按照备份Azure Kubernetes 服务中的步骤,最多使用 Azure 备份,但不包括“在 AKS 备份期间使用挂钩”部分。 执行以下步骤中指示的调整。

  3. 到达“创建备份保管库”部分时,进行以下调整:

    • 对于步骤 1,在“区域”下,选择“美国东部”。 在备份存储冗余下,使用全局冗余

      显示“备份保管库基本”窗格的Azure 门户的屏幕截图。

    • 对于步骤 2,启用 跨区域还原

  4. 当到达“创建备份策略”部分时,当系统要求创建保留策略时,请进行以下调整:

    1. 添加选择保管库标准的保留规则

      显示保管库标准选项选择的Azure 门户的屏幕截图。

    2. 选择 添加

  5. 到达“配置备份”部分时,请进行以下调整。 步骤 1-5 适用于 AKS 扩展安装。 跳过步骤 1-5 并从步骤 6 开始。

    • 对于步骤 7,遇到权限错误。 选择“ 授予权限 ”以继续。 权限部署完成后,如果错误仍然存在,请选择“ 重新验证 ”以刷新角色分配。

      显示 AKS 配置备份授予权限的Azure 门户的屏幕截图。

    • 对于步骤 10,找到 “选择要备份的资源”,并进行以下调整:

      • 对于 备份实例名称,请填写唯一名称。
      • 对于 命名空间,请选择 WebLogic 运算符和 WebLogic Server 的命名空间。 在本文中,选择 weblogic-operator-nssample-domain1-ns
      • 对于 “其他选项”,请选择所有选项。 确保 已选择“包括机密 ”。

      显示 AKS 配置备份选择资源的Azure 门户的屏幕截图。

    • 对于步骤 11,遇到角色分配错误。 从列表中选择数据源,然后选择“ 分配缺少的角色 ”以缓解错误。

      显示 AKS 配置备份验证的Azure 门户的屏幕截图。

准备还原次要区域中的 WLS 群集

在本部分中,准备还原次要区域中的 WLS 群集。 此处,次要区域是美国西部。 在还原之前,必须在美国西部区域安装了 AKS 备份扩展的 AKS 群集。

为异地副本 (replica)配置Azure 容器注册表

使用以下步骤为异地副本 (replica)配置Azure 容器注册表(ACR),其中包含在 AKS 上的部署 WLS 部分中创建的 WLS 映像。 若要启用 ACR 副本 (replica)tion,必须将其升级到高级版定价计划。 有关详细信息,请参阅 Azure 容器注册表中的异地复制

  1. 打开在 AKS 上的“部署 WLS ”部分中预配的资源组。 从资源列表中选择名称以 wlsaksacr 开头的 ACR。
  2. 在 ACR 登陆页中,选择设置>Properties。 对于定价计划,请选择高级版,然后选择“保存”。
  3. 在导航窗格中,选择“服务>异地副本 (replica)”。 选择“添加”以在页面中添加副本 (replica)区域。
  4. “创建副本 (replica)”页中,选择“位置”,选择“美国西部”,然后选择“创建”。

部署完成后,将为异地副本 (replica)启用 ACR。

在次要区域中创建存储帐户

若要启用 AKS 备份扩展,必须在同一区域中提供一个包含空容器的存储帐户。

若要跨区域还原备份,必须提供备份数据冻结的暂存位置。 此暂存位置包括资源组及其中与目标群集相同的区域和订阅中的存储帐户,用于还原。

使用以下步骤创建存储帐户和容器。 其中一些步骤会将你定向到其他指南。

  1. 登录 Azure 门户
  2. 按照创建存储帐户中的步骤创建存储帐户。 无需执行本文中的所有步骤。 填写“基本信息”窗格中显示的字段。 对于“区域”,选择“美国西部”,然后选择“查看 + 创建以接受默认选项。 继续验证并创建帐户,然后返回本文。
  3. 按照快速入门的“创建容器”部分中的步骤为 AKS 备份扩展创建存储容器:使用Azure 门户上传、下载和列出 blob。
  4. 创建存储容器作为暂存位置,以便在还原期间使用。

在次要区域中准备 AKS 群集

以下部分演示如何在次要区域中创建 AKS 群集。

创建新的 AKS 群集

本文使用 应用程序网关 入口控制器公开 WLS 应用程序。 在本部分中,将在美国西部区域创建新的 AKS 群集。 然后,使用新的应用程序网关实例启用入口控制器加载项。 有关详细信息,请参阅 为具有新应用程序网关实例的新 AKS 群集启用入口控制器加载项。

使用以下步骤创建 AKS 群集:

  1. 使用以下命令在次要区域中创建资源组:

    export RG_NAME_WESTUS=wlsaks-westus-20240109
    
    az group create --name ${RG_NAME_WESTUS} --location westus
    
  2. 使用以下命令部署启用了加载项的 AKS 群集:

    export AKS_NAME_WESTUS=${RG_NAME_WESTUS}aks
    export GATEWAY_NAME_WESTUS=${RG_NAME_WESTUS}gw
    
    az aks create \
        --resource-group ${RG_NAME_WESTUS} \
        --name ${AKS_NAME_WESTUS} \
        --network-plugin azure \
        --enable-managed-identity \
        --enable-addons ingress-appgw \
        --appgw-name ${GATEWAY_NAME_WESTUS} \
        --appgw-subnet-cidr "10.225.0.0/16" \
        --generate-ssh-keys
    

    此命令会自动创建一个 Standard_v2 SKU 在 AKS 节点资源组中具有名称 ${RG_NAME_WESTUS}gw 的应用程序网关实例。 节点资源组默认命名 MC_resource-group-name_cluster-name_location

    注意

    在 AKS 上部署 WLS 部分中预配 的 AKS 群集跨美国东部区域的三个可用性区域运行。 美国西部区域不支持可用性区域。 美国西部的 AKS 群集不是区域冗余群集。 如果生产环境需要区域冗余,请确保配对区域支持可用性区域。 有关详细信息,请参阅创建使用可用性区域的 Azure Kubernetes 服务 (AKS) 群集的 AKS 群集可用性区域的概述部分。

  3. 使用以下命令获取应用程序网关实例的公共 IP 地址。 请保留本文稍后使用的 IP 地址。

    export APPGW_ID=$(az aks show \
        --resource-group ${RG_NAME_WESTUS} \
        --name ${AKS_NAME_WESTUS} \
        --query 'addonProfiles.ingressApplicationGateway.config.effectiveApplicationGatewayId' \
        --output tsv)
    echo ${APPGW_ID}
    export APPGW_IP_ID=$(az network application-gateway show \
        --id ${APPGW_ID} \
        --query frontendIPConfigurations\[0\].publicIPAddress.id \
        --output tsv)
    echo ${APPGW_IP_ID}
    export APPGW_IP_ADDRESS=$(az network public-ip show \
        --id ${APPGW_IP_ID} \
        --query ipAddress \
        --output tsv)
    echo "App Gateway pubilc IP address: ${APPGW_IP_ADDRESS}"
    
  4. 使用以下命令将域名服务 (DNS) 名称标签附加到公共 IP 地址资源。 替换为 <your-chosen-DNS-name> 适当的值 ,例如 ejb010316

    az network public-ip update --ids ${APPGW_IP_ID} --dns-name <your-chosen-DNS-name>
    
  5. 可以使用 检查公共 IP az network public-ip show的完全限定域名 (FQDN)。 以下示例显示了具有 DNS 标签 ejb010316的 FQDN:

    az network public-ip show \
        --id ${APPGW_IP_ID} \
        --query dnsSettings.fqdn \
        --output tsv
    

    此命令会生成类似于以下示例的输出:

    ejb010316.westus.cloudapp.azure.com
    

注意

如果使用的是现有 AKS 群集,请在继续操作之前完成以下两项操作:

  • 按照为现有 AKS 群集启用应用程序网关入口控制器加载项中的步骤启用入口控制器加载项,启用入口控制器加载项。
  • 如果在目标命名空间中运行 WLS,为了避免冲突,请清理 WebLogic 操作员命名空间和 WebLogic Server 命名空间中的 WLS 资源。 在本文中,AKS 上的 WLS 产品/服务在命名空间 weblogic-operator-ns 中预配了 WebLogic 运算符,并在命名空间 sample-domain1-ns中预配了 WebLogic Server。 运行 kubectl delete namespace weblogic-operator-ns sample-domain1-ns 以删除两个命名空间。

启用 AKS 备份扩展

在继续之前,请使用以下步骤将 AKS 备份扩展安装到次要区域中的群集:

  1. 使用以下命令连接到美国西部区域的 AKS 群集:

    az aks get-credentials \
        --resource-group ${RG_NAME_WESTUS} \
        --name ${AKS_NAME_WESTUS}
    
  2. 使用以下命令为群集启用 CSI 驱动程序和快照:

    az aks update \
        --resource-group ${RG_NAME_WESTUS} \
        --name ${AKS_NAME_WESTUS} \
        --enable-disk-driver \
        --enable-file-driver \
        --enable-blob-driver \
        --enable-snapshot-controller --yes
    
  1. 打开已部署 AKS 的资源组。 从资源列表中选择 AKS 群集。

  2. 在 AKS 登陆页上,选择“设置>备份安装>扩展”。

  3. “安装 AKS 备份扩展 ”页上,选择“ 下一步”。 选择在前面的步骤中创建的存储帐户和 Blob 容器。 选择“下一步”,然后选择“创建”。 完成此步骤大约需要 5 分钟。

注意

若要节省成本,可以按照停止和启动 Azure Kubernetes 服务 (AKS) 群集中的步骤停止次要区域中的 AKS 群集。 在还原 WLS 群集之前启动它。

等待保管库标准备份发生

在 AKS 中 ,保管库标准层 是唯一支持 异地冗余跨区域还原的层。 如 AKS 备份支持哪个备份存储层中所述 “每天只有一个计划恢复点移动到保管库层。必须等待 保管库标准 备份发生。 良好的下限是在完成上一步后等待 24 小时,然后再继续。

停止主群集

主 WLS 群集和辅助 WLS 群集使用相同的 TLOG 数据库进行配置。 只有一个群集可以同时拥有数据库。 若要确保辅助群集正常工作,请停止主 WLS 群集。 在本文中,使用以下步骤停止 AKS 群集以禁用 WLS 群集:

  1. 打开Azure 门户,转到在 AKS 上的“部署 WLS”部分中预配的资源组。
  2. 打开资源组中列出的 AKS 群集。
  3. 选择“停止以停止 AKS 群集。 在继续之前,请确保部署完成。

还原 WLS 群集

AKS 备份支持操作层和保管库层备份。 仅存储于保管库层中的备份可用于在不同的区域(Azure 配对区域)中还原到群集。 根据备份策略中设置的保留规则,一天的第一次成功备份将移动到 Blob 容器跨区域。 有关详细信息,请参阅 AKS 备份支持哪些备份存储层?什么是Azure Kubernetes 服务备份部分

使用Azure 备份部分在“配置异地冗余”部分中配置异地冗余后,保管库层备份至少需要一天时间才能进行还原。

使用以下步骤还原 WLS 群集:

  1. 打开Azure 门户并搜索备份中心。 在“服务”下选择“备份中心”。

  2. 在“管理”下,选择“备份实例”。 筛选数据源类型 Kubernetes 服务 ,查找在上一部分创建的备份实例。

  3. 选择备份实例以查看还原点列表。 在本文中,实例名称是类似于 wlsonaks*\wlsaksinstance20240109..

    显示备份实例还原点的Azure 门户的屏幕截图。

  4. 选择最新的 操作备份和保管库标准 备份,然后选择“ 更多选项”。 选择“还原以启动还原过程。

  5. “还原 ”页上,默认窗格为 “还原点”。 选择 “上一页 ”以更改为 “基本信息 ”窗格。 对于“还原区域”,请选择“次要区域”,然后选择“下一步:还原点”。

    显示“还原基本信息”窗格的Azure 门户的屏幕截图。

  6. “还原点 ”窗格中,对于 “选择要还原的层”,请选择 “保管库存储”,然后选择“ 下一步:还原参数”。

    显示“还原点”窗格的Azure 门户的屏幕截图。

  7. “还原参数 ”窗格中,使用以下步骤:

    1. 对于 “选择目标群集”,请选择在美国西部区域创建的 AKS 群集。 如以下屏幕截图所示,遇到权限问题。 选择“ 授予权限 ”以缓解错误。

    2. 对于备份暂存位置,请选择在美国西部创建的存储帐户。 如以下屏幕截图所示,遇到权限问题。 选择“ 分配缺少的角色 ”以缓解错误。

    3. 如果角色分配完成后仍发生错误,请选择“ 重新验证 ”以刷新权限。

      显示“还原参数”窗格的Azure 门户的屏幕截图。

    4. 授予缺少的权限时,如果系统要求指定 范围,请接受默认值。

    5. 选择“验证”。 应会看到消息“ 验证已成功完成”。 否则,请在继续操作之前对问题进行故障排除和解决问题。

  8. 选择“ 下一步:查看 + 还原”,然后选择“ 还原”。 还原 WLS 群集大约需要 10 分钟。

  9. 可以从备份中心>监视 + 报告>备份作业监视还原过程,如以下屏幕截图所示:

    显示正在进行的 CrossRegionRestore 的Azure 门户的屏幕截图。

  10. 选择“刷新以查看最新进度。

  11. 完成此过程后不会出错,请停止备份 AKS 群集。 在后续步骤中访问 TLOG 数据库时,无法这样做会导致所有权冲突。

  12. 启动主群集。

设置Azure 流量管理器

在本部分中,你将创建一个Azure 流量管理器,用于将流量分发到全球 Azure 区域面向公众的应用程序。 主终结点指向主 WLS 群集中的Azure 应用程序网关,辅助终结点指向辅助 WLS 群集中的Azure 应用程序网关。

按照快速入门中的步骤创建Azure 流量管理器配置文件:使用Azure 门户创建流量管理员配置文件。 跳过“先决条件”部分。 只需以下部分:创建流量管理员配置文件添加流量管理员终结点测试流量管理员配置文件。 执行以下部分时,请使用以下步骤,然后在创建并配置Azure 流量管理器后返回到本文:

  1. 到达“创建流量管理员配置文件”部分时,请在步骤 2“创建流量管理员配置文件”中,使用以下步骤:

    1. 保存名称的唯一流量管理员配置文件名称 - 例如 tmprofile-ejb120623
    2. 保存资源组的新资源组名称 - 例如 myResourceGroupTM1
  2. 到达“添加流量管理员终结点”部分时,请使用以下步骤:

    1. 在“从搜索结果中选择配置文件”步骤后,使用以下步骤:
      1. 在“设置”下,选择“配置”。
      2. 对于 DNS 生存时间(TTL),请输入 10
      3. 在“终结点监视器设置”下输入 /weblogic/ready
      4. 在“快速终结点故障转移设置”,使用以下值:
        • 对于 内部探测,请输入 10
        • 对于 允许的失败次数,请输入 3
        • 对于 探测超时为 5
      5. 选择“保存”。 等待它完成。
    2. 在添加主终结点 myPrimaryEndpoint的步骤 4 中,使用以下步骤:
      1. 对于 目标资源类型,请选择 “公共 IP 地址”。
      2. 选择“选择公共 IP 地址”下拉列表,并输入之前保存在美国东部 WLS 群集中部署应用程序网关的 IP 地址。 应会看到匹配的一个条目。 为 公共 IP 地址选择它。
    3. 在添加故障转移/辅助终结点 myFailoverEndpoint 的步骤 6 中,使用以下步骤:
      1. 对于 目标资源类型,请选择 “公共 IP 地址”。
      2. 选择“选择公共 IP 地址”下拉列表,并输入之前保存在美国西部 WLS 群集中部署应用程序网关的 IP 地址。 应会看到匹配的一个条目。 为 公共 IP 地址选择它。
    4. 等待一段时间。 选择“刷新直到监视器状态达到以下状态:
      • 主终结点为 Online
      • 故障转移终结点已降级。
  3. 到达“测试流量管理员配置文件”部分时,请使用以下步骤:

    1. 在子部分检查 DNS 名称,在步骤 3 中,将流量管理员配置文件的 DNS 名称保存到一边,例如http://tmprofile-ejb120623.trafficmanager.net
    2. 在子节视图中流量管理员操作中,使用以下步骤:
      1. 在步骤 1 和步骤 3 中,将 /weblogic/ready 追加到 Web 浏览器中流量管理员配置文件的 DNS 名称,例如http://tmprofile-ejb120623.trafficmanager.net/weblogic/ready。 应会看到一个空页,没有任何错误消息。
      2. 在步骤 4 中,无法访问 /weblogic/ready,这是预期,因为辅助群集已停止。
      3. 重新启用主终结点。

现在,主终结点的状态为“已启用”“联机”,故障转移终结点在流量管理员配置文件中具有“已启用”和降级”状态。 使页面保持打开状态,以便稍后监视终结点状态。

测试从主要故障转移到辅助副本的故障转移

若要测试故障转移,请在本部分中手动将主数据库服务器和 WLS 群集故障转移到辅助数据库服务器和 WLS 群集。

由于主群集已启动并运行,因此它充当活动群集,并处理由流量管理员配置文件路由的所有用户请求。

在浏览器的新选项卡中打开Azure 流量管理器配置文件的 DNS 名称,并追加已部署应用的上下文根 /weblogic-café ,例如http://tmprofile-ejb120623.trafficmanager.net/weblogic-cafe。 使用名称和价格创建新咖啡 - 例如,价格为 10 的 Coffee 1 此条目保存在应用程序数据表和数据库的会话表中。 看到的 UI 应类似于以下屏幕截图:

示例应用程序 UI 的屏幕截图。

如果你的 UI 看起来不相似,请在继续之前进行故障排除并解决问题。

使页面保持打开状态,以便稍后使用它进行故障转移测试。

故障转移到辅助站点

使用以下步骤将主要副本故障转移到辅助数据库。

首先,使用以下步骤停止主要 AKS 群集:

  1. 打开Azure 门户,转到 AKS 上的“部署 WLS”部分中预配的资源组。
  2. 打开资源组中列出的 AKS 群集。
  3. 选择“停止以停止 AKS 群集。 在继续之前,请确保部署完成。

接下来,使用以下步骤将Azure SQL 数据库从主服务器故障转移到辅助服务器。

  1. 切换到Azure SQL 数据库故障转移组的浏览器选项卡。
  2. 选择“故障转移>是”。
  3. 等待它完成。

接下来,使用以下步骤启动辅助群集。

  1. 打开Azure 门户,转到次要区域中具有 AKS 群集的资源组。
  2. 打开资源组中列出的 AKS 群集。
  3. 选择“开始”以启动 AKS 群集。 在继续之前,请确保部署完成。

最后,使用以下步骤在终结点 myFailoverEndpoint 处于 联机 状态后验证示例应用:

  1. 切换到流量管理员的浏览器选项卡,然后刷新页面,直到看到终结点myFailoverEndpoint的“监视”状态值进入“联机”状态。

  2. 切换到示例应用的浏览器选项卡并刷新页面。 应会看到应用程序数据表中保留的数据和 UI 中显示的会话表,如以下屏幕截图所示:

    故障转移后示例应用程序 UI 的屏幕截图。

    如果未观察到此行为,可能是因为流量管理员需要时间来更新 DNS 以指向故障转移站点。 问题也可能是浏览器缓存了指向失败站点的 DNS 名称解析结果。 等待一段时间,然后再次刷新页面。

注意

生产就绪的 HA/DR 解决方案将考虑定期将 WLS 配置从主群集持续复制到辅助群集。 有关如何执行此操作的信息,请参阅本文末尾对 Oracle 文档的引用。

若要自动执行故障转移,请考虑对流量管理员指标和Azure 自动化使用警报。 有关详细信息,请参阅流量管理员指标和警报流量管理员指标的警报部分,并使用警报触发Azure 自动化 Runbook

故障回复到主站点

若要故障回复到主站点,必须确保两个群集具有镜像备份配置。 可以使用以下步骤实现此状态:

  1. 按照从步骤 4 开始的 Azure 备份“配置异地冗余”部分中的步骤,在美国西部区域启用 AKS 群集备份。
  2. 按照“准备”中的 步骤,将最新的保管库层备份还原到美国东部区域的群集,以还原次要区域 部分中的 WLS 群集。 跳过已完成的步骤。
  3. 使用故障转移到辅助站点部分中的类似步骤故障回复到主站点,包括数据库服务器和群集。

清理资源

如果不打算继续使用 WLS 群集和其他组件,请使用以下步骤删除资源组以清理本教程中使用的资源:

  1. 在Azure 门户顶部的搜索框中,输入备份保管库并从搜索结果中选择备份保管库。
  2. 选择“管理>属性>软删除>更新”。 在“启用软删除”旁边,取消选择检查框。
  3. 选择“管理>备份实例”。 选择创建的实例并将其删除。
  4. 在Azure 门户顶部的搜索框中输入Azure SQL 数据库服务器的资源组名称(例如myResourceGroup),并从搜索结果中选择匹配的资源组。
  5. 选择“删除资源组”
  6. 输入资源组名称以确认删除时,输入资源组名称。
  7. 选择“删除”。
  8. 对流量管理员的资源组重复步骤 4-7 ,例如myResourceGroupTM1
  9. 对主 WLS 群集的资源组重复步骤 4-7 , 例如 wls-aks-eastus-20240109
  10. 对辅助 WLS 群集的资源组重复步骤 4-7 ,例如 wls-aks-westus-20240109

后续步骤

在本教程中,你将设置一个 HA/DR 解决方案,该解决方案由具有主动-被动数据库层的主动-被动应用程序基础结构层组成,以及这两个层跨越两个地理上不同的站点。 在第一个站点中,应用程序基础结构层和数据库层都处于活动状态。 在第二个站点上,辅助域已关闭,辅助数据库处于备用状态。

继续浏览以下参考,以获取更多用于生成 HA/DR 解决方案并在 Azure 上运行 WLS 的选项: