共用方式為


設定 Azure 受控 Redis 的主動式異地複寫 (預覽) 實例

在本文中,您將了解如何使用 Azure 入口網站來設定作用中異地複寫快取。

作用中異地復寫會將最多五個 Azure 受控 Redis 實例(預覽)分組到跨越 Azure 區域的單一快取中。 所有執行個體都會做為本機、主要快取使用。 應用程式會決定要用於讀取和寫入要求的執行個體。

注意

Azure 區域間的資料傳輸會以標準頻寬費用收費。

主動式異地復寫的運作方式

主動式異地復寫會使用無衝突的復寫數據類型 (CRDT),順暢地將數據分散到可分散到各大洲的 Redis 實例。 這些實例會連線在主動-主動組態中,其中寫入一個實例會自動反映在相同異地復寫群組中的其他實例中。 此雙向數據復寫與單向主動-被動複寫方法不同,其中數據會從主要複本複寫到異地複本,但不是另一個方向。 這是一種功能強大的工具,通常以數種方式使用:

  • 藉由將快取散發到更接近使用者,以提供本機延遲。 藉由使用作用中異地復寫 Redis 實例的網路,您可以將快取放在地理位置更接近每個區域中的使用者,減少延遲並改善應用程式效能。
  • 同步處理全域應用程式。 由於異地復寫快取看起來像單一 Redis 實例,因此您可以全域散發數據,而不需要依區域分割數據。 例如,您可以使用單一 Redis 排序集,為世界各地的所有使用者提供遊戲排行榜 ,而不是為每個地理區域提供個別的排行榜。
  • 降低區域性中斷的停機時間和風險。 由於異地復寫群組中的每個 Redis 實例會持續更新群組中其他實例的最新數據,因此數據會在發生區域性中斷時妥善保留。 應用程式可以暫時切換為使用群組中的其他其中一個實例,當區域重新上線時,Redis 實例會自動重新載入來自其他異地復寫快取的數據。

如需作用中異地復寫運作方式的更詳細細目,請參閱 主動-主動異地散發(CRDTS 型)

可用性範圍

記憶體優化、平衡、計算優化 Flash Optimized
可用的 是 (B0 和 B1 除外) Yes

重要

平衡 B0 和 B1 SKU 不支援作用中的異地複寫。

作用中異地複寫的必要條件

使用作用中異地複寫時,有一些限制:

  • 只有在 Azure 受控 Redis 處於高可用性設定時,才支持主動式異地複寫(也就是使用複寫)。
  • 僅支援 RediSearchRedisJSON 模組
  • Flash Optimized 層上,只能 使用 No 收回 收回原則。 其他層都支援所有收回原則。
  • 不支援資料持續性,因為作用中異地複寫提供優越的體驗。
  • 異地複寫群組內的所有快取都必須具有相同的設定。 例如,所有快取都必須具有相同的 SKU、容量、收回原則、叢集原則、模組和 TLS 設定。
  • 如果異地調整群組中的一個實例,該群組中的其他實例必須調整為相同的大小,才能進行任何其他調整。 如需詳細資訊,請參閱 調整異地復寫群組 中的實例。
  • 使用作用中異地複寫時,您無法使用 FLUSHALLFLUSHDB Redis 命令。 禁用這些命令可防止意外刪除資料。 請改用 排清作業

建立或加入作用中異地複寫群組

  1. 建立新的 Azure 受控 Redis 資源時,請選取 [ 進階 ] 索引卷標。完成窗體的第一個部分,包括叢集原則。 如需選擇 叢集原則的詳細資訊,請參閱 Azure 受控 Redis 中的叢集。

  2. 選取 [設定] 以設定 [作用中異地複寫]

    建立新 Redis 快取頁面之進階索引標籤的螢幕快照。

  3. 為第一個快取執行個體建立新的複寫群組。 或者,從清單中選取現有群組。

    顯示複寫群組的螢幕快照。

  4. 選取 [設定] 來完成設定。

  5. 等候第一個快取建立成功。 完成時,您會看到 [作用中異地複寫] 中的 [設定] 已設定完成。 針對異地複寫群組中的每個快取執行個體重複上述步驟。

    顯示已設定作用中異地復寫的螢幕快照。

將現有的實例新增至作用中的異地復寫群組

若要將現有的快取實例新增至作用中的異地復寫群組,您可以使用 REST API 來執行強制鏈接動作

所連結快取實例中的所有數據都會遭到捨棄。 加入異地復寫群組時,實例也會暫時無法使用數分鐘。 這項功能尚未提供入口網站和 CLI 支援。

從作用中異地複寫群組中移除

若要從作用中異地複寫群組中移除快取執行個體,您只需刪除執行個體即可。 其餘的執行個體接著會自動重新設定自己。

主動式異地復寫是一項功能強大的功能,可在使用 Azure 受控 Redis 時大幅提升可用性。 但若發生區域性中斷,則應採取相關步驟來準備快取。

例如,考慮使用下列提示:

  • 事先確認在一個區域失效時,要切換至異地複寫群組中的哪個其他快取。
  • 確定已設定防火牆,讓任何應用程式和用戶端都可存取已識別的備份快取。
  • 異地複寫群組中的每個快取都有其本身的存取金鑰。 請確認在設定備份快取的目標時,應用程式如何切換至不同的存取金鑰。
  • 如果異地複寫群組中的快取失效,則異地複寫群組中的所有快取都會開始建置中繼資料。 在寫入可再次同步至所有快取之前,無法捨棄中繼資料。 您可以將失效的快取強制取消連結,藉以防止中繼資料建置。 請考慮監視快取中的可用記憶體,並在有記憶體壓力時取消連結,對於大量寫入工作負載尤為如此。

此外也可以使用斷路器模式。 使用此模式,可自動將流量從發生區域中斷的快取重新導向至相同異地複寫群組中的備份快取。 使用 Azure 流量管理員Azure Load Balancer 等 Azure 服務來啟用重新導向。

如果複寫群組中的其中一個快取因區域中斷而無法使用,您可以從複寫群組中強制移除無法使用的快取。

您應該移除無法使用的快取,因為複寫群組中剩餘的快取會開始將尚未共用的中繼資料儲存至無法使用的快取。 發生這種情況時,複寫群組中的可用快取可能會耗盡記憶體。

  1. 前往 Azure 入口網站,然後選取複寫群組中仍可使用的快取之一。

  2. 選取左側 [資源] 功能表中的 [作用中異地複寫],以查看工作窗格中的設定。

    作用中異地復寫群組的螢幕快照。

  3. 透過勾選方塊來選取您需要強制取消連結的快取。

  4. 選取 [強制取消連結],然後選取 [確定] 以確認執行。

    在作用中異地復寫中取消連結的螢幕快照。

  5. 還原受影響區域的可用性後,您必須刪除受影響的快取,然後重新建立快取並新增回複寫群組。

使用 Azure CLI 或 PowerShell 設定作用中異地複寫

Azure CLI

使用 Azure CLI 建立新的快取和異地複寫群組,或新增快取至現有的異地複寫群組。 如需詳細資訊,請參閱 az redisenterprise create

使用 Azure CLI 在新異地復寫群組中建立新的 Azure 受控 Redis 實例

此範例會在美國東部區域建立名為 Cache1 的新 Azure 受控 Redis 平衡 B10 實例。 然後,快取會新增至名為 replicationGroup 的新作用中異地複寫群組:

az redisenterprise create --location "East US" --cluster-name "Cache1" --sku "Balanced_B10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"

若要正確設定作用中異地複寫,則正在建立的快取執行個體識別碼必須加上 --linked-databases 參數。 識別碼的格式為:

/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default

使用 Azure CLI 在現有的異地復寫群組中建立新的 Azure 受控 Redis 實例

此範例會在美國西部區域中建立名為 Cache2 的新平衡 B10 快取實例。 然後,指令碼會將快取新增至上一個程序中建立的 replicationGroup 作用中異地複寫群組。 如此一來,快取會在主動-主動設定中連結 Cache1

az redisenterprise create --location "West US" --cluster-name "Cache2" --sku "Balanced_B10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"

如前文所述,請使用 --linked-databases 參數列出 Cache1Cache2

Azure PowerShell

使用 Azure PowerShell 建立新的快取和異地複寫群組,或新增快取至現有的異地複寫群組。 如需詳細資訊,請參閱 New-AzRedisEnterpriseCache

使用 PowerShell 在新異地復寫群組中建立新的 Azure 受控 Redis 實例

此範例會在美國東部區域建立名為 Cache1 的新 Azure 受控 Redis 平衡 B10 快取實例。 然後,快取會新增至名為 replicationGroup 的新作用中異地複寫群組:

New-AzRedisEnterpriseCache -Name "Cache1" -ResourceGroupName "myResourceGroup" -Location "East US" -Sku "Balanced_B10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}'

若要正確設定作用中異地複寫,則正在建立的快取執行個體識別碼必須加上 -LinkedDatabase 參數。 識別碼的格式為:

/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default

使用 PowerShell 在現有的異地復寫群組中建立新的 Azure 受控 Redis 實例

此範例會在美國西部區域中建立名為 Cache2 的新平衡 B10 快取實例。 然後,腳本會將快取新增至上一個程式中建立的作用中異地復寫群組“replicationGroup”。 結果是兩個快取 Cache1Cache2 連結在作用中-主動組態中。

New-AzRedisEnterpriseCache -Name "Cache2" -ResourceGroupName "myResourceGroup" -Location "West US" -Sku "Balanced_B10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}', '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"}'

如前文所述,請使用 -LinkedDatabase 參數列出 Cache1Cache2

調整異地復寫群組中的實例

可以調整設定為使用作用中異地復寫的實例。 不過,具有不同快取大小混合的異地復寫群組可能會造成問題。 若要防止發生這些問題,異地復寫群組中的所有快取都必須是相同的大小和效能層級。

因為調整需要變更大小或層級,而且很難同時調整異地復寫群組中的所有實例,所以 Azure 受控 Redis 具有鎖定機制。 如果您在異地復寫群組中調整一個實例,則會調整基礎 VM,但可用的記憶體會限制在原始大小上,直到其他實例相應增加為止。 其餘實例的任何其他調整作業都會鎖定,直到它們符合要調整之第一個快取的相同組態為止。

調整範例

例如,您的異地復寫群組中可能有三個實例,所有記憶體優化 M10 實例:

執行個體名稱 Redis00 Redis01 Redis02
類型 記憶體優化 M10 記憶體優化 M10 記憶體優化 M10

假設您想要將此異地復寫群組中的每個實例相應增加至計算優化 X20 實例。 您會先將其中一個快取調整為 X20:

執行個體名稱 Redis00 Redis01 Redis02
類型 計算優化 X20 記憶體優化 M10 記憶體優化 M10

此時, Redis01Redis02 實例只能相應增加計算優化 X20 實例。 所有其他調整作業都會遭到封鎖。

注意

Redis00此時不會封鎖實例進一步調整。 但是,一旦 Redis01Redis02 調整為計算優化 X20,它就會遭到封鎖。

一旦每個實例調整為相同的層級和大小,就會移除所有調整鎖定:

執行個體名稱 Redis00 Redis01 Redis02
類型 計算優化 X20 計算優化 X20 計算優化 X20

排清作業

由於可能發生意外的資料遺失,您無法使用 FLUSHALLFLUSHDB Redis 命令,搭配位於異地複寫群組中的任何快取執行個體。 請改用位於 [作用中異地複寫] 工作窗格頂端的 [排清快取] 按鈕。

此螢幕快照顯示 [資源] 功能選取的作用中異地複寫,而 [排清快取] 功能周圍有紅色方塊。

使用 Azure CLI 或 PowerShell 排清快取

Azure CLI 和 PowerShell 也可以用來觸發排清作業。 如需使用 Azure CLI 的詳細資訊,請參閱 az redisenterprise database flush。 如需使用 PowerShell 的詳細資訊,請參閱 Invoke-AzRedisEnterpriseCacheDatabaseFlush

重要

使用排清快取功能時請小心。 選取按鈕會從目前快取中以及從異地複寫群組中所有連結的快取中移除所有資料。

使用 Azure 角色型存取控制來管理功能的存取權。 只有已授權的使用者才有權排清所有快取。

下一步