突破存儲跨中心雙活方案設計階段難點之五:雙中心間通訊不可控
存儲跨中心雙活最關鍵、最難點就是鏈路質量,如何把控該風險?
雙中心間通訊不可控問題:一是鏈路穩定狀況不可控;二是IO延時指標不可控。這些不可控因素非常容易造成災難性影響,輕則導致數據庫讀寫性能災難,重則導致數據庫節點直接處于僵死狀態。另外,鏈路的不穩定會導致存儲鏈路頻繁切換,甚至會導致集群仲裁頻繁發生,這對于業務連續性更是一個災難。
解析和解答
鄧毓 某農信社資深骨干工程師
無論什么雙活,只要上升到了跨中心的層面,就必然需要跨中心的鏈路作為雙活的通訊介質。這個通訊不但要求高可用性和冗余度,而且又對通訊質量要求又很高。并且鏈路所帶來的風險隱患又是巨大的,中斷或者響應時間高都將可能導致雙活集群發生腦裂仲裁,出于保護的目的,將IO HANG住一段時間,將所有沒有落入磁盤的數據全部刷盤,才繼續在某個存活的站點繼續恢復讀寫訪問。所以阻礙存儲跨中心雙活技術發展的最直接的因素就是雙中心間鏈路不可控。尤其對風險、穩定性要求苛刻的金融機構來說,更加不敢輕易做跨中心的雙活。所以鏈路成為了存儲雙活的最難點,如何既提高鏈路穩定性,又保證鏈路的性能,還又有合理的故障保障機制,是每一個存儲廠商和企業用戶都要深思的關鍵點。
在這里我也不刻意去解決該難題,而是提出些許我的想法。
1.鏈路冗余度
通常我們企業做雙活,都是自己購買波分設備,然后租用運營商的裸光纖,作為通訊的鏈路。所以波分設備需要冗余,裸光纖也要冗余,波分設備好辦,購買即可。裸光纖通常租用兩家或兩家以上的運營商線路,比如電信和聯通,電信的裸光纖也需要冗余,聯通的裸光纖也需要冗余,防止單根裸光纖意外割斷或者損壞。然而單家運營商的裸纖都通常在一個弱點井中,一起意外割斷的事情常有,所以需要兩家運營商互相冗余。這兩家運營商裸纖的路線還不能一致,弱電井需要在不同的街道,并且分別走不同的路線到達目的地。所以可以看到,由于我們是租用,根本不可能要求運營商完全達到你的要求,***的方式只能自建,成本太高,好像根本不現實。
示意圖:
2.鏈路質量
鏈路質量包括光衰、抖動和帶寬等。一方面,光衰和抖動無法控制,只能靠波分設備去探測,發現光衰和抖動,立即中斷該鏈路,切向備鏈路,這對后端的SAN網絡無感知,但對波分設備的要求很高,需要購買和建設時注意。至于帶寬,可以監測,達到帶寬預警閾值后,可向運營商申請提升帶寬。另一方面,對于鏈路質量的監測機制一定要在建設存儲雙活或者其他雙活之前建立,由于是運營商的鏈路,鏈路經過了多少中繼、多少設備我們是不得知的,我們只能在波分端建立有效的監測機制,有些波分設備也有專門的監控軟件支持。而且也要要求和運營商建立監測聯動機制,運營商監測到鏈路質量(是質量而不是中斷)有問題,也需要***時間告知,做出合理的決策。
3.存儲雙活控制器的機制
由于跨中心的雙活控制器間的通訊是實時的,完整寫周期必須兩個站點的控制器都完成寫操作。他們間的通訊又是靠鏈路完成的,鏈路質量和鏈路中斷都將導致性能波動甚至超時,對于中斷,控制器的處理機制都還不錯,對于質量,控制器的處理機制往往不夠,需要長時間的嘗試,才會做出合理的決策,甚至沒有決策,導致上層數據庫或者應用磁盤IO超時,而異常掛起甚至宕機。所以這個機制是決定好的雙活體系的重要因素,有時候寧可立即放棄一邊,也要保住RTO,但目前為止我還未發現雙活存儲控制器有好的鏈路質量處理機制。知道的也請分享。
4.雙活存儲上端的OS、應用和數據庫合理的超時參數
OS識別磁盤、應用訪問文件系統、數據庫訪問裸設備或者文件系統,存儲IO HANG住,將導致層層超時,尤其是數據庫,超時將徹底中斷宕機,甚至出現邏輯損壞等莫名奇妙的問題。有時候超時響應慢是可以等,而不是中止,所以需要OS、數據庫層進行合理的超時聯動設置。
5.盡量避免跨站點讀,減少跨站點寫頻率
沒有跨站點讀,就意味著本地可讀,對鏈路質量沒有要求;減少跨站點寫頻率,就意味著,性能影響弱化,被控制器、數據庫、操作系統等層層緩存暫存的寫數據,會減少跨站點寫的次數,進一步弱化鏈路質量所會帶來的影響。