教學課程:使用高可用性和災害復原將 Oracle WebLogic Server 遷移至 Azure 虛擬機器

本教學課程說明在 Azure 虛擬機器 (VM) 上使用 Oracle WebLogic Server (WLS) 為 Java 實作高可用性和災害復原 (HA/DR) 的簡單且有效方式。 此解決方案說明如何使用在 WLS 上執行的簡單資料庫驅動 Jakarta EE 應用程式,達到低復原時間目標 (RTO) 和恢復點目標 (RPO)。 HA/DR 是一個複雜的主題,有許多可能的解決方案。 最佳解決方案取決於您的獨特需求。 如需實作 HA/DR 的其他方式,請參閱本文結尾的資源。

在本教學課程中,您會了解如何:

  • 使用 Azure 優化的最佳作法來達成高可用性和災害復原。
  • 在配對區域中設定 Microsoft Azure SQL 資料庫 故障轉移群組。
  • 在 Azure VM 上設定配對的 WLS 叢集。
  • 設定 Azure 流量管理員。
  • 設定 WLS 叢集以進行高可用性和災害復原。
  • 測試從主要故障轉移到次要複本。

下圖說明您所建置的架構:

Azure VM 上具有高可用性和災害復原的 WLS 解決方案架構圖表。

Azure 流量管理員 檢查區域的健康情況,並據以將流量路由傳送至應用層。 主要區域和次要區域都有 WLS 叢集的完整部署。 不過,只有主要區域會主動維護來自用戶的網路要求。 次要區域是被動的,且只有在主要區域發生服務中斷時才會接收流量。 Azure 流量管理員 會使用 Azure 應用程式閘道的健康情況檢查功能來實作此條件式路由。 主要 WLS 叢集正在執行,且次要叢集已關閉。 應用層的異地故障轉移 RTO 取決於啟動 VM 和執行次要 WLS 叢集的時間。 RPO 取決於 Azure SQL 資料庫,因為數據會保存在 Azure SQL 資料庫 故障轉移群組中並加以複寫。

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

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

必要條件

  • 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶
  • 請確定您有訂用 Owner 帳戶中的角色或 ContributorUser Access Administrator 角色。 您可以依照使用 Azure 入口網站 列出 Azure 角色指派中的步驟來確認指派。
  • 準備已安裝 Windows、Linux 或 macOS 的本機電腦。
  • 安裝和設定 Git
  • 安裝 Java SE 實作版本 17 或更新版本(例如 OpenJDK 的 Microsoft 組建)。
  • 安裝 Maven 3.9.3 版或更新版本。

在配對區域中設定 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. 記下 Password 值。
    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 中執行範例查詢之後,請清除編輯器並建立數據表。

輸入下列查詢來建立 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 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));

成功執行之後,您應該會看到「查詢成功: 受影響的資料列: 0」訊息。

這些資料庫數據表可用來儲存 WLS 叢集和應用程式的事務歷史記錄檔 (TLOG) 和會話數據。 如需詳細資訊,請參閱使用 JDBC TLOG 存放區和使用資料庫進行持續性 儲存體 (JDBC 持續性)

接下來,遵循設定 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 叢集的故障轉移測試。

在 Azure VM 上設定配對的 WLS 叢集

在本節中,您會使用 Azure VM 上的 Oracle WebLogic Server 叢集供應專案,在 Azure VM 上建立兩個 WLS 叢集。 美國東部的叢集是主要叢集,稍後會設定為作用中的叢集。 美國西部的叢集是次要叢集,稍後會設定為被動叢集。

設定主要 WLS 叢集

首先,在瀏覽器中開啟 Azure VM 上的 Oracle WebLogic Server 叢集,然後選取 [ 建立]。 您應該會看到 供應專案的 [基本] 窗格。

使用下列步驟填寫 [基本] 窗格:

  1. 請確定 [ 訂用帳戶 ] 所顯示的值與必要條件區段中所列角色的值相同。
  2. 您必須在空的資源群組中部署供應項目。 在 [資源群組] 字段中,選取 [新建] 並填入資源群組的唯一值 ,例如 wls-cluster-eastus-ejb120623
  3. 在 [實例詳細數據] 底下,針對 [區域],選取 [美國東部]。
  4. [虛擬機器 和 WebLogic 的認證] 下,分別提供 VMWebLogic 管理員 istrator 系統管理員帳戶的密碼。 記下 WebLogic 管理員 istrator 的使用者名稱和密碼。
  5. 保留其他欄位的預設值。
  6. 選取 [下一步 ] 以移至 [TLS/SSL 組態 ] 窗格。

顯示 [Azure VM 基本] 窗格上 Oracle WebLogic Server 叢集之 Azure 入口網站 的螢幕快照。

在 [TLS/SSL 組態] 窗格中保留預設值,選取 [下一步] 以移至 [Azure 應用程式閘道] 窗格,然後使用下列步驟。

  1. 若要 連線 Azure 應用程式閘道?,請選取 []。
  2. 針對 [ 選取所需的 TLS/SSL 憑證] 選項,選取 [ 產生自我簽署憑證]。
  3. 選取 [下一步 ] 以移至 [ 網络] 窗格。

顯示 Azure VM Azure 應用程式閘道 窗格上 Oracle WebLogic Server 叢集之 Azure 入口網站 的螢幕快照。

您應該會在 [網络] 窗格中看到所有預先填入預設值的欄位。 使用下列步驟來儲存網路組態:

  1. 選取 [ 編輯虛擬網络]。 記下虛擬網路的位址空間 ,例如 10.1.4.0/23

    顯示 Azure VM 虛擬網絡 窗格上 Oracle WebLogic Server 叢集之 Azure 入口網站 的螢幕快照。

  2. 選取 wls-subnet 以編輯子網。 在 [ 子網詳細數據] 底下,記下起始位址和子網大小 ,例如 10.1.5.0/28

    Azure 入口網站 的螢幕快照,其中顯示 [azure VM WLS 子網上 虛擬網絡] 窗格上的 Oracle WebLogic Server 叢集。

  3. 如果您進行任何修改,請儲存變更。

  4. 返回 [ 網络] 窗格。

  5. 選取 [下一步 ] 以移至 [ 資料庫] 窗格。

下列步驟示範如何填寫 [ 資料庫 ] 窗格:

  1. 針對資料庫 連線?,選取 []。
  2. 針對 [選擇資料庫類型],選取 [Microsoft SQL Server][支援無密碼連線]。
  3. 針對 [JNDI 名稱],輸入 jdbc/WebLogicCafeDB
  4. 針對 DataSource 連線 ion String,請將佔位符取代為您從上一節記下的主要 SQL 資料庫 的值,例如 jdbc:sqlserver://sqlserverprimary-ejb120623.database.windows.net:1433;database=mySampleDatabase
  5. 針對 [ 全域交易通訊協定],選取 [ ]。
  6. 針對 [資料庫用戶名稱],將佔位元取代為您從上一節記下的主要 SQL 資料庫 的值,例如,azureuser@sqlserverprimary-ejb120623
  7. 輸入您在資料庫密碼之前 記下的伺服器管理員登入密碼。 針對 [確認密碼] 輸入相同的值
  8. 保留其他欄位的預設值。
  9. 選取 [檢閱 + 建立]。
  10. 等到 執行最終驗證 ...成功完成,然後選取 [ 建立]。

顯示 [Azure VM 資料庫] 窗格上 Oracle WebLogic Server 叢集之 Azure 入口網站 的螢幕快照。

一段時間之後,您應該會看到 [部署進行中] 頁面

注意

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

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

同時,您可以平行設定次要 WLS 叢集。

設定次要 WLS 叢集

依照 設定主要 WLS 叢集一節 中的相同步驟,在美國西部區域設定次要 WLS 叢集 ,但有下列差異:

  1. 在 [ 基本] 窗格中,使用下列步驟:

    1. 在 [ 資源群組 ] 字段中,選取 [新建 ] 並填入資源群組的不同唯一值 ,例如 wls-cluster-westtus-ejb120623
    2. 在 [實例詳細數據] 底下,針對 [區域],選取 [美國西部]。
  2. 在 [ 網络] 窗格中,使用下列步驟:

    1. 針對 [編輯虛擬網络],輸入與主要 WLS 叢集相同的虛擬網路位址空間 ,例如 10.1.4.0/23

      注意

      您應該會看到類似下列警告訊息: 位址空間 '10.1.4.0/23 (10.1.4.0 - 10.1.5.255)' 重迭 具有虛擬網络 'wls-vnet' 位址空間 '10.1.4.0/23 (10.1.4.0 - 10.1.5.255)' 的地址空間。具有重疊位址空間的虛擬網路無法對等互連。如果您想要將這些虛擬網路對等互連,請變更位址空間 '10.1.4.0/23 (10.1.4.0 - 10.1.5.255)'。 您可以忽略此訊息,因為您需要兩個具有相同網路組態的 WLS 叢集。

    2. 針對 wls-subnet,輸入與您主要 WLS 叢集相同的起始位址和子網大小 -例如 10.1.5.0/28

  3. 在 [ 資料庫] 窗格中,使用下列步驟:

    1. 若為 DataSource 連線 ion String,請將佔位符取代為您從上一節記下次要 SQL 資料庫 的值-例如 jdbc:sqlserver://sqlserversecondary-ejb120623.database.windows.net:1433;database=mySampleDatabase
    2. 針對 [資料庫用戶名稱],將佔位元取代為您從上一節記下來的次要 SQL 資料庫 的值,例如,azureuser@sqlserversecondary-ejb120623

鏡像兩個叢集的網路設定

在故障轉移之後繼續次要 WLS 叢集中暫止交易的階段,WLS 會檢查 TLOG 存放區的擁有權。 若要成功通過檢查,次要叢集中的所有受管理伺服器都必須擁有與主要叢集相同的私人IP位址。

本節說明如何將網路設定從主要叢集鏡像到次要叢集。

首先,使用下列步驟在部署完成之後設定主要叢集的網路設定:

  1. [部署] 頁面的 [概] 窗格中,選取 [移至資源群組]。

  2. 選取網路介面 adminVM_NIC_with_pub_ip

    1. 在 [設定] 中,選取 [IP 設定]
    2. 選取 ipconfig1
    3. 在 [私人 IP 位址設定] 底下,針對 [配置] 選取 [靜態]。 記下私人IP位址。
    4. 選取 [儲存]。
  3. 返回主要 WLS 叢集的資源群組,然後針對網路介面 mspVM1_NIC_with_pub_ipmspVM2_NIC_with_pub_ipmspVM3_NIC_with_pub_ip重複步驟 3。

  4. 等到所有更新完成為止。 您可以在 Azure 入口網站 中選取通知圖示,以開啟狀態監視的 [通知] 窗格。

    Azure 入口網站 通知圖示的螢幕快照。

  5. 返回主要 WLS 叢集的資源群組,然後複製類型 為 Private 端點 的資源名稱 ,例如 7e8c8bsaep。 使用該名稱來尋找其餘網路介面 -例如 7e8c8bsaep.nic.c0438c1a-1936-4b62-864c-6792eec3741a。 選取它並遵循上述步驟來寫下其私人IP位址。

然後,使用下列步驟在部署完成之後設定次要叢集的網路設定:

  1. 在 [部署] 頁面的 [概觀] 窗格中,選取 [移至資源群組]。

  2. 針對網路介面、 、 和 mspVM3_NIC_with_pub_ip,請遵循上述步驟,將私人 IP 位址配置更新為 Static。 mspVM2_NIC_with_pub_ipmspVM1_NIC_with_pub_ipadminVM_NIC_with_pub_ip

  3. 等到所有更新完成為止。

  4. 針對網路介面 mspVM1_NIC_with_pub_ipmspVM2_NIC_with_pub_ipmspVM3_NIC_with_pub_ip,請遵循上述步驟,但將私人IP位址更新為與主要叢集一起使用的相同值。 等到網路介面的目前更新完成,再繼續進行下一個。

    注意

    您無法變更屬於私人端點之網路介面的私人IP位址。 若要輕鬆地鏡像受管理伺服器網路介面的私人IP位址,請考慮將的私人IP位址 adminVM_NIC_with_pub_ip 更新為未使用的IP位址。 視兩個叢集中的私人IP位址配置而定,您可能需要更新主要叢集中的私人IP位址。

下表顯示鏡像兩個叢集的網路設定範例:

Cluster 網路介面 私人 IP 位址(之前) 私人 IP 位址(之後) 更新順序
主要 7e8c8bsaep.nic.c0438c1a-1936-4b62-864c-6792eec3741a 10.1.5.4 10.1.5.4
主要 adminVM_NIC_with_pub_ip 10.1.5.7 10.1.5.7
主要 mspVM1_NIC_with_pub_ip 10.1.5.5 10.1.5.5
主要 mspVM2_NIC_with_pub_ip 10.1.5.8 10.1.5.9 1
Primary mspVM3_NIC_with_pub_ip 10.1.5.6 10.1.5.6
次要 1696b0saep.nic.2e19bf46-9799-4acc-b64b-a2cd2f7a4ee1 10.1.5.8 10.1.5.8
次要 adminVM_NIC_with_pub_ip 10.1.5.5 10.1.5.4 4
次要 mspVM1_NIC_with_pub_ip 10.1.5.7 10.1.5.5 5
次要 mspVM2_NIC_with_pub_ip 10.1.5.6 10.1.5.9 2
次要 mspVM3_NIC_with_pub_ip 10.1.5.4 10.1.5.6 3

檢查所有受管理伺服器的私人IP位址集,其中包含您在每個叢集中部署之 Azure 應用程式閘道的後端集區。 如果更新,請使用下列步驟來據以更新 Azure 應用程式閘道 後端集區:

  1. 開啟叢集的資源群組。
  2. 使用應用程式閘道類型尋找 myAppGateway 資源。 選取它以開啟它。
  3. 在 [設定] 區段中,選取 [後端集區],然後選取 myGatewayBackendPool
  4. 使用 更新的私人IP位址或位址變更後端目標 值,然後選取[ 儲存]。 等到它完成。
  5. 在 [設定] 區段中,選取 [健康情況探查],然後選取 [HTTPhealthProbe]。
  6. 選取 [新增健康情況探查] 之前,請務必先測試後端健康情況,然後選取 [測試]。 您應該會看到後端集myGatewayBackendPool區的 [狀態] 值標示為狀況良好。 如果不是,請檢查私人IP位址是否如預期般更新,且 VM 正在執行,然後再次測試健康情況探查。 您必須先對問題進行疑難解答並加以解決,才能繼續。

在下列範例中,會更新每個叢集 Azure 應用程式閘道 後端集區:

Cluster Azure 應用程式閘道 後端集區 後端目標(之前) 後端目標(之後)
主要 myGatewayBackendPool 10.1.5.5、 、 10.1.5.610.1.5.8 10.1.5.5、 、 10.1.5.610.1.5.9
次要 myGatewayBackendPool 10.1.5.7、 、 10.1.5.410.1.5.6 10.1.5.5、 、 10.1.5.610.1.5.9

若要自動化網路設定鏡像,請考慮使用 Azure CLI。 如需詳細資訊,請參閱開始使用 Azure CLI

確認叢集的部署

您已在每個叢集中部署 Azure 應用程式閘道 和 WLS 管理伺服器。 Azure 應用程式閘道 做為叢集中所有受管理伺服器的負載平衡器。 WLS 系統管理伺服器會提供用於叢集設定的 Web 控制台。

使用下列步驟來確認每個叢集中的 Azure 應用程式閘道 和 WLS 管理主控台是否可運作,再移至下一個步驟:

  1. 返回 [ 部署] 頁面,然後選取 [ 輸出]。
  2. 複製 appGatewayURL 屬性的值。 附加字串 weblogic/ready ,然後在新的瀏覽器索引標籤中開啟該 URL。您應該會看到空白頁面,而不會顯示任何錯誤訊息。 如果您未這麼做,您必須先針對問題進行疑難解答並加以解決,才能繼續。
  3. 複製並記下 adminConsole 屬性的值。 在新的瀏覽器索引標籤開啟它。您應該會看到 WebLogic Server 管理員 istration Console登入頁面。 使用您先前記下之 WebLogic 系統管理員的使用者名稱和密碼登入主控台。 如果您無法登入,您必須先進行疑難解答並解決問題,才能繼續。

使用下列步驟來記下每個叢集 Azure 應用程式閘道 的IP位址。 當您稍後設定 Azure 流量管理員 時,請使用這些值。

  1. 開啟部署叢集的資源群組 ,例如,選取 [概觀 ] 切換回部署頁面的 [概觀] 窗格。 然後,選取 [移至資源群組]。
  2. 尋找類型為公用IP位址的資源gwip,然後選取它以開啟它。 尋找 [IP 位址] 欄位,並記下其值。

設定 Azure 流量管理員

在本節中,您會建立一個 Azure 流量管理員,將流量分散到全球 Azure 區域的公用面向應用程式。 主要端點會指向主要 WLS 叢集中的 Azure 應用程式閘道,而次要端點指向次要 WLS 叢集中的 Azure 應用程式閘道。

依照下列快速入門建立 Azure 流量管理員 配置檔:使用 Azure 入口網站 建立 流量管理員 配置檔。 略過 [ 必要條件] 區 段。 您只需要下列各節:建立 流量管理員 配置檔新增 流量管理員 端點,以及測試 流量管理員 配置檔。 當您瀏覽這些區段時,請使用下列步驟,然後在建立並設定 Azure 流量管理員 之後返回本文。

  1. 當您到達建立 流量管理員 設定檔一節時,請使用下列步驟:

    1. 在步驟 2 建立 流量管理員 配置檔中,使用下列步驟:
      1. 記下 Name 的唯一 流量管理員 設定檔名稱 - 例如 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位址是您之前寫下來的。 您應該會看到一個專案相符。 針對 [公用 IP 位址] 選取它
    4. 請稍候一段時間。 選取 [重新整理],直到這兩個端點的 [監視狀態] 值為 [在線]。
  3. 當您到達 [測試 流量管理員 設定檔] 區段時,請使用下列步驟:

    1. 在小節 中檢查 DNS 名稱,請使用下列步驟:
      1. 在步驟 3 中,記量管理員 設定檔的 DNS 名稱,例如 http://tmprofile-ejb120623.trafficmanager.net
    2. 在 [檢視 流量管理員 運作的子區段中,使用下列步驟:
      1. 在步驟 1 和 3 中,將 /weblogic/ready 附加至網頁瀏覽器中 流量管理員 設定檔的 DNS 名稱,例如 http://tmprofile-ejb120623.trafficmanager.net/weblogic/ready。 您應該會看到空白頁面,而不會顯示任何錯誤訊息。
      2. 完成所有步驟之後,請務必參考步驟 2 來啟用您的主要端點,但以 [已啟用] 取代 [已停用]。 然後返回 [ 端點] 頁面。

現在您已在 流量管理員 配置檔中同時啟用在線兩個端點。 讓頁面保持開啟,並稍後使用它來監視端點狀態。

設定 WLS 叢集以取得高可用性和災害復原

在本節中,您會設定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 找到它<。> 如果您看不到套件,則必須先進行疑難排解並解決問題,再繼續進行。

部署範例應用程式

現在,使用下列步驟,從主要叢集開始,將範例應用程式部署至叢集:

  1. 網頁瀏覽器的新索引標籤中開啟叢集的 adminConsole 。 使用您先前寫下之 WebLogic 管理員 istrator 的使用者名稱和密碼,登入 WebLogic Server 管理員 istration Console。
  2. 在瀏覽窗格中找出網域結構>wlsd>部署。 選取 [部署]。
  3. 選取 [鎖定與編輯>安裝>上傳檔案] [選擇>檔案]。 選取您先前準備的 weblogic-café.war 檔案。
  4. 選取 [下一步] [下一>步]。> 針對cluster1部署目標選取 [叢集中的所有伺服器] 選項。 選取 [下一步]>[完成]。 選取 [ 啟用變更]。
  5. 切換到 [ 控制] 索引標籤,然後從部署資料表中選取 weblogic-cafe 。 選取 [開始使用服務所有要求>] 選項 [是]。 等候一段時間並重新整理頁面,直到您看到部署 weblogic-cafe 的狀態為 [作用中]。 切換至 [ 監視] 索引卷標,並確認已部署應用程式的內容根目錄是 /weblogic-café。 讓 WLS 管理主控台保持開啟,以便稍後再使用它進行進一步的設定。

在 WebLogic Server 管理員 istration Console 中重複相同的步驟,但針對美國西部區域的次要叢集。

更新前端主機

使用下列步驟,讓您的 WLS 叢集知道 Azure 流量管理員。 因為 Azure 流量管理員 是使用者要求的進入點,因此從主要叢集開始,將 WebLogic Server 叢集的前端主機更新為 流量管理員 配置檔的 DNS 名稱。

  1. 請確定您已登入 WebLogic Server 管理員 istration Console。
  2. 瀏覽至瀏覽窗格中的 [網域結構>] [wlsd>環境>叢集]。 選取 [ 叢集]。
  3. 從叢集資料表取 cluster1
  4. 選取 [鎖定和編輯>HTTP]。 拿掉前端主機的目前值,然後輸入您之前寫下之 流量管理員 配置檔的 DNS 名稱,http://例如,tmprofile-ejb120623.trafficmanager.net 選取 [儲存>啟用變更]。

在 WebLogic Server 管理員 istration Console 中重複相同的步驟,但針對美國西部區域的次要叢集。

設定事務歷史記錄存放區

接下來,從主要叢集開始,為叢集的所有受控伺服器設定 JDBC 事務歷史記錄存放區。 使用事務歷史記錄檔復原交易會說明這種做法。

在美國東部地區的主要 WLS 叢集上使用下列步驟:

  1. 請確定您已登入 WebLogic Server 管理員 istration Console。
  2. 瀏覽至導航窗格中的 [網域結構>] [wlsd>環境>伺服器]。 選取 [伺服器]
  3. 您應該會看到伺服器、 msp2msp3 列在伺服器msp1資料表中。
  4. 選取 msp1>[服務>鎖定與編輯]。 在 [事務歷史記錄存放區] 底下,選取 [JDBC]。
  5. 針對 [類型>數據源],選取 。jdbc/WebLogicCafeDB
  6. 確認 [前置詞名稱] 的值TLOG_msp1_,這是預設值。 如果值不同,請將它變更為 TLOG_msp1_
  7. 選取 [儲存]。
  8. 選取 [伺服器>msp2],然後重複相同的步驟,不同之處在於 [前置詞名稱] 的預設值TLOG_msp2_。
  9. 選取 [伺服器>msp3],然後重複相同的步驟,不同之處在於 [前置詞名稱] 的預設值TLOG_msp3_。
  10. 選取 [ 啟用變更]。

在 WebLogic Server 管理員 istration Console 中重複相同的步驟,但針對美國西部區域的次要叢集。

重新啟動主要叢集的受管理伺服器

然後,使用下列步驟重新啟動主要叢集的所有受管理伺服器,變更才會生效:

  1. 請確定您已登入 WebLogic Server 管理員 istration Console。
  2. 瀏覽至導航窗格中的 [網域結構>] [wlsd>環境>伺服器]。 選取 [伺服器]
  3. 選擇[控制件] 索引標籤。選取msp1msp2msp3。 使用 [工作完成時]> 選項選取 [關機]。 選取重新整理圖示。 等候最後 一個動作 值的狀態為 TASK COMPLETED。 您應該會看到 所選伺服器的 [狀態 ] 值是 SHUTDOWN。 再次選取重新整理圖示以停止狀態監視。
  4. 選取 msp1msp2,然後 msp3 再次選取 。 選取 [開始>是]。 選取重新整理圖示。 等候最後 一個動作 值的狀態為 TASK COMPLETED。 您應該會看到 所選伺服器的 [狀態 ] 值正在 執行。 再次選取重新整理圖示以停止狀態監視。

停止次要叢集中的 VM

現在,使用下列步驟來停止次要叢集中的所有 VM,使其成為被動:

  1. 在瀏覽器的新索引標籤開啟 Azure 入口網站 首頁,然後選取[所有資源]。 在 [ 篩選任何欄位... ] 方塊中,輸入部署次要叢集的資源組名 ,例如 wls-cluster-westus-ejb120623
  2. 選取 [ 類型] 等於 [全部 ] 以開啟 [ 類型 篩選]。 針對 [ ],輸入 虛擬機。 您應該會看到一個專案相符。 針對 [ ] 選取它。 選取套用。 您應該看到列出 4 個 VM,包括 adminVMmspVM1mspVM2mspVM3
  3. 選取以開啟每個 VM。 選取 [ 停止 ] 並確認每個 VM。
  4. 從 Azure 入口網站 選取通知圖示,以開啟 [通知] 窗格。
  5. 監視每個 VM 停止虛擬機的事件,直到值變成成功停止的虛擬機為止。 讓頁面保持開啟狀態,以便稍後將它用於故障轉移測試。

現在,切換至瀏覽器索引標籤,您可以在其中監視端點的狀態 流量管理員。 重新整理頁面,直到您看到端點 myFailoverEndpoint降級 且端點 myPrimaryEndpointOnline 為止。

注意

生產就緒HA/DR解決方案可能會想要讓VM執行,但只會停止在VM上執行的WLS軟體,以達到較低的 RTO。 然後,在故障轉移時,VM 已經執行,而 WLS 軟體需要較少的時間來啟動。 本文選擇停止 VM,因為 Azure VM 上 Oracle WebLogic Server 叢集所部署的軟體會在 VM 啟動時自動啟動 WLS 軟體。

驗證應用程式

由於主要叢集已啟動並執行,因此它會作為作用中的叢集,並處理由 流量管理員 配置檔路由傳送的所有使用者要求。

在瀏覽器的新索引標籤中開啟 Azure 流量管理員 設定檔的 DNS 名稱,並附加已部署應用程式的內容根 /weblogic-café ,例如 。 http://tmprofile-ejb120623.trafficmanager.net/weblogic-cafe 使用名稱和價格建立新的咖啡 - 例如,具有價格 10 的 Coffee 1。 這個項目會同時保存在應用程式數據表和資料庫的會話數據表中。 您看到的 UI 應該類似下列螢幕快照:

範例應用程式 UI 的螢幕快照。

如果您的UI看起來不類似,請先進行疑難解答並解決問題,再繼續進行。

讓頁面保持開啟狀態,以便稍後使用頁面進行故障轉移測試。

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

若要測試故障轉移,您必須手動將主資料庫伺服器和叢集故障轉移至輔助資料庫伺服器和叢集,然後使用本節中的 Azure 入口網站 進行容錯回復。

故障轉移至次要月臺

首先,使用下列步驟來關閉主要叢集中的 VM:

  1. 尋找部署主要 WLS 叢集的資源群組名稱 ,例如 wls-cluster-eastus-ejb120623。 然後遵循 [停止次要叢集中的 VM] 區段中的步驟,但將目標資源群組變更為主要 WLS 叢集,以停止該叢集中的所有 VM。
  2. 切換至 流量管理員 的瀏覽器索引標籤,重新整理頁面,直到您看到端點 myPrimaryEndpoint 的 [監視狀態] 值變成 [已降級]。
  3. 切換至範例應用程式的瀏覽器索引標籤,然後重新整理頁面。 您應該會看到 504 閘道逾時502 不正確的閘道 ,因為沒有端點可供存取。

接下來,使用下列步驟將 Azure SQL 資料庫 從主伺服器故障轉移至輔助伺服器:

  1. 切換至 Azure SQL 資料庫 故障轉移群組的瀏覽器索引標籤。
  2. 選取 [故障轉移>是]。
  3. 等到它完成。

然後,使用下列步驟來啟動次要叢集中的所有伺服器:

  1. 切換至您停止次要叢集中所有 VM 的瀏覽器索引標籤。
  2. 選取 VM adminVM。 選取 [開始]。
  3. 在 [通知] 窗格中監視 [啟動虛擬機adminVM] 事件,並等到值變成 [已啟動的虛擬機] 為止。
  4. 切換至次要叢集的 WebLogic Server 管理員 istration Console 的瀏覽器索引標籤,然後重新整理頁面,直到您看到歡迎頁面登入為止。
  5. 切換回列出次要叢集中所有 VM 的瀏覽器索引標籤。 針對 VM 、 mspVM2mspVM3,選取每個 VM mspVM1以開啟它,然後選取 [啟動]。
  6. 針對 VM、 和 ,監視 [通知] 窗格中的 [啟動虛擬機] 事件,並等到值變成 [已啟動的虛擬機] 為止。mspVM3mspVM2mspVM1

最後,使用下列步驟在端點 myFailoverEndpoint 處於 在線 狀態之後驗證範例應用程式:

  1. 切換至 流量管理員 的瀏覽器索引標籤,然後重新整理頁面,直到您看到端點myFailoverEndpoint的 [監視狀態] 值進入 [在線] 狀態為止。

  2. 切換至範例應用程式的瀏覽器索引標籤,然後重新整理頁面。 您應該會看到應用程式資料表中保存的相同資料,以及 UI 中顯示的工作階段資料表,如下列螢幕快照所示:

    故障轉移後範例應用程式 UI 的螢幕快照。

    如果您沒有觀察到此行為,可能是因為 流量管理員 需要時間來更新 DNS 以指向故障轉移網站。 問題也可能是您瀏覽器快取指向失敗網站的 DNS 名稱解析結果。 請稍候一段時間,然後重新整理頁面。

注意

生產就緒HA/DR解決方案會考慮定期將WLS組態從主要叢集持續複製到次要叢集。 如需如何執行這項操作的資訊,請參閱本文結尾的 Oracle 文件的參考。

若要自動化故障轉移,請考慮在 流量管理員 計量和 Azure 自動化 上使用警示。 如需詳細資訊,請參閱 流量管理員 計量和警示流量管理員 計量警示一節,以及使用警示來觸發 Azure 自動化 Runbook

容錯回復至主要月臺

使用故障轉移至次要月臺一節中的 相同步驟來容錯回復到主要月 臺,包括資料庫伺服器和叢集,但有下列差異:

  1. 首先,關閉次要叢集中的 VM。 您應該會看到端點 myFailoverEndpoint 變成 降級
  2. 接下來,將 Azure SQL 資料庫 從輔助伺服器故障轉移至主伺服器。
  3. 然後,啟動主要叢集中的所有伺服器。
  4. 最後,在端點 myPrimaryEndpointOnline 之後驗證範例應用程式。

清除資源

如果您不打算繼續使用 WLS 叢集和其他元件,請使用下列步驟來刪除資源群組,以清除本教學課程中使用的資源:

  1. 在 Azure 入口網站 頂端的搜尋方塊中輸入 Azure SQL 資料庫 伺服器的資源組名,myResourceGroup然後從搜尋結果中選取相符的資源群組。
  2. 選取 [刪除資源群組]
  3. 在 [ 輸入資源組名以確認刪除] 中,輸入資源組名。
  4. 選取 [刪除]
  5. 針對 流量管理員 的資源群組重複步驟 1-4 ,例如 myResourceGroupTM1
  6. 針對主要 WLS 叢集的資源群組重複步驟 1-4 ,例如 wls-cluster-eastus-ejb120623
  7. 針對次要 WLS 叢集的資源群組重複步驟 1-4 ,例如 wls-cluster-westus-ejb120623

下一步

在本教學課程中,您會設定HA/DR解決方案,其中包含具有主動-被動資料庫層的主動-被動應用程式基礎結構層,以及這兩個層級跨越兩個地理位置不同的月臺。 在第一個站台中,應用程式基礎結構層和資料庫層都處於作用中狀態。 在第二個站臺上,次要網域會關閉,而輔助資料庫處於待命狀態。

繼續探索下列參考,以取得更多選項來建置 HA/DR 解決方案,並在 Azure 上執行 WLS: