天天看點

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

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 資料、計算備援 單點當機秒級服務
HDFS Namenode 雙節點HA部署 單點當機秒級恢複,雙節點當機恢複時間在分鐘級
Datanode 單點當機不中斷服務
HBase HMaster 不影響資料讀寫
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.96 1.x 2.x 雲增強版
YES NO

版本主備相容性清單

控制台提供一鍵切換不需要重新開機用戶端,提供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,希望增加一個備庫,隻需如下步驟

3 配置域名映射和安全組(會提供相關的服務一鍵解決)

4 輸入主備兩個叢集的位址資訊建立高可用通路位址

5 開始您的高可用之旅

具體的操作流程請參考手冊:

https://help.aliyun.com/document_detail/140940.html?spm=a2c4g.11186623.6.719.30954117Tg56BR