設定進階 Azure Cache for Redis 執行個體的被動異地複寫
在本文中,您將了解如何使用 Azure 入口網站,在一對 Azure Cache for Redis 執行個體上設定被動異地複寫。
被動異地複寫會將兩個進階層 Azure Cache for Redis 執行個體連結在一起,並建立「主動-被動」資料複寫關聯性。 「主動-被動」表示有一對資料已同步的主要快取和次要快取。 但您只能寫入至配對的一端,也就是主要快取。 配對的另一端是唯讀的次要快取。
比較「主動-被動」與「主動-主動」,在後者,您可以寫入至配對的任一端,其會與另一端同步。
使用被動異地複寫時,快取執行個體通常會位於不同的 Azure 區域,但這非必要。 一個執行個體做為主要,而另一個執行個體做為次要容錯。 主要快取會處理讀取和寫入要求,並將變更傳播至次要快取。
容錯移轉並非自動發生。 如需如何使用容錯移轉的詳細資訊,請參閱起始從異地主要快取容錯移轉到異地次要快取。
注意
被動式異地複寫設計為災害復原解決方案。
可用性範圍
層 | 基本、標準 | 進階 | Enterprise,Enterprise Flash |
---|---|---|---|
可用的 | No | .是 | Yes |
「被動異地複寫」僅適用於 Azure Cache for Redis 的進階層。 企業層和 Enterprise Flash 層也提供異地複寫,但這些階層使用稱為作用中異地複寫的更進階版本。
異地複寫的必要條件
若要設定兩個快取之間的異地複寫,必須符合下列必要條件:
- 兩個快取均為進階層快取。
- 兩個快取位於相同的 Azure 訂閱。
- 次要連結快取是相同的快取大小,或快取大小大於主要連結快取。 若要使用異地容錯移轉,這兩個快取的大小必須相同。
- 建立兩個快取並同時處於執行中狀態。
- 這兩個快取都執行相同版本的 Redis 伺服器。
注意
Azure 區域間的資料傳輸會以標準頻寬費用收費。
異地複寫不支援部分功能:
- 異地複寫不支援區域備援。
- 異地複寫不支援持續性。
- 具備多個複本的快取無法進行異地複寫。
- 如果兩個快取已啟用叢集,並使用相同數目的分區,即支援叢集。
- 支援相同虛擬網路 (VNet) 中的快取。
- 不同 VNet 中的快取支援注意事項。 如需詳細資訊,請參閱 VNet 中可以搭配快取使用異地複寫嗎?
設定異地複寫後,下列限制適用於連結快取組:
次要連結快取是唯讀快取。 您可以從中讀取,但無法寫入任何資料。 若您選擇在異地主要與異地次要資料庫之間發生完整資料同步時,從異地次要執行個體讀取,異地次要執行個體會在任何 Redis 作業上擲回錯誤,直到完整資料同步完成。 錯誤指出完整資料同步正在進行中。 此外,更新異地主要或異地次要,並在特定重新啟動情節中擲回錯誤。 異地次要擲回這類錯誤時,最好將從異地次要讀取的應用程式建置至異地主要的後援。
任何將連結新增之前就已在次要連結快取中的資料都會加以移除。 但如果稍後移除異地複寫,複寫的資料會保留在次要連結快取中。
連結快取時,您無法調整任一快取。
如果快取已啟用叢集,即無法變更分區數目。
您無法啟用任一個快取的持續性。
資料可以從任一快取匯出。
資料無法匯入次要連結快取。
您無法刪除任一連結快取,或包含兩個快取的資源群組,直到您取消連結快取。 如需詳細資訊,請參閱當我嘗試刪除連結快取時,作業失敗的原因?
如果快取位於不同區域,網路輸出成本即適用於跨區域移動的資料。 如需詳細資訊,請參閱跨 Azure 區域複寫我的資料需要多少費用?
容錯移轉並非自動發生。 您必須從主要快取開始容錯移轉到次要連結的快取。 如需如何使用容錯移轉的詳細資訊,請參閱起始從異地主要快取容錯移轉到異地次要快取。
私人連結無法新增至已異地複寫的快取。 若要將私人連結新增至異地複寫快取:1。 取消連結異地複寫。 2. 使用私人連結。 3. 最後,重新連結異地複寫。
新增異地複寫連結
異地複寫時,若要連結兩個快取,請先從您要作為主要連結快取的 [資源] 功能表中,選取 [異地複寫]。 接下來,從工作窗格選取 [新增快取複寫連結]。
從 [相容的快取] 清單,選取所需次要快取的名稱。 如果清單中未顯示您的次要快取,請確認次要快取是否符合異地複寫先決條件。 若要依區域篩選快取,請在地圖中選取區域,並僅顯示相容快取清單中的快取。
您也可以使用操作功能表啟動連結程序,或檢視次要快取的詳細資料。
選取 [連結] 連結兩個快取,並開始複寫程序。
您可以使用 [資源] 功能表的 [異地複寫],檢視複寫程序的進度。
您也可以使用 [資源] 功能表的 [概觀] 來檢視主要和次要快取的連結狀態。
一旦複寫程序完成之後,[連結佈建狀態] 會變為 [成功]。
連結程序期間,您仍可使用主要連結快取。 連結程序完成前,您無法使用次要連結快取。
異地主要 URL
連結快取之後,系統會為每個快取產生一個 URL,這些 URL 一律指向異地主要快取。 如果起始的容錯移轉是從異地主要快取到異地次要快取,URL 會保持不變,而基礎 DNS 記錄會自動更新,以指向新的異地主要快取。
三個 URL 如下所示:
- [Geo-Primary URL] \(異地主要 URL\) 是具有
<cachename>.geo.redis.cache.windows.net
格式的 Proxy URL。 URL 一律指向目前在異地複寫配對中的異地主要快取。 - [Current Geo Primary Cache] \(目前異地主要快取\) 是目前異地主要快取的直接位址。 該位址是
redis.cache.windows.net
而不是geo.redis.cache.windows.net
。 如果起始容錯移轉,則欄位中所列的位址會變更。 - [Current Geo Secondary Cache] \(目前異地次要快取\) 是目前為異地次要快取的直接位址。 該位址是
redis.cache.windows.net
而不是geo.redis.cache.windows.net
。 如果起始容錯移轉,則欄位中所列的位址會變更。
起始從異地主要快取容錯移轉到異地次要快取
選取後即可觸發從異地主要快取容錯移轉到異地次要快取。
這會導致採取下列步驟:
- 異地次要快取會升階為異地主要快取。
- DNS 記錄會更新,以將異地主要 URL 重新導向至新的異地主要快取。
- 舊的異地主要快取會降階為次要快取,並嘗試形成新異地主要快取的連結。
異地容錯移轉程序需要幾分鐘的時間才能完成。
起始異地容錯移轉之前要檢查的設定
起始容錯移轉時,異地主要快取和異地次要快取就會交換。 如果新異地主要快取與異地次要快取有不同的設定,您的應用程式可能會產生問題。
請務必檢查下列項目:
- 如果您在任一快取中使用防火牆,請確定防火牆設定類似,才不會有連線問題。
- 確定這兩個快取使用相同的連接埠和 TLS/SSL 設定
- 異地主要快取和異地次要快取有不同的存取金鑰。 觸發容錯移轉時,請確定您的應用程式可以更新其用來比對新異地主要快取的存取金鑰。 或者,使用 Microsoft Entra 權杖進行快取驗證,這可讓您在異地主要快取和異地次要快取中使用相同的驗證認證。
在遺失最少資料的情況下進行容錯移轉
異地容錯移轉事件可能會在轉換期間引進資料不一致,特別是如果用戶端在容錯移轉過程中維持連線到舊的異地主要快取。 您可以使用下列提示,將規劃的異地容錯移轉事件中的資料遺失降至最低:
- 檢查 [異地複寫資料同步位移] 計量。 這是由目前異地主要快取發出的計量。 此計量指出尚未複寫到異地主要快取的資料量。 如有可能,請只在此計量指出剩下少於 14 個位元組留待寫入時,才起始容錯移轉。
- 請先在目前異地主要快取中執行
CLIENT PAUSE
命令,再起始容錯移轉。 執行CLIENT PAUSE
會封鎖任何新的寫入要求,並改為將逾時失敗傳回給 Azure Cache for Redis 用戶端。CLIENT PAUSE
命令需要提供逾時期限 (毫秒)。 請務必提供夠長的逾時期限,以允許發生容錯移轉。 一開始可以將暫停值設定為約 30 分鐘 (1,800,000 毫秒)。 您隨時可以視需要降低此數字。
不需要執行 CLIENT UNPAUSE 命令,因為新的異地主要快取會保留用戶端暫停。
注意
建議您在異地容錯移轉案例中使用 Microsoft Entra ID 型驗證來驗證快取,因為它會讓異地主要快取和異地次要快取之間不同存取金鑰的管理變得不再困難。
移除異地複寫連結
若要移除兩個快取間的連結並停止異地複寫,請從左側的 [異地複寫] 選取 [取消連結快取]。
取消連結流程完成時,次要快取就可供讀取和寫入。
注意
將異地複寫連結移除時,從主要連結快取複寫的資料就會保留在次要快取中。
異地複寫常見問題集
- 可以使用異地複寫搭配標準或基本層快取嗎?
- 在連結或取消連結流程期間,快取是否可供使用?
- 何時可以在起始容錯移轉之後寫入新的異地主要快取?
- 我可以追蹤異地複寫連結的健康狀態嗎?
- 可以同時連結兩個以上的快取嗎?
- 可以將不同 Azure 訂用帳戶中的兩個快取加以連結嗎?
- 可以將兩個不同大小的快取加以連結嗎?
- 啟用叢集時可以使用異地複寫嗎?
- 可以使用異地複寫搭配 VNET 中的快取嗎?
- 哪個複寫排程適用於 Redis 異地複寫?
- 異地複寫需要花費多久的時間?
- 是否保證複寫復原點?
- 可以使用 PowerShell 或 Azure CLI 管理異地複寫嗎?
- 跨 Azure 區域複寫我的資料需要多少費用?
- 當我嘗試刪除連結快取時,作業失敗的原因?
- 要將次要連結快取用於哪個區域?
- 是否可以使用異地複寫來設定防火牆?
可以使用異地複寫搭配標準或基本層快取嗎?
否,被動異地複寫僅適用於進階層。 企業層和 Enterprise Flash 層提供更進階的異地複寫版本,稱為「作用中異地複寫」。
在連結或取消連結流程期間,快取是否可供使用?
- 主要連結快取維持可用狀態,直到連結流程完成為止。
- 連結程序完成前,您無法使用次要連結快取。
- 這兩種快取均會維持可用狀態,直到取消連結流程完成為止。
何時可以在起始容錯移轉之後寫入新的異地主要快取?
起始容錯移轉程序時,您會看到連結佈建狀態更新成 [刪除中],這表示正在清除之前的連結。 完成之後,連結佈建狀態會更新為 [建立中]。 這表示新的異地主要快取已啟動並執行,且正在嘗試重新建立與舊異地主要快取的異地複寫連結。 此時,您可以立即連線到新的異地主要快取執行個體進行讀取和寫入。
我可以追蹤異地複寫連結的健康狀態嗎?
是的,有數個計量可用來協助追蹤異地複寫的狀態。 您可以在 Azure 入口網站中取得這些計量。
- [異地複寫狀況良好] 會顯示異地複寫連結的狀態。 如果異地主要快取或異地次要快取已關閉,則連結會顯示為狀況不良。 這通常是由於標準修補作業所造成,但也可能表示失敗情況。
- [異地複寫連線延隔時間] 會顯示自上次成功同步處理異地主要快取與異地次要快取間資料之後經過的時間。
- [異地複寫資料同步位移] 會顯示尚未同步至異地次要快取的資料量。
- [異地複寫完整同步事件已啟動] 表示已起始異地主要快取與異地次要快取之間的完整同步處理動作。 如果標準複寫無法跟上新寫入的數目,就會發生這種情況。
- [異地複寫完整同步事件已完成] 表示已完成完整同步處理動作。
另外還有一個預先建置的活頁簿,稱為異地複寫儀表板,其中會在一個檢視表中顯示所有異地複寫健康情況計量。 建議您使用此檢視,因為其中彙總了僅從異地主要快取或異地次要快取執行個體發出的資訊。
可以同時連結兩個以上的快取嗎?
否,只有在使用被動式異地複寫時,才能將兩個快取連結在一起。 作用中異地複寫最多支援五個連結快取。
可以將不同 Azure 訂用帳戶中的兩個快取加以連結嗎?
否,這兩個快取必須位於相同的 Azure 訂用帳戶。
可以將兩個不同大小的快取加以連結嗎?
是,前提是次要連結快取超過主要連結快取。 不過,如果快取的大小不同,則無法使用容錯移轉功能。
啟用叢集時可以使用異地複寫嗎?
是,前提是這兩個快取具有相同的分區數目。
可以使用異地複寫搭配 VNet 中的快取嗎?
在大部分情況下,建議透過 VNet 插入使用 Azure Private Link。 如需詳細資訊,請參閱從 VNet 插入式快取移轉至 Private Link 快取。
雖然在技術上還是有可能在異地複寫快取時使用 VNet 插入,但建議使用 Azure Private Link。
重要
Azure Cache for Redis 建議使用 Azure Private Link,可簡化網路架構並保護 Azure 中端點之間的連線。 您可以透過私人端點從虛擬網路連線到 Azure Cache 執行個體,而私人端點會在虛擬網路內的子網路中獲派私人 IP 位址。 我們的所有階層都有提供 Azure Private Link,包含 Azure 原則支援服務和簡化的 NSG 規則管理。 若要深入了解,請參閱 Private Link 文件。 若要將 VNet 插入的快取遷移至 Private Link,請參閱從 VNet 插入快取遷移至 Private Link 快取。
如需使用 VNet 進行異地複寫支援的詳細資訊,請參閱使用 VNet 插入搭配進階快取進行異地複寫。
哪個複寫排程適用於 Redis 異地複寫?
複寫為連續且非同步。 它不會在特定排程上發生。 已在主要複本上完成的所有寫入,都會在次要複本上立即以非同步方式加以複寫。
異地複寫需要花費多久的時間?
複寫是累加式、非同步且連續的,而所花費的時間與跨區域的延遲不會有很大的差異。 在特定時間,快取需要次要複本對來自主要複本的資料進行完整同步處理。 在此情況下,複寫時間視多種因素而定,例如:主要快取負載、可用網路頻寬,以及區域間延遲。 我們發現完整 53 GB 異地複寫組的複寫時間可以介於 5 到 10 分鐘之間。 您可以使用 Azure 監視器中的 [Geo Replication Data Sync Offset
] 計量來追蹤尚未複寫的資料量。
是否保證複寫復原點?
對於異地複寫模式中的快取,會停用持續性。 如果異地複寫配對未連結,例如客戶起始的容錯移轉,次要連結快取會將其同步資料保持在該時間點。 在這種情況下,不會保證任何復原點。
若要取得復原點,請從任一快取 匯出。 您稍後可以匯入主要連結快取。
可以使用 PowerShell 或 Azure CLI 管理異地複寫嗎?
是,您可以使用 Azure 入口網站、PowerShell 或 Azure CLI 來管理異地複寫。 如需詳細資訊,請參閱 PowerShell 文件或 Azure CLI 文件。
跨 Azure 區域複寫我的資料需要多少費用?
當您使用異地複寫時,主要連結快取的資料會複寫到次要連結快取。 如果兩個連結快取位於相同的 Azure 區域中,資料轉送就無需付費。 若兩個連結快取位於不同的區域,資料傳輸費用是跨任一區域移動資料的網路輸出成本。 如需詳細資訊,請參閱頻寬定價詳細資料。
當我嘗試刪除連結快取時,作業失敗的原因?
移除異地複寫連結前,無法刪除異地複寫快取及其資源群組。 如果您嘗試將包含一個或兩個連結快取的資源群組刪除,就會將資源群組中的其他資源刪除,但資源群組會保留在 deleting
狀態,而資源群組中的任何連結快取會維持 running
狀態。 若要完全刪除資源群組和其中的連結快取,請如移除異地複寫連結中所述,取消連結快取。
要將次要連結快取用於哪個區域?
一般情況下,建議您的快取與存取它的應用程式位於相同的 Azure 區域中。 針對具有不同主要和後援區域的應用程式,建議主要和次要快取存在於這些相同區域中。 如需配對區域的詳細資訊,請參閱最佳做法 – Azure 配對的區域。
是否可以使用異地複寫來設定防火牆?
是,您可以使用異地複寫來設定防火牆。 若要讓異地複寫與防火牆一起運作,請確定次要快取的 IP 位址已新增至主要快取的防火牆規則。 不過,如果在快取上停用公用網路存取,且只啟用私人端點,則不支援在快取上使用防火牆。
下一步
深入了解 Azure Cache for Redis 功能。