高可用性和災害復原
如同任何雲端系統,可能會發生非計劃性中斷,導致虛擬機器 (VM) 執行個體、可用性區域或完整的 Azure 區域停止運作。 我們建議客戶具備適當的方案來處理區域或區域性中斷。
本文提供的資訊可讓客戶針對其 Azure Cache for Redis 或 Azure Cache for Redis Enterprise 實作建立商務持續性和災害復原方案。
標準、進階和企業層提供各種高可用性選項:
選項 | 描述 | 可用性 | 標準 | Premium | Enterprise |
---|---|---|---|---|---|
標準複寫 | 單一資料中心內具有自動容錯移轉的雙節點複寫設定 | 99.9% (請參閱詳細資料) | Yes | .是 | Yes |
區域備援 | 跨可用性區域的多節點複寫設定,具有自動容錯移轉 | 進階 99.9%;企業 99.99% (請參閱詳細資料) | Yes | .是 | Yes |
異地複寫 | 兩個區域中的連結快取執行個體,具有使用者控制的容錯移轉 | 進階;企業 (請參閱詳細資料) | No | 被動式 | 使用中 |
匯入/匯出 | 快取中資料的時間點快照集。 | 99.9% (請參閱詳細資料) | No | .是 | Yes |
持續性 | 定期將資料儲存至儲存體帳戶。 | 99.9% (請參閱詳細資料) | No | Yes | 預覽 |
高可用性的標準複寫
適用層:標準、進階、企業、Enterprise Flash
建議:高可用性
Azure Cache for Redis 具有高可用性結構,可確保受控執行個體正常運作,即使中斷會影響基礎虛擬機器 (VM) 也一樣。 不論中斷是計劃性還是非計劃性,Azure Cache for Redis 提供的可用性百分比高於在單一 VM 上裝載 Redis 所能獲得的。
適用層中的 Azure Cache for Redis 預設在一對 Redis 伺服器上執行。 這兩部伺服器裝載於專用 VM 上。 開放原始碼 Redis 只允許一部伺服器處理資料寫入要求。
使用 Azure Cache for Redis 時,一部伺服器是「主要」節點,另一部則是「複本」。 在其佈建伺服器節點之後,Azure Cache for Redis 會將主要和複本角色指派給這些節點。 主要節點通常負責為來自用戶端的寫入和讀取要求提供服務。 在寫入作業上,其會將新的金鑰和金鑰更新認可至內部記憶體,並立即回覆用戶端。 其會以非同步方式將作業轉送至「複本」。
注意
一般而言,Azure Cache for Redis 用戶端應用程式會與快取中的主要節點通訊,以取得所有讀取和寫入要求。 某些用戶端可以設定為從複本節點讀取。
如果快取中的「主要」節點無法使用,「複本」會將自己升階以成為新的主要節點。 此流程稱為「容錯移轉」。 容錯移轉只是兩個節點:主要/複本、交易角色、複本/主要節點,其中一個節點可能離線幾分鐘。 在大部分的容錯移轉中,主要和複本節點會協調交接,因此您沒有主要節點的時間幾乎為零。
先前的主要節點會短暫離線,以接收來自新主要節點的更新。 然後,現在複本會重新上線,並重新加入完全同步處理的快取。 關鍵是當節點無法使用時,這是暫時性狀況,而且節點會重新上線。
當主要節點需要關閉以進行維護時,典型的容錯移轉順序看起來會像這樣:
- 主要和複本節點會交涉協調的容錯移轉和交易角色。
- 複本 (先前的主要) 節點會離線以重新開機。
- 幾秒鐘或幾分鐘後,複本節點會重新上線。
- 複本節點會同步處理主要節點中的資料。
作為計劃性維護活動 (例如更新 Redis 軟體或作業系統) 的一部分,主要節點可以停止服務。 其也可能由於基礎硬體、軟體或網路失敗等非計劃性事件而停止運作。 Azure Cache for Redis 的容錯移轉和修補提供容錯移轉類型的詳細說明。 Azure Cache for Redis 會在其存留期間經歷許多容錯移轉。 高可用性架構的設計使快取內的這些變更對其用戶端儘可能透明。
此外,Azure Cache for Redis 也會進階層中提供更多的複本節點。 多複本快取可以設定為最多具有三個複本節點。 具有更多複本通常會改善復原能力,因為您有節點備份主要節點。 即使具有更多複本,Azure Cache for Redis 執行個體仍可能會受到資料中心或可用性區域中斷的嚴重影響。 您可以使用多個複本搭配區域備援來增加快取可用性。
區域備援
適用層:標準、進階、企業、Enterprise Flash
建議:高可用性、災害復原 - 區域內部
Azure Cache for Redis 支援標準、進階和企業層中的區域備援設定。 區域備援快取可以將其節點放在相同區域的不同 Azure 可用性區域中。 其會排除資料中心或可用性區域中斷作為單一失敗點,並增加快取的整體可用性。
如果快取設定為使用本文稍早所述的兩個以上的個區域,則會在不同的區域中建立快取節點。 當區域停止運作時,可以使用其他區域中的快取節點,讓快取如往常運作。
重要
根據預設,Azure Cache For Redis 會使用 支援區域的區域中Automatic_Zonal_Allocation ,為進階、標準層建立區域備援快取。 如需詳細資訊,請參閱為 Azure Cache for Redis 啟用區域備援。
進階層
下圖說明進階層的區域備援設定:
Azure Cache for Redis 會透過選取的可用性區域以循環方式散發區域備援快取中的節點。 它也會決定一開始做為主要節點的節點。
進階層的區域關閉體驗
區域備援快取提供自動容錯移轉。 當目前的主要節點無法使用時,其中一個複本就會接管。 如果新的主要節點位於不同的 AZ 中,您的應用程式可能會遇到更高的快取回應時間。 可用性區域分隔於各地。 從一個 AZ 切換至另一個 AZ 會改變應用程式與快取裝載所在之間的實際距離。 這項變更會影響從應用程式到快取的來回網路延遲。 額外的延遲應該會落在大部分應用程式可接受的範圍內。 建議您測試應用程式,以確保其可以搭配區域備援快取良好運作。
企業和 Enterprise Flash 層
任一企業層中的快取都會在 Redis Enterprise「叢集」上執行。 其一律需要奇數的伺服器節點才能形成仲裁。 根據預設,其有三個節點,每個節點都裝載於專用 VM 上。
- 企業快取有兩個相同大小的「資料節點」和一個較小的「仲裁節點」。
- Enterprise Flash 快取有三個相同大小的資料節點。
企業叢集會在內部將 Azure Cache for Redis 資料分割成數個分割區。 每個分割區都有一個「主要」節點和至少一個「複本」。 每個資料節點都會保留一或多個分割區。 企業叢集可確保任何分割區的主要節點和複本永遠不會共置在相同的資料節點上。 分割區會以非同步方式將資料從主要節點複寫到其對應複本。
Enterprise 階層的區域關閉體驗
當資料節點變成無法使用或網路發生分割時,類似於標準複寫中所述的容錯移轉就會發生。 企業叢集會使用仲裁型模型,來判斷哪些仍正常運作的節點參與新的仲裁。 其也會視需要將這些節點內的複本分割區升階為主要分割區。
區域可用性
區域備援進階、標準層快取可在下列區域中使用:
美洲 | 歐洲 | 中東 | 非洲 | 亞太地區 |
---|---|---|---|---|
巴西南部 | 法國中部 | 卡達中部 | 南非北部 | 澳大利亞東部 |
加拿大中部 | 義大利北部 | 阿拉伯聯合大公國北部 | 印度中部 | |
美國中部 | 德國中西部 | 以色列中部 | 日本東部 | |
美國東部 | 挪威東部 | |||
美國東部 2 | 北歐 | 東南亞 | ||
美國中南部 | 英國南部 | 東亞 | ||
US Gov 維吉尼亞州 | 西歐 | 中國北部 3 | ||
美國西部 2 | 瑞典中部 | 南韓中部 | ||
美國西部 3 | 瑞士北部 | 紐西蘭北部 | ||
墨西哥中部 | 波蘭中部 | |||
西班牙中部 |
區域備援 Enterprise 和 Enterprise Flash 階層快取可在下列區域中使用:
美洲 | 歐洲 | 中東 | 非洲 | 亞太地區 |
---|---|---|---|---|
加拿大中部* | 北歐 | 澳大利亞東部 | ||
美國中部* | 英國南部 | 印度中部 | ||
美國東部 | 西歐 | 東南亞 | ||
美國東部 2 | 日本東部* | |||
美國中南部 | 東亞* | |||
美國西部 2 | ||||
美國西部 3 | ||||
巴西南部 |
* 此區域無法使用 Enterprise Flash 階層。
可用性區域重新部署和移轉
目前,將快取從非 AZ 組態轉換成 AZ 組態的唯一方法是重新部署快取。 若要了解如何重新部署目前的快取,請參閱將 Azure Cache for Redis 執行個體移轉至可用性區域支援。
持續性
適用層:Premium、Enterprise (預覽)、Enterprise Flash (預覽)
建議:資料持久性
因為您的快取資料儲存在記憶體中,所以多個節點若發生罕見且非計劃性失敗,可能會導致所有資料遭到卸除。 為了避免完全失去資料,Redis 持續性可讓您取得記憶體內部資料的定期快照集,並將其儲存至儲存體帳戶。 如果您在多個節點之間發生失敗而導致資料流失,您的快取會從儲存體帳戶載入快照集。 如需詳細資訊,請參閱設定進階 Azure Cache for Redis 執行個體的資料持續性。
適用於持續性的儲存體帳戶
請考慮選擇異地備援儲存體帳戶,以確保所保存資料的高可用性。 如需詳細資訊,請參閱 Azure 儲存體備援 \(部分機器翻譯\)。
匯入/匯出
適用層:標準、企業、Enterprise Flash
建議:災害復原
Azure Cache for Redis 支援匯入和匯出 Redis 資料庫 (RDB) 檔案,以提供資料可攜性的選項。 其可讓您使用 RDB 快照集,將資料匯入至 Azure Cache for Redis 或從Azure Cache for Redis 匯出資料。 來自進階快取中的 RDB 快照集會匯出至 Azure 儲存體帳戶中的 Blob。 您可以建立指令碼來觸發定期匯出至儲存體帳戶。 如需詳細資訊,請參閱在 Azure Redis 快取中匯入和匯出資料。
用於匯出的儲存體帳戶
請考慮選擇異地備援儲存體帳戶,以確保所匯出資料的高可用性。 如需詳細資訊,請參閱 Azure 儲存體備援 \(部分機器翻譯\)。
被動式異地複寫
適用層:進階
建議:災害復原 - 單一區域
異地複寫是連結兩個以上 Azure Cache for Redis 執行個體的機制,通常跨越兩個 Azure 區域。 異地複寫主要是針對對區域災害復原而設計。 兩個進階層快取執行個體會透過異地複寫來連線,其採取的方式為將讀取和寫入提供給您的主要快取,然後將該資料複寫至次要快取。
如需其設定方式的詳細資訊,請參閱設定進階 Azure Cache for Redis 執行個體的異地複寫。
如果裝載主要快取的區域停止運作,您必須啟動容錯移轉,方法是:首先取消連結次要快取,然後更新應用程式以指向次要快取,進行讀取和寫入。
作用中異地複寫
適用層:企業、Enterprise Flash
建議:高可用性、災害復原 - 多重區域
Enterprise 階層支援更進階的異地複寫形式,稱為主動式異地複寫,可提供跨越多個區域的高可用性和跨區域災害復原。 Azure Cache for Redis Enterprise 軟體會使用無衝突的複寫資料類型,支援寫入至多個快取執行個體、合併變更,以及解決衝突。 您可以在不同的 Azure 區域中加入最多五個企業層快取執行個體,以形成異地複寫群組。
使用這類快取的應用程式可以透過其對應端點,讀取和寫入至任何異地分散式快取執行個體。 應用程式應該使用最接近每個應用程式執行個體的快取,為您提供最低的延遲。 如需詳細資訊,請參閱設定 Enterprise Azure Cache for Redis 執行個體的使用中異地複寫。
如果複寫群組中其中一個快取的區域停止運作,您的應用程式必須切換到另一個可用的區域。
當複寫群組中的快取無法使用時,建議您監視相同複寫群組中其他快取的記憶體使用量。 當其中一個快取停止運作時,複寫群組中的其他所有快取都會開始儲存無法與停止運作的快取共用的中繼資料。 如果在其中一個快取停止運作之後,可用快取的記憶體使用量開始高速成長,請考慮取消連結無法從複寫群組使用的快取。
如需強制取消連結的詳細資訊,請參閱發生區域中斷時強制取消連結。
刪除並重新建立快取
適用層:標準、進階、企業、Enterprise Flash
如果您遇到區域性中斷,請考慮在不同的區域中重新建立快取,並更新應用程式以改為連線到新的快取。 請務必了解資料會在區域性中斷期間流失。 您的應用程式碼應該能夠復原流失的資料。
一旦還原了受影響的區域,無法使用的 Azure Cache for Redis 就會自動還原,並再次可供使用。 如需將快取移至不同區域的其他策略,請參閱將 Azure Cache for Redis 執行個體移至不同的區域。
下一步
深入了解如何設定 Azure Cache for Redis 高可用性選項。