阿里雲HBase推出普惠性高可用服務,獨家支援使用者的自建、混合雲環境叢集

大濤學長發表於2019-11-11
HBase可以支援百TB資料規模、數百萬QPS壓力下的毫秒響應,適用於大資料背景下的風控和推薦等線上場景。阿里雲HBase服務了多家金融、廣告、媒體類業務中的風控和推薦,持續的在高可用、低延遲、低成本方向上進行最佳化。目前單叢集承諾可用性99.9%,SSD機型上可以做到請求毛刺99.5% < 50ms,以及新上線的表內冷熱分離可以加速熱資料訪問效能、減少冷資料儲存成本並且在API上對使用者透明。為了進一步滿足客戶在可用性以及低延遲上的訴求,阿里雲HBase將提供以主備架構為平臺,以冗餘、併發、隔離、降級等全方位服務為支撐的高可用解決方案,目標提供99.99%可用性、99.9%請求小於50ms。目前高可用專案一期已經完成,本文將介紹主備架構以及一鍵切換能力。

HBase單叢集可用性

一個HBase系統包含了Zookeeper、HDFS、HBase三個元件。其中Zookeeper在資料和計算上都進行了冗餘,且是一個可自愈系統,單節點故障可在秒級恢復。HBase對Zookeeper是輕依賴,一般不會出現大問題。HDFS是一個Master-Slave模式的分散式檔案系統,存在中心節點Namenode,Namenode支援以HA方式部署,單Namenode故障可秒級恢復,在兩個NN都當機的情況下依然可以重啟自愈,但恢復時間取決於回放日誌大小,在分鐘級別。資料多副本冗餘,Datanode單節點當機不中斷服務。HBase也是一個Master-Slave模式的分散式系統,其中HMaster不參與讀寫路徑,因此HMaster當機不中斷服務,但長期當機會影響負載均衡、Failover等能力,HMaster支援HA方式部署。HBase還有一個單點是Meta服務,它隨機選擇一個RegionServer節點作為宿主,如果meta服務不可用則所有請求路由會失效,導致整體不可用。由於客戶端有路由快取,meta服務停機不會立即造成不可用。HBase資料分片使用Range Partition的方式,每一個Region由一個RegionServer服務,即HBase的計算服務是0冗餘,因此當RegionServer故障時多個分片不可服務。HBase Failover機制可以自愈,單RegionServer當機恢復時間在分鐘級,多個RegionServer當機恢復時間在10分鐘~1小時時間不等。

阿里雲HBase推出普惠性高可用服務,獨家支援使用者的自建、混合雲環境叢集
單叢集HBase高可用部署
元件角色高可用機制故障影響Zookeeper資料、計算冗餘單點當機秒級服務HDFSNamenode雙節點HA部署單點當機秒級恢復,雙節點當機恢復時間在分鐘級Datanode資料、計算冗餘單點當機不中斷服務HBaseHMaster雙節點HA部署不影響資料讀寫Meta服務單點,可自愈影響全域性不可用Region單點,可自愈區域性不可用,單點分鐘級恢復,多點恢復時間可達小時級別

核心或執行環境Bug造成HBase自愈不可控

case1 某金融公司自建HBase因ECS重啟導致WAL資料破壞,HBase Failover無法進行,叢集不可用無法自愈 case2 某影片公司自建HBase叢集Meta資料陷入不一致無法恢復,造成分割槽無法上線,部分表不可用無法自愈 case3 某媒體公司IO壓力較大經常觸發空間洩漏Bug,導致空間不足叢集當機無法自愈 以上是真實的案例,Bug是不可避免的,未知Bug處理考驗核心團隊的技術實力,需要具備外科手術的能力,但其處理時間是不可預期的。

雲HBase主備高可用方案

故障恢復時間可預知的高可用系統,故障發生時可以在分鐘級別恢復讀寫能力。實現方案選擇經典的主備模式,也支援主主模式。備叢集部署在同城的不同機房內,在資源層面完全隔離,軟體可部署不同的版本,最大程度保持兩個叢集的獨立性。從經驗資料出發,單機房故障恢復時間的上限為1個小時,在這1個小時內另一個機房也發生故障的機率非常低,有兩種情況除外:第一種是城市級災難,這個需要異地容災方案;第二種是故障源於業務流量增長,系統過載,此時的解決方案是限流或者擴容。這兩種情況不在本文設計考慮之內。系統提供一鍵切換能力,不需要客戶端重啟,每一個客戶端在收到切換訊號時會自動完成連線的切換,客戶端的切換是併發進行的,所有客戶端可以在10秒內完成切換。
高可用方案可以獨立提供給自建使用,支援自建和雲HBase混合主備。如果你已經擁有一個HBase叢集,可以方便的彈出一個冗餘備叢集,備叢集的建表和資料複製都是自動完成。當故障發生時,可以在控制檯切換流量到備庫,待主叢集恢復後再把流量切回。雲HBase高可用服務是一個獨立的服務,可以看做是基於HBase之上的一箇中介軟體,支援混合雲是我們的設計原則,雲上同VPC下的自建HBase、EMR HBase、雲HBase可以方便的進行主備混合使用,對於IDC自建HBase或者它雲上的HBase則需要使用者自行解決網路聯通。
簡單易用,HBase客戶端從普通模式轉化為高可用模式不需要修改程式碼。雲HBase會提供一個外掛整合到HBase客戶端,並且為高可用提供一個新的Endpoint。這個Endpoint就是簡單的 ip+port,用來替換單叢集模式下的Zookeeper地址。使用者可以選擇核心表進行高可用建設,非核心表依然保持單叢集來降低成本。對於高可用的表,可以透過高可用客戶端進行建立、修改和刪除,控制檯會保證主備叢集後設資料的一致性。目前我們支援0.96、0.98、1.x、2.x、雲HBase增強版等多個版本。
0.961.x2.x雲增強版0.96YESNONOYES1.xNOYESYESYES2.xNOYESYESYES雲增強版YESYESYESYES

版本主備相容性列表
控制檯提供一鍵切換不需要重啟客戶端,提供AliHBaseConnector作為原生HBase客戶端的一個外掛,外掛內部會封裝主備切換邏輯。客戶端啟動時會從BDS獲取主備地址資訊同時建立一個高可用的命令通道,控制檯發出的切換命令透過該通道到達客戶端,客戶端自動的斷開舊連結,開啟備庫連結並重試請求。
綜上所述,雲HBase主備高可用架構如下圖:

阿里雲HBase推出普惠性高可用服務,獨家支援使用者的自建、混合雲環境叢集

  • 資料同步
雲HBase並沒有採用開源的Replication方案,主要的原因包括: HBase Replication抗熱點能力差,每臺機器只能處理自己的日誌 HBase Replication Failover的設計存在缺陷,導致一旦RS當機就會出現長時間同步延遲 HBase Replication與核心爭搶資源,無法獨立擴容 HBase Replication的管理依賴表屬性配置,配置項很多,在混合雲模式下很難維護
BDS Replication是一個獨立的資料複製服務,提供延遲百毫秒級別的雙向資料同步能力。BDS Replication可以獨立的擴容縮容,它不需要磁碟,可以更好的管理成本。

阿里雲HBase推出普惠性高可用服務,獨家支援使用者的自建、混合雲環境叢集

  • 主備一致性
雲HBase主備採用的是非同步複製,提供基於版本的最終一致性。寫入主庫的一行資料在同步到備庫時,會保持和主庫一致的版本號。雲HBase高可用目前僅支援最終一致性切換,在切換時主備可能存在秒級的不一致。對於風控、推薦、畫像類的應用,最終一致性是滿足需求的。如果您使用了CheckAndPut、CheckAndDelete這樣的介面則會出現一致性問題,此種情況請聯絡雲HBase提供技術諮詢。
  • 配置服務
配置服務有兩個作用,儲存主備叢集的地址資訊和通知切換命令。高可用客戶端在啟動時會訪問該服務載入主備叢集地址資訊。透過控制檯執行的切換命令也會由配置服務通知所有的客戶端。配置服務本身採用了冗餘來保障儲存和訊息的高可用。
  • 監控
高可用服務可以實時顯示主備叢集的狀態。主、備角色在初始配置時確定不能更改,但狀態"active/standby"是可變化的,處於"active"狀態的叢集是目前客戶端訪問的叢集。提供主備叢集雙向同步鏈路的實時延遲展示,同時提供客戶端連結數量監控,使得使用者可以準確的判斷切換進度。

雲HBase高可用使用方式

如果您已經使用了雲HBase並且希望增加一個備庫,只需如下步驟 1 購買一個BDS叢集用於管理主備 2 購買一個空的雲HBase叢集作為備庫 3 輸入主備兩個叢集的例項ID建立高可用訪問地址 4 開始您的高可用之旅
如果您使用的是ECS自建叢集或者EMR HBase,希望增加一個備庫,只需如下步驟
1 購買一個BDS叢集用於管理主備 2 購買一個空的雲HBase叢集作為備庫 3 配置域名對映和安全組(會提供相關的服務一鍵解決) 4 輸入主備兩個叢集的地址資訊建立高可用訪問地址 5 開始您的高可用之旅


本文為雲棲社群原創內容,未經允許不得轉載。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947441/viewspace-2663490/,如需轉載,請註明出處,否則將追究法律責任。

相關文章