IoT 中樞高可用性和災害復原

作為實作復原IoT解決方案的第一步,架構設計人員、開發人員和企業擁有者必須定義其所建置解決方案的運行時間目標。 這些目標主要可以根據每個案例的特定商務目標來定義。 在此內容中,Azure 商務持續性技術指引一文說明一般架構,可協助您思考商務持續性和災害復原。 Azure 應用程式的 災害復原和高可用性檔提供 Azure 應用程式策略的架構指引,以達到高可用性 (HA) 和災害復原 (DR)。

本文討論 IoT 中樞 服務特別提供的HA和DR功能。 本文所討論的廣泛領域如下:

  • 區域內HA
  • 跨區域DR
  • 達成跨區域HA

根據您為IoT解決方案定義的運行時間目標,您應該判斷本文所述的哪些選項最符合您的商務目標。 將這些 HA/DR 替代方案納入您的 IoT 解決方案需要仔細評估以下兩者之間的取捨:

  • 您需要的復原層級
  • 實作和維護複雜度
  • COGS 影響

區域內HA

IoT 中樞 服務藉由在服務的所有層級中實作備援,以提供區域內HA。 IoT 中樞 服務所發佈的 SLA 是藉由使用這些備援來達成。 IoT 解決方案的開發人員不需要額外的工作,即可利用這些 HA 功能。 雖然 IoT 中樞 提供相當高的運行時間保證,但暫時性失敗仍可如任何分散式運算平臺一樣預期。 如果您剛開始從內部部署解決方案將解決方案移轉至雲端,您的焦點必須從優化「失敗之間的平均時間」移轉至「平均復原時間」。 換句話說,暫時性失敗在混合中與雲端一起運作時,會被視為正常。 適當的 重試模式 必須內建至與雲端應用程式互動的元件,以處理暫時性失敗。

可用性區域

IoT 中樞 支援Azure 可用性區域。 可用性區域是高可用性供應項目,可保護應用程式和資料不受資料中心失敗所影響。 具有可用性區域支援的區域包含三個支援該區域的區域。 每個區域都會提供一或多個數據中心,每個數據中心位於具有獨立電源、冷卻和網路功能的獨特實體位置。 此設定可在區域內提供複寫和備援。

可用性區域提供兩個優點:數據復原和更順暢的部署。

數據復原功能 來自於以可用性區域支援的記憶體取代基礎記憶體服務。 數據復原對於IoT解決方案很重要,因為這些解決方案通常會在失敗或中斷可能會有重大後果的複雜、動態和不確定環境中運作。 無論IoT解決方案是否支援製造樓層、零售或餐廳環境、醫療保健系統或基礎結構,都需要數據的可用性和品質,才能從失敗中復原,並提供可靠且一致的服務。

更順暢的 部署是使用支援可用性區域的較新硬體取代基礎數據中心硬體。 這些硬體改進可將裝置中斷連線和重新連線的客戶影響降到最低,以及其他部署相關的停機時間。 IoT 中樞 工程小組會針對每個IoT中樞一個月部署多個更新,基於安全性考慮並提供功能改善。 可用性區域支持的硬體分成15個更新網域,讓每個更新都更順暢,對工作流程的影響最小。 如需更新網域的詳細資訊,請參閱 可用性設定組

IoT 中樞 的可用性區域支援會自動為下列 Azure 區域中建立的新 IoT 中樞 資源啟用:

區域 數據復原 更順暢的部署
澳大利亞東部
巴西南部
加拿大中部
印度中部
美國中部
美國東部
法國中部
德國中西部
日本東部
南韓中部
北歐
挪威東部
卡達中部
南中美國
東南亞
英國南部
西歐
美國西部 2
美國西部 3

跨區域DR

當數據中心因電源故障或其他涉及實體資產的失敗而發生擴充中斷時,可能會有一些罕見的情況。 這類事件很少見,在此期間,先前所述的區域HA功能不一定有説明。 IoT 中樞 提供多個解決方案,可從這類擴充中斷中復原。

在這種情況下,客戶可用的復原選項是 Microsoft 起始的故障轉移手動故障轉移。 兩者的基本差異在於 Microsoft 起始前者,而使用者起始後者。 此外,相較於 Microsoft 起始的故障轉移選項,手動故障轉移可提供較低的復原時間目標 (RTO)。 下列各節將討論每個選項所提供的特定 TO。 執行IoT中樞主要區域故障轉移的其中一個選項時,中樞會在對應的 Azure 異地配對區域中完全正常運作。

這兩個故障轉移選項都提供下列恢復點目標(RPO):

資料類型 復原點目標 (RPO)
身分識別登錄 0-5 分鐘的數據遺失
裝置對應項數據 0-5 分鐘的數據遺失
雲端到裝置訊息1 0-5 分鐘的數據遺失
系 1 和裝置作業 0-5 分鐘的數據遺失
裝置到雲端的訊息 所有未讀取的訊息都會遺失
雲端到裝置的意見反應訊息 所有未讀取的訊息都會遺失

1雲端到裝置訊息和父作業不會在手動故障轉移時復原。

IoT 中樞的故障轉移作業完成之後,裝置和後端應用程式的所有作業都預期會繼續運作,而不需要手動介入。 這表示您的裝置到雲端訊息應該會繼續運作,而且整個裝置登錄保持不變。 只要這些事件方格訂用帳戶繼續可用,就可以透過稍早設定的相同訂用帳戶來取用透過事件方格發出的事件。 自訂端點不需要額外的處理。

警告

  • 故障轉移之後,IoT 中樞 內建事件端點的事件中樞相容名稱和端點會變更。 使用事件中樞用戶端或事件處理器主機從內建端點接收遙測訊息時,您應該使用IoT中樞 連接字串來建立連線。 這可確保後端應用程式在故障轉移后不需要手動介入即可繼續運作。 如果您直接在應用程式中使用事件中樞相容名稱和端點,您必須 在故障轉移之後擷取新的事件中樞相容端點 ,才能繼續作業。 如需詳細資訊,請參閱 手動故障轉移和事件中樞
  • 如果您使用 Azure Functions 或 Azure 串流分析來連線內建的事件端點,您可能需要執行 重新啟動。 這是因為在故障轉移期間先前的位移不再有效。
  • 路由至記憶體時,建議您列出 Blob 或檔案,然後逐一查看它們,以確保讀取所有 Blob 或檔案,而不需進行任何分割區假設。 分割區範圍可能會在 Microsoft 起始的故障轉移或手動故障轉移期間變更。 您可以使用 列出 Blob API 列舉檔案清單的 Blob 清單或 列出 ADLS Gen2 API 清單。 若要深入瞭解,請參閱 Azure 儲存體 作為路由端點

Microsoft 起始的容錯移轉

Microsoft 在極少數情況下會執行 Microsoft 起始的故障轉移,以將所有 IoT 中樞從受影響的區域故障轉移至對應的地理配對區域。 此程式是預設選項,不需要使用者介入。 Microsoft 有權決定施行此選項的時機。 在用戶中樞故障轉移之前,此機制不會涉及使用者同意。 Microsoft 起始的故障轉移具有 2-26 小時的復原時間目標 (RTO)。

大型 RTO 是因為 Microsoft 必須代表該區域中所有受影響的客戶執行故障轉移作業。 如果您執行一個較不重要的IoT解決方案,可能會持續大約一天的停機時間,您可以依賴此選項來滿足IoT解決方案的整體災害復原目標。 運行時間作業在觸發此程序之後變成完整運作的總時間,如「復原時間」一節所述。

只有將IoT中樞部署到巴西南部和東南亞(新加坡)區域的使用者可以退出宣告此功能。 如需詳細資訊,請參閱 停用災害復原

注意

Azure IoT 中樞不會在部署服務執行個體的地理位置之外儲存或處理客戶資料。 如需詳細資訊,請參閱 Azure 中的跨區域複寫

手動容錯移轉

如果 Microsoft 起始故障轉移所提供的 RTO 不符合您的商務運行時間目標,請考慮使用手動故障轉移自行觸發故障轉移程式。 使用此選項的 RTO 可能介於 10 分鐘到數小時之間。 RTO 目前是針對正在故障轉移之 IoT 中樞實例所註冊裝置數目的函式。 您可以預期裝載大約 100,000 部裝置的中樞 RTO 將在 15 分鐘的球場內。 運行時間作業在觸發此程序之後變成完整運作的總時間,如「復原時間」一節所述。

不論主要區域是否發生停機,手動故障轉移選項一律可供使用。 因此,這個選項可能會用來執行計劃性故障轉移。 計劃性故障轉移的其中一個範例是執行定期故障轉移演練。 不過,請注意,規劃的故障轉移作業會導致中樞在此選項所定義的期間停機,也會導致數據遺失,如上述 RPO 數據表所定義。 您可以考慮設定測試IoT中樞實例,定期執行計劃性故障轉移選項,以讓您在發生實際災害時能夠啟動並執行端對端解決方案。

在 2017 年 5 月 18 日之後建立的 IoT 中樞,手動故障轉移不需額外費用

如需逐步指示,請參閱 教學課程:執行IoT中樞的手動故障轉移

手動故障轉移和事件中樞

手動故障轉移之後,IoT 中樞 內建事件端點的事件中樞相容名稱和端點會變更。 這是因為事件中樞客戶端無法看見 IoT 中樞 事件。 其他雲端式用戶端也是如此,例如 Functions 和 Azure 串流分析。 若要擷取端點和名稱,您可以使用 Azure 入口網站 或 .NET SDK。

使用入口網站

如需使用入口網站擷取事件中樞相容端點和事件中樞相容名稱的詳細資訊,請參閱 連線 至內建端點

使用 .NET SDK

若要使用 IoT 中樞 連接字串 來重新擷取事件中樞相容端點,請使用位於的https://github.com/Azure/azure-sdk-for-net/tree/main/samples/iothub-connect-to-eventhubs範例。 程式代碼範例會使用 連接字串 來取得新的事件中樞端點,然後重新建立連線。 您必須已安裝 Visual Studio。

執行測試演練

測試演練不應該在生產環境中使用的IoT中樞上執行。

請勿使用手動故障轉移將IoT中樞移轉至不同的區域

手動故障轉移 不應 作為機制,在 Azure 地理配對區域之間永久移轉中樞。 假設裝置位於最接近中樞的主要區域,當中樞故障轉移至次要區域時,針對IoT中樞執行的作業延遲將會增加。

容錯回復

您可以第二次觸發故障轉移動作,以容錯回復到舊的主要區域。 如果執行原始故障轉移作業以從原始主要區域中的延伸中斷復原,建議您在從中斷情況復原該位置之後,中樞應該容錯回復到原始位置。

重要

  • 使用者只能每天執行 2 次成功的故障轉移和 2 次成功的容錯回復作業。
  • 不允許回溯故障轉移/容錯回復作業。 在這些作業之間,您必須等候 1 小時。

復原時間

雖然 IoT 中樞實例的 FQDN (因此,連接字串) 在故障轉移後維持不變,但基礎 IP 位址會變更。 針對IoT中樞實例執行的運行時間作業,在故障轉移程序之後,可以使用下列函式來表示完全運作的時間:

復原時間 = RTO [10 分鐘 - 2 小時,手動故障轉移 | Microsoft 起始故障轉移 2 - 26 小時] + 用戶端應用程式重新整理任何快取 IoT 中樞 IP 位址所花費的時間 + DNS 傳播延遲 + 時間。

重要

IoT SDK 不會快取 IoT 中樞的 IP 位址。 建議您不要快取IoT中樞的IP位址,與SDK互動的用戶程序代碼。

停用災害復原

IoT 中樞 會將數據復寫至每個 IoT 中樞的配對區域,以提供 Microsoft 起始的故障轉移和手動故障轉移。 對於某些區域,您可以藉由在建立IoT中樞時停用災害復原,以避免區域外部的數據複寫。 下列區域支援這項功能:

  • 巴西南部;配對區域,美國中南部。
  • 東南亞(新加坡);配對區域,東亞(香港特別行政區)。

若要停用支援區域中的災害復原,請在建立IoT中樞時,確定 已啟用 災害復原:

顯示新加坡地區IoT中樞災害復原選項的螢幕快照。

您也可以在使用 ARM範本建立IoT中樞時停用災害復原。

如果您停用IoT中樞的災害復原,將無法使用故障轉移功能。

此螢幕快照顯示新加坡區域中IoT中樞已停用災害復原。

當您建立IoT中樞時,您只能停用災害復原,以避免在巴西南部或東南亞配對區域以外的數據複寫。 如果您想要將現有的IoT中樞設定為停用災害復原,您必須建立已停用災害復原的新IoT中樞,並手動移轉現有的IoT中樞。 如需指引,請參閱 如何移轉IoT中樞

達成跨區域HA

如果 Microsoft 起始的故障轉移或手動故障轉移選項所提供的 RTO 不符合您的商務運行時間目標,您應該考慮實作個別裝置自動跨區域故障轉移機制。 IoT 解決方案中部署拓撲的完整處理不在本文的範圍內。 本文討論 高可用性和災害復原的區域故障轉移 部署模型。

在區域故障轉移模型中,解決方案後端主要會在一個數據中心位置執行。 次要IoT中樞和後端會部署在另一個資料中心位置。 如果主要區域中的IoT中樞發生中斷,或從裝置到主要區域的網路連線中斷,裝置會使用次要服務端點。 您可以實作跨區域故障轉移模型,而不是停留在單一區域內,以改善解決方案可用性。

概括而言,若要使用 IoT 中樞 實作區域故障轉移模型,您必須採取下列步驟:

  • 次要IoT中樞和裝置路由邏輯:如果主要區域中的服務中斷,裝置必須開始連線到您的次要區域。 鑒於涉及大部分服務的狀態感知本質,解決方案管理員通常會觸發區域間故障轉移程式。 將新端點傳達給裝置的最佳方式,同時維持程式的控制權,是讓他們定期檢查 目前作用中端點的指引 服務。 指引服務可以是使用 DNS 重新導向技術進行複寫並保持可連線的 Web 應用程式(例如,使用 Azure 流量管理員)。

    注意

    IoT 中樞服務不是 Azure 流量管理員 中支援的端點類型。 建議是藉由實作端點健康情況探查 API,將建議的指引服務與 Azure 流量管理員整合。

  • 身分識別登錄複寫:若要使用,次要IoT中樞必須包含可連線到解決方案的所有裝置身分識別。 解決方案應該保留裝置身分識別的異地復寫備份,並將其上傳至次要IoT中樞,再切換裝置的作用中端點。 IoT 中樞的裝置身分識別導出功能在此內容中很有用。 如需詳細資訊,請參閱 IoT 中樞 開發人員指南 - 身分識別登錄

  • 合併邏輯:當主要區域再次可用時,必須在次要站台中建立的所有狀態和數據移轉至主要區域。 此狀態和數據大多與裝置身分識別和應用程式元數據有關,這些元數據必須與主要IoT中樞和主要區域中的任何其他應用程式特定存放區合併。

若要簡化此步驟,您應該使用等冪作業。 等冪作業會將事件最終一致分佈的副作用降到最低,以及事件重複或順序錯亂傳遞的副作用降到最低。 此外,應用程式邏輯應該設計成容許潛在的不一致或略為過時狀態。 這種情況可能會因為系統根據恢復點目標 (RPO) 而需要額外的時間來修復。

選擇正確的HA/DR選項

以下是本文中提供的 HA/DR 選項摘要,可用來做為參考框架,以選擇適合您解決方案的正確選項。

HA/DR 選項 復原時間目標 (RTO) 復原點目標 (RPO) 需要手動介入嗎? 實作複雜度 成本影響
Microsoft 起始的容錯移轉 2 - 26 小時 請參閱上述 RPO 表格 No
手動容錯移轉 10 分鐘 - 2 小時 請參閱上述 RPO 表格 Yes 非常低。 您只需要從入口網站觸發此作業。
跨區域HA < 1 分鐘 取決於自定義HA解決方案的複寫頻率 No > 1 個 IoT 中樞的成本為 1 倍

下一步