教學課程:使用異地備援將 Oracle WebLogic Server 遷移至 Azure Kubernetes Service

本教學課程說明在 Azure Kubernetes Service (AKS) 上使用 Oracle WebLogic Server (WLS) 實作 Java 商務持續性和災害復原 (DR) 策略的簡單且有效方式。 此解決方案說明如何使用在 AKS 上執行的簡單資料庫驅動 Jakarta EE 應用程式來備份和還原 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 資料庫 故障轉移群組中,RTO 為分鐘或小時,而恢復點目標為分鐘或小時。 在此架構中,Azure 備份每天只有一個 WLS 組態的保存庫標準 備份。 如需詳細資訊,請參閱 什麼是 Azure Kubernetes Service (AKS) 備份?

資料庫層是由具有主伺服器和輔助伺服器的 Azure SQL 資料庫 故障轉移群組所組成。 主伺服器處於使用中讀寫模式,並連線到主要 WLS 叢集。 輔助伺服器處於被動就緒模式,並連線到次要 WLS 叢集。 異地容錯移轉會將群組中所有次要資料庫切換到主要角色。 如需 Azure SQL 資料庫 的異地故障轉移 RPO 和 RTO,請參閱商務持續性概觀

本文是使用 Azure SQL 資料庫 服務撰寫的,因為本文依賴該服務的高可用性 (HA) 功能。 其他資料庫選擇是可能的,但您必須考慮您選擇的任何資料庫的HA功能。 如需詳細資訊,包括如何優化數據源設定以進行複寫的資訊,請參閱 設定 Oracle Fusion 中間件主動-被動部署的數據源。

本文使用 Azure 備份 來保護 AKS。 如需區域可用性、支援的案例和限制,請參閱 Azure Kubernetes Service 備份支援矩陣。 目前,Azure 備份 支援保存庫層備份和跨區域還原,這些區域可在公開預覽中取得。 如需詳細資訊,請參閱使用 Azure 備份 啟用 AKS 的保存庫層備份和跨區域還原。

注意

在本文中,您必須經常為各種資源建立唯一標識符。 本文使用 的 <initials><sequence-number> 慣例做為前置詞。 例如,如果您的名稱是 Emily Juanita Bernal,則唯一識別碼會是 ejb01。 如需其他模棱兩可,您可以附加今天的日期 MMDD 格式,例如 ejb010307

必要條件

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

  • 請確定您有訂用 Owner 帳戶中的角色或 ContributorUser Access Administrator 角色。 您可以依照使用 Azure 入口網站 列出 Azure 角色指派中的步驟來確認指派。

  • 準備已安裝 Windows、Linux 或 macOS 的本機電腦。

  • 若要執行 Azure CLI 命令,請安裝 Azure CLI 2.54.0 版或更新版本。

  • 安裝和設定 kubectl

  • 安裝和設定 Git

  • 安裝 Java SE 實作版本 17 或更新版本 - 例如 OpenJDK 的Microsoft組建。

  • 安裝 Maven 3.9.3 版或更新版本。

  • 具有 Oracle 單一登入 (SSO) 帳戶的認證。 若要建立帳戶,請參閱建立 Oracle 帳戶

  • 使用下列步驟來接受 WLS 的授權條款:

    1. 請造訪 Oracle Container Registry,並登入。
    2. 如果您有支援權利,則請選取 [中介軟體],然後搜尋並選取 [weblogic_cpu]
    3. 如果您沒有來自 Oracle 的支援權利,則請選取 [中介軟體],然後搜尋並選取 [weblogic]
    4. 接受授權合約。
  • 在 AKS 上執行 WLS 需要瞭解 WLS 網域。 如需 WLS 網域的詳細資訊,請參閱將 WebLogic Server 應用程式遷移至 Azure Kubernetes Service<決定是否要使用預先建置的 Azure Marketplace 供應專案>一節。 本文假設您使用映像網域主來源類型的模型,在AKS上執行 WLS,以及事務歷史記錄和儲存在外部資料庫中,而且沒有外部記憶體。

在配對區域中設定 Azure SQL 資料庫 故障轉移群組

在本節中,您會在配對區域中建立 Azure SQL 資料庫 故障轉移群組,以搭配您的 WLS 叢集和應用程式使用。 在稍後的章節中,您會設定 WLS 將其會話數據和事務歷史記錄 (TLOG) 資料儲存至此資料庫。 這種做法與 Oracle 的最大可用性架構 (MAA) 一致。 本指南提供適用於 MAA 的 Azure 調整。 如需 MAA 的詳細資訊,請參閱 Oracle 最大可用性架構

首先,遵循快速入門:建立單一資料庫 - Azure SQL 資料庫 中的 Azure 入口網站 步驟來建立主要 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』 的客戶端無法存取伺服器的錯誤訊息,請在錯誤訊息結尾選取 <[允許清單 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 存放區和使用資料庫進行永續性記憶體 (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 Database 的主資料庫

  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/JakartaEE 應用程式,以供稍後在 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 系統管理員WebLogic 模型加密的密碼。 請保留 WebLogic Administrator 的使用者名稱和密碼。

    5. 在 [選擇性基本設定] 底下,針對 [接受選擇性組態的預設值?],選取 []。 選擇性組態會顯示。

      顯示 [AKS 基本] 窗格 [選用基本設定] 上 Oracle WebLogic Server 之 Azure 入口網站 螢幕快照。

    6. 針對 [ 受控伺服器的名稱前置詞],填入 msp。 您稍後使用前置詞 TLOG_${serverName}_ 設定 WLS TLOG 數據表。 本文會建立名稱為 TLOG_msp${index}_WLStore的 TLOG 數據表。 如果您想要不同的受管理伺服器名稱前置詞,請確定值符合 SQL Server 數據表命名慣例和實際數據表名稱Microsoft。

    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 連接字串,在取得故障轉移群組區段的 JDBC 連接字串 和資料庫管理員用戶名稱中,貼上您為 JDBC 儲存的值 連接字串
    • 針對 [ 全域交易通訊協定],選取 [ ]。
    • 針對 [資料庫用戶名稱],在取得故障轉移群組區段的 JDBC 連接字串 和資料庫管理員用戶名稱中,貼上您為資料庫管理員用戶名稱儲存的值。
    • 輸入您先前 針對資料庫密碼所儲存的資料庫伺服器管理員登入密碼。 針對 [確認密碼] 輸入相同的值
    • 保留其他欄位的預設值。
  12. 選取 [檢閱 + 建立]。

  13. 等到 執行最終驗證 ...成功完成,然後選取 [ 建立]。 一段時間之後,您應該會看到 [部署進行中] 頁面

注意

如果您在執行最終驗證期間 看到任何問題...,請加以修正,然後再試一次。

視所選區域中的網路狀況和其他活動而定,部署最多可能需要 70 分鐘的時間才能完成。 之後,您應該會看到部署完成的文字顯示在部署頁面上。

設定 TLOG 資料的記憶體

在本節中,您會使用 ConfigMap覆寫 WLS 映射模型來設定 TLOG 數據的儲存。 如需 的詳細資訊 ConfigMap,請參閱 WebLogic Deploy Tooling Model 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 值複製到剪貼簿。 值是殼層命令,可譯碼模型檔案的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 的值複製到剪貼簿。 此值是殼層命令,可譯碼模型檔案的base64字串,並將內容儲存在model.yaml

    4. 將值貼到終端機,並取得名為 domain.yaml 的檔案。

    5. 查看 , domain.yaml 以取得下列值。

      • spec.configuration.model.configMap. 如果您接受預設值,此值為 sample-domain1-wdt-config-map
      • metadata.namespace. 如果您接受預設值,此值為 sample-domain1-ns

      為了方便起見,您可以使用下列命令將這些值儲存為殼層變數:

      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的行。 在下列這一行附加此文字,請非常小心TransactionLogJDBCStoreListenPort,下列代碼段中的其餘行會縮排兩行,如下列範例所示:

    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. 使用覆寫 ConfigMapWLS 模型。 若要覆寫 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 Deploy 工具安裝。 這項功能不需要在 中指定的 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 容器。 選取 [下一步],然後選取 [建立]。 完成此步驟大約需要五分鐘的時間。

  1. 開啟 Azure 入口網站,在頂端的搜尋列中,搜尋備份保存庫。 您應該會看到它列在 [服務] 底下。 選取該連結。

  2. 若要啟用 AKS 備份,請依照備份 Azure Kubernetes Service 中的步驟,使用最多 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-ns ] 和 sample-domain1-ns
      • 針對 [其他選項],選取所有選項。 請確定 已選取 [包含秘密 ]。

      顯示 AKS 設定備份選取資源的 Azure 入口網站 螢幕快照。

    • 針對步驟 11,您遇到角色指派錯誤。 從清單中選取您的數據源,然後選取 [ 指派遺漏的角色 以減輕錯誤]。

      顯示 AKS 設定備份驗證之 Azure 入口網站 的螢幕快照。

準備還原次要區域中的 WLS 叢集

在本節中,您會準備還原次要區域中的 WLS 叢集。 在這裡,次要區域是美國西部。 還原之前,您必須在美國西部區域中安裝 AKS 備份延伸模組的 AKS 叢集。

設定 Azure Container Registry 以進行異地複寫

使用下列步驟來設定異地復寫的 Azure Container Registry (ACR),其中包含您在 AKS 上部署 WLS 一節中建立的 WLS 映射。 若要啟用 ACR 複寫,您必須將其升級至進階定價方案。 如需詳細資訊,請參閱 Azure Container Registry 中的異地複寫

  1. 開啟您在 AKS 上部署 WLS 一節中布建的資源群組。 從資源清單中,選取名稱開頭為 wlsaksacr 的 ACR。
  2. 在 ACR 登陸頁面中,選取 [設定>屬性]。 針對 [定價方案],選取 [進階],然後選取 [儲存]。
  3. 在瀏覽窗格中,選取 [服務>異地複寫]。 選取 [新增 ] 以在頁面中新增複寫區域。
  4. 在 [ 建立複寫 ] 頁面中,針對 [位置],選取 [美國西部],然後選取 [ 建立]。

部署完成之後,ACR 會啟用異地複寫。

在次要區域中建立記憶體帳戶

若要啟用 AKS 備份擴充功能,您必須在相同區域中提供具有空白容器的記憶體帳戶。

若要還原跨區域的備份,您必須提供備份數據凍結的預備位置。 此暫存位置包含資源群組和記憶體帳戶,其位於與還原目標叢集相同的區域和訂用帳戶內。

使用下列步驟來建立記憶體帳戶和容器。 其中一些步驟會引導您前往其他指南。

  1. 登入 Azure 入口網站
  2. 依照建立記憶體帳戶中的 步驟建立記憶體帳戶。 您不需要執行文章中的所有步驟。 填寫 [基本] 窗格上顯示的欄位。 針對 [區域],選取 [美國西部],然後選取 [ 檢閱 + 建立] 以接受默認選項。 繼續驗證並建立帳戶,然後返回本文。
  3. 遵循快速入門:使用 Azure 入口網站 上傳、下載及列出 Blob 中的步驟,建立 AKS 備份延伸模組的記憶體容器
  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 Service (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 運算符,並在命名空間weblogic-operator-nssample-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 容器。 選取 [下一步],然後選取 [建立]。 完成此步驟大約需要五分鐘的時間。

注意

若要節省成本,您可以遵循停止和啟動 Azure Kubernetes Service (AKS) 叢集中的步驟 ,停止次要區域中的 AKS 叢集。 請先啟動它,再還原 WLS 叢集。

等候保存庫標準備份發生

在 AKS 中 ,保存庫標準層 是唯一支援 異地備援跨區域還原的層。 如 AKS 備份支援哪個備份儲存層中所述 ,「每天只有一個排程的恢復點移至保存庫層」。您必須等候 保存庫標準 備份發生。 良好的下限是在完成上一個步驟之後等候 24 小時,再繼續進行。

停止主要叢集

主要 WLS 叢集和次要 WLS 叢集是使用相同的 TLOG 資料庫所設定。 只有一個叢集可以同時擁有資料庫。 若要確保次要叢集正常運作,請停止主要 WLS 叢集。 在本文中,請使用下列步驟停止 AKS 叢集以停用 WLS 叢集:

  1. 開啟 Azure 入口網站,然後移至您在 AKS 上部署 WLS 一節中布建的資源群組。
  2. 開啟資源群組中列出的 AKS 叢集。
  3. 選取 [ 停止 ] 以停止 AKS 叢集。 在繼續之前,請確定部署已完成。

還原 WLS 叢集

AKS 備份同時支援作業層和保存庫層備份。 只有儲存於保存庫層的備份,可用來還原至不同區域中的叢集 (Azure 配對區域)。 根據備份原則中設定的保留規則,一天的第一次成功備份會移至跨區域的 Blob 容器。 如需詳細資訊,請參閱什麼是 Azure Kubernetes Service 備份一節的 AKS 備份支援哪個備份儲存層?

在 [使用 Azure 備份 設定異地備援] 區段中設定異地備援之後,保存庫層備份至少需要一天的時間才能進行還原。

使用下列步驟來還原 WLS 叢集:

  1. 開啟 Azure 入口網站並搜尋備份中心。 選取 [服務] 底下的 [備份中心]。

  2. 在 [管理] 底下,選取 [備份實例]。 篩選數據源類型 Kubernetes Services ,以尋找您在上一節中建立的備份實例。

  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 附加至網頁瀏覽器中 流量管理員 設定檔的 DNS 名稱,例如 http://tmprofile-ejb120623.trafficmanager.net/weblogic/ready。 您應該會看到空白頁面,而不會顯示任何錯誤訊息。
      2. 在步驟 4 中,您無法存取 /weblogic/ready,這是預期的,因為次要叢集已停止。
      3. 重新啟用主要端點。

現在,主要端點的狀態為 EnabledOnline,而故障轉移端點在 流量管理員 配置檔中的狀態為 EnabledDegraded。 讓頁面保持開啟,以便稍後監視端點狀態。

測試從主要故障轉移到次要複本

若要測試故障轉移,您會在本節中手動將主資料庫伺服器和 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: