關於Event Hub(事件中心)的災備方案,大多數就是新建另外一個備用的Event Hub,當主Event Hub出現不可用的情況時,就需要切換到備Event Hub上。 而在切換的過程中,難點在於如何讓使用者端應用無感知的切換到備份Event Hub,以前的方案有兩種:
1:在自己DNS伺服器中,設定DNS別名。然後在應用程式碼中,需要先根據DNS別名查詢到正確的Event Hub域名。實現方式:https://docs.azure.cn/zh-cn/event-hubs/event-hubs-federation-patterns
2:在應用的組態檔中,修改Event Hub的連結字串。
第一種方式需要自己設定DNS服務,並且在應用程式程式碼中需要加入根據DNS別名查詢Event Hub域名的操作,操作複雜。 第二種方式,需要在修改應用組態檔,導致應用需要重啟,或者是修改很多組態檔。
現在,Event Hub主動推出了異地災難恢復( Geo-Disaster Recovery)功能,它旨在讓使用者能夠更輕鬆地從如此大規模的災難中恢復,且無需更改應用程式設定。關鍵內容見下圖紅色區域。
所以,本文主要的操作就是根據此檔案,啟用Geo-Disaster Recovery功能。並通過手動執行Failover來驗證 主備 Event Hub能順利的接收訊息。
這一步的操作步驟, 執行簡單,根據頁面指引,一步一步完成即可。官網步驟:https://docs.azure.cn/zh-cn/event-hubs/event-hubs-geo-dr?tabs=portal
建立成功後,頁面下顯示內容為:
首先,在本實驗中,主Event Hub為 lbdiagnostictest01, 次Event Hub為 lbdiagnostictest02,對比兩個Event Hub後設資料。
然後,在 主Event Hub 中新增一個 testdr 消費組,檢查 次Event Hub 中是否自動新增。【答案是會自動新增】
最後,在 次Event Hub 中新增一個 testdr2 消費組,再次檢查 主Event Hub 中是否自動田間。【答案是不會自動新增】
Azure Service Bus Explorer 工具的下載地址:https://github.com/paolosalvatori/ServiceBusExplorer/releases/download/5.0.7/ServiceBusExplorer-5.0.7.zip
演示動畫:
開始執行Failover操作 (只需要在 Event Hub的頁面中通過 點選Failover 案例即可)
在執行完成Failover操作後,再次通過Dig工具,檢視Alias域名(lbeventhubertest.servicebus.chinacloudapi.cn)解析出來的Host為:lbdiagnostictest02
分別在主/從 Event Hub頁面中進入Metrics頁面,檢視Incoming Message的曲線
特別注意:按照設計,事件中心異地災難恢復不會複製資料,因此,無法在輔助事件中心重複使用主事件中心的舊偏移值。建議通過以下方法之一重啟事件接收器:
[END]
ServiceBusExplorer : https://github.com/paolosalvatori/ServiceBusExplorer/releases
Azure 事件中心 - 異地災難恢復: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-geo-dr?tabs=portal
Azure 事件中心故障轉移: https://docs.azure.cn/zh-cn/event-hubs/event-hubs-federation-patterns
當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!