上個星期,twt社區(qū)平臺專門組織了“城商行雙活如何通過存儲仲裁的合理配置規(guī)避“腦裂”問題在線探討”同行線上交流,來自十多家城商行和金融行業(yè)專家一起參與探討交流,部分交流探討內容如下,希望給大家?guī)韱l(fā)以及幫助。 1、針對目前主流的一些存儲雙活方案中,分別有哪些存儲仲裁機制來規(guī)避雙活存儲“腦裂”風險?@guwenkuan 某股份制銀行 存儲架構師 : 主流雙活存儲基本就兩種模式,仲裁服務器和靜態(tài)優(yōu)先,一般情況下采取仲裁服務器和靜態(tài)優(yōu)先并存模式,仲裁服務器為主,當仲裁服務器宕機后,啟用靜態(tài)優(yōu)先模式。 @yfwang 戴爾科技集團 顧問工程師: 一般就是兩類: 1、 一類是靜態(tài)式仲裁,通過在存儲內部設定“優(yōu)勝者”來實現(xiàn),優(yōu)勢是不需要外置仲裁裝置,不需要仲裁網絡,劣勢是在某些故障場景下,會業(yè)務中斷,比如“優(yōu)勝者”存儲失敗的的時候,但是不會發(fā)生腦裂。 2、 另外一類是外置仲裁機制,一般又包括兩種,一種是虛擬機監(jiān)控程序,比如 vplex 的 witness ,另外一種是基于仲裁盤的仲裁機制,比如 hds 的雙活仲裁。這類仲裁的優(yōu)勢比第一類方式的系統(tǒng)連續(xù)性好,劣勢是需要準備單獨的服務器或者存儲,以及仲裁需要的網絡連接。 不管哪類仲裁,正常情況下都可以預防腦裂的出現(xiàn),當然從業(yè)務連續(xù)性的角度來看,外置仲裁的方式更優(yōu)一些,具體采用監(jiān)控程序還是仲裁盤的方式,可根據實際情況和現(xiàn)有環(huán)境來定,如果采用外置式的一般要求部署在第三個故障域,且對仲裁網絡有一些要求,相比而言,監(jiān)控程序的方式部署更簡單一些,對實施條件要求低一些,也是未來的發(fā)展方向。 2、存儲雙活方案該如何結合實際條件,選擇相應的存儲仲裁機制?是否一定需要選擇第三方站點部署存儲仲裁節(jié)點?@yfwang 戴爾科技集團 顧問工程師: 每種存儲雙活方案都有各自的仲裁機制,所以選擇了雙活方案,仲裁機制基本也定了,沒什么選擇的空間。 一般仲裁建議放在第三個站點,這是從最佳實踐的角度來說,不是技術限制;如果沒有第三站點,也可以和生產放在一起,不過整個系統(tǒng)的健壯性會受影響,所以對VPLEX說來,我們認為如果沒有第三個站點的話,就不用部署外置仲裁了,就用內置靜態(tài)仲裁就可以了,也可以防止腦裂的發(fā)生。 @guwenkuan 某股份制銀行 存儲架構師 : 不需要一定選擇第三方站點部署,本地站點也可以,靜態(tài)優(yōu)先能保證不發(fā)生腦裂情況。 3、雙活存儲中設置優(yōu)先站點的意義是什么?其與仲裁節(jié)點如何配合作用?@guwenkuan 某股份制銀行 存儲架構師 : 在腦裂情況下,雙活存儲快速識別業(yè)務主站點,確保腦裂情況下不相互爭搶資源。 @yfwang 戴爾科技集團 顧問工程師: 設置優(yōu)先站點的意義在于發(fā)生仲裁的時候,可以讓業(yè)務運行在更優(yōu)化的系統(tǒng)或者環(huán)境中,比如,如果兩臺存儲的配置有高有低,那么在仲裁后,業(yè)務應該選擇配置高的存儲運行;如果雙活的存儲分別部署在生產中心和災備中心,仲裁后業(yè)務應該運行在生產中心比較理想,因為生產中心一般設施更完善且技術資源更豐富。 通過設置優(yōu)先站點,可以選擇在發(fā)生仲裁時,優(yōu)先讓預先設置的“優(yōu)先站點”接管業(yè)務,只有在優(yōu)先站點也發(fā)生了故障后,仲裁才會讓非優(yōu)先站點接管業(yè)務。 4、雙活存儲在仲裁規(guī)則的配置上,如何與主機層面的PowerHA、RHCS以及數據庫層面的oracle rac的仲裁保持一致? @yfwang 戴爾科技集團 顧問工程師: 我覺得這個問題要分兩種情況來看,以 RAC 為例說明: 1 、對于主機和存儲是交叉互聯(lián)的方案 即每臺主機都有連接到兩臺存儲的路徑,在這種情況下,如果存儲發(fā)生了仲裁,主機還可以訪問另外一臺,不會發(fā)生仲裁;如果主機發(fā)生了仲裁,存活的主機也都可以看到兩臺存儲,存儲不需要仲裁; 唯一有可能發(fā)生仲裁不一致的場景是主機和存儲同時需要仲裁,比如 RAC 節(jié)點心跳和存儲心跳同時斷了,這時不僅 RAC 需要仲裁防止腦裂,存儲也一樣,為了保證仲裁的一致性,需要在設置的時候注意一下,一般 RAC 心跳斷后,如果兩邊節(jié)點數一致,那么編號小的一邊存活,對于 EMC 的存儲方案,存儲可以設置“優(yōu)先者”,可以通過把和節(jié)點編號小的在一個站點的存儲設置成“優(yōu)先者”,來保證存儲和 RAC 仲裁結果的一致性。 2 、對于主機和存儲是非交叉連接的方案 VPLEX 支持交叉連接,也支持非交叉連接,當非交叉連接時,因為 RAC 節(jié)點只有到本地存儲的路徑,所以當存儲發(fā)生仲裁時,因為有一邊的存儲將被掛起,所以這一邊的 RAC 節(jié)點將訪問不到存儲, RAC 機制也會開始仲裁,會將失去存儲這邊的節(jié)點踢出群集,從而保證仲裁的一致性,這種情況下,需要保證存儲先于 RAC 仲裁,這個順序可以在 vplex 和 RAC 中設置。 5、Vplex的 仲裁機 Witness 故障時執(zhí)行原理?【問題描述】singlefailure 與 double failure 。誰來講透,你們就不用擔心仲裁如何選取位置了。不懂仲裁建哪里都一樣,當發(fā)生故障時候你也沒法人工干預。官方有16個場景,比較復雜。原廠專家來好好分析一下,多多賜教。 @yfwang 戴爾科技集團 顧問工程師: 官方的 16 個場景考慮了主機集群的切換,太復雜,容易搞暈,其實理解 witness 主要關注存儲層面就可以了,主機層面按主機的仲裁規(guī)則去理解。 對于存儲層面,雙活方案由三點三線組成,三點是:生產站點 A 、生產站點 B 、仲裁站點 C ;三線是:A 和 B 之間的復制鏈路、 A 和 C 之間的仲裁鏈路、 B 和 C 之間的仲裁鏈路。 加起來可以理解為一共 6 個故障點, 6 個故障點可以有兩種失敗情形: 1 、單點故障: vplex 雙活機制下,可以保證任何一個單點故障,都不會引起業(yè)務中斷,比如只是 A 站點發(fā)生災難(是最嚴重的情況,如果只是 A 站點里面的存儲壞了或者 vplex 壞了或者交換機壞了,破壞性不會超過整個站點的災難), witness 會通知 B 站點繼續(xù)處理業(yè)務,業(yè)務不中斷,不需要人為干預。 2 、雙點故障: 雙點故障指上面的 6 個故障點有兩個同時發(fā)生了故障,比如站點 A 和站點 C 同時發(fā)生了災難,就屬于雙點故障。 雙點故障下,會不會發(fā)生業(yè)務中斷分情況來看, 6 個故障點兩兩組合,會導致業(yè)務中斷的共有以下五種情況,此時需要人為手動干預才能恢復業(yè)務,這五種情況如下(見圖): 除了這五種兩點故障場景外,其他的場景也不會造成業(yè)務中斷,不需要人為干預。 注意以下最后兩個場景下,其實它說明了為什么 witness 要放在第三個站點,因為如果 witness 和 vplex 放在同一個站點,當這個站點發(fā)生了失敗,雖然是個單點故障,但是相當于發(fā)生了如最后兩圖所示的雙點故障,會導致業(yè)務中斷,如果 witness 在第三個站點就不會有問題,這時 witness 建議在不同站點的主要原因。 綜上所述,一般只需要避免發(fā)生如上五種雙點故障,就可以避免業(yè)務中斷,或者說如果進行災難演練,可以著重演練這幾種場景,因為這幾個場景是需要人為操作恢復的。 不過只要按照最佳實踐來部署,發(fā)生雙點故障屬于極小概率事件,實際環(huán)境中很少能碰上。 6、如何吃透 Vplex Globa distributed cache工作原理,大神來細講一下,讓運維人員心里踏實應對故障?【問題描述】雙寫原理,數據落盤的全過程是什么樣的一個流程??如何保證cache一致性,【這個一致了,兩邊存儲數據就一致了】?歡迎大神指點迷津。 @yfwang 戴爾科技集團 顧問工程師: 講起來比較復雜,試著說一下,看看能不能講清楚。 分布式緩存一致性,是 VPLEX 的核心技術,也是 VPLEX 實現(xiàn)雙活的主要技術基礎。分布式是指緩存的管理是跨控制器的,一致性是指所有控制的緩存是全局的,互相能感知對方狀態(tài)。 VPlex 實現(xiàn)分布式緩存一致性的關鍵組件是緩存一致性目錄,該目錄記錄著 cache 里的所有數據的歸屬信息,比如數據塊 37 屬于哪個控制器,該目錄狀態(tài)會實時更新且 share 給所有控制器,對于 VPLEX Metro 方案,緩存一致性目錄可以跨 VPLEX 集群擴展,以提供實現(xiàn)跨站點的緩存一致性。 下面用讀寫 I/O 的流程來簡單描述一下如何實現(xiàn)的。 對于讀請求來講: 讀 I/O 從某個控制器的前端口進來,先查看該控制器本地 cache 是否命中,如果命中,直接返回,如果沒有命中,則去查找緩存一致性目錄,看看別的控制器緩存里是否有要訪問的數據,如果有,則從對應的控制器 Cache 中將其讀取到本地 Cache ,再返回給主機;如也沒有命中,則從本地后端的存儲中讀到本地 Local 中,修改緩存一致性目錄的狀態(tài),然后返回給主機。 在雙活狀態(tài)下,雖然緩存一致性目錄是跨 VPLEX 集群的,但對于讀操作來講,如果在本地集群緩存沒命中,就直接去后端存儲讀數了,不會去遠端的 VPLEX 緩存中讀數據,因為機制認為鏈路的延時要大于本地存儲的延時。 對于寫請求來講: 寫 I/O 從某個控制器的前端口進來,先找本地 cache 中有沒有對應的舊數據,有的話先把它廢除,同理,根據緩存一致性目錄查找別的控制器緩存中是否有舊數據,有的話也要廢除,然后新數據寫入本地緩存,并且透寫到后端存儲中,存儲返回確認。 與此同時,另外一個 vplex 集群也會執(zhí)行相應的操作,將舊數據廢除,然后寫入新數據,同時新數據透寫到后端存儲,返回確認給 vplex 。 Vplex 在收到兩邊存儲返回的確認后,認為該寫操作成功,給主機返回寫入確認。 這一系列的步驟說起來比較繁瑣,實際情況下幾乎都是同時瞬間完成的,所以不用擔心對性能的影響。通過這種機制,可以保證不論是本地主機訪問本地 vplex ,還是異地主機訪問異地 vplex ,看到的數據是完全一致性的,這個也是雙活的技術基礎。 不過分布式緩存一致性是 vplex 內部機制,可以了解一下原理,實際運維中不用擔心數據一致性的問題,這是 VPLEX 內在機制保證的。 @cpc1989 某保險公司 存儲工程師: VPLEX現(xiàn)在主要就local和Metro兩種方案了,Geo方案本身也少,也由其他方案替代了,不知道你是不是想了解的是VPLEX Metro 的分布式緩存的原理。 VPLEX Metro在物理上是兩個站點,邏輯上兩個集群,而且VPLEX只有讀cache,沒有寫cache,這也是VPLEX保持強一致性的關鍵。數據落盤的過程中是數據寫動作分為兩個路線,一個寫到本地VPLEX集群的本地存儲,一個同步到異地站點的VPLEX集群,并寫到異地存儲中,只有兩個落盤動作都完成后,寫到VPLEX的動作才結束。 @guwenkuan 某股份制銀行 存儲架構師 : 分為兩部分全局 cache 目錄,和每個 director 的 cache 。讀 IO 會首先查詢全局目錄看看是否在 cache 里,如果有也從相應的 director 里讀取數據,如果沒有,也從存儲讀取,并更新全局目錄,下次短期內再讀取則會命中。 7、基于存儲網關和存儲引擎的優(yōu)缺點以及價值?【問題描述】1)基于存儲網關和基于存儲引擎,兩種存儲雙活實現(xiàn)方式的區(qū)別和優(yōu)劣勢是?2)在存儲引擎本身支持雙活的情況下,使用類似VPLEX的網關型存儲雙活的必要性和方案價值是什么?@劉文 CMBC 系統(tǒng)工程師: 基于存儲網關: 可以接入異構存儲品牌,網關可以復用,對外統(tǒng)一訪問,工作量集中在存儲底層,對于上層的改造小。缺點是增加了網關層,也就增加了底層鏈路節(jié)點和復雜性。 基于存儲引擎: 由存儲本身集成雙活特性,兼容性好,運維難度小。缺點是不能統(tǒng)一納管異構存儲,對外形成統(tǒng)一訪問入口。 @yfwang 戴爾科技集團 顧問工程師: 網關型: 優(yōu)勢:可以支持異構平臺;可以聚合容量;可實現(xiàn)多點多活;提供單獨的計算資源 劣勢:需要增加硬件;管理復雜度 存儲型: 優(yōu)勢:實施、管理、維護更加簡單;消除虛擬層對性能的影響;實施更加簡單; 劣勢:一般不支持異構;一般只支持兩點雙活;需要同品牌同型號 VPLEX 作為網關型雙活方案,其價值在于可以搭建一個存儲無關的雙活平臺,這個平臺可以給用戶帶來的好處主要有: 1、 增加用戶在存儲選型上的靈活性; 2、 平臺搭好以后,只要有雙活需求的存儲,直接掛載到 vplex 的環(huán)境中即可實現(xiàn),簡單簡便; 3、 Vplex 下面的存儲的維護、升級、更新?lián)Q代甚至意外宕機都不會影響主機的正常工作,可以大大提升業(yè)務連續(xù)性。 8、能否詳細介紹下Vplex存儲雙活方案的技術特點?包括存儲層組網、分布式一致性緩存、分布式緩存模式、讀I/O加速能力等特點?@guwenkuan 某股份制銀行 存儲架構師 : EMC Vplex 存儲雙活方案是基于 Vplex 網關產品實現(xiàn),能夠將 EMC 和其他廠商存儲異構整合,虛擬化為統(tǒng)一的存儲資源池,實現(xiàn)異構存儲雙活。Vplex 雙活方案有 Vplex Metro 和 Vplex Geo 兩種方案,方案由兩個站點的兩套 Vplex 集群系統(tǒng)組成,每個站點的 Vplex 集群都有自己專屬的本地存儲陣列,通過創(chuàng)建分布式鏡像卷為跨集群的鏡像卷,提供 Vplex Access Anywhere 功能,兩個站點的 Vplex 集群各有一個卷,兩個卷的 ID 一樣。 存儲層組網:主機與 Vplex 集群間訪問、 Vplex 集群與后端存儲數據傳輸、 Vplex 集群間通信網絡全部隔離,為保證最高級別的高可用性,每個 Vplex Director 前端 I/O 模塊和一對 SAN 光纖交換機之間必須保證 2 個以上的物理連接,每個主機和每個 Vplex 引擎的 A Director 和 B Director 都需要保持一個以上的路徑連接,因此主機和一個 Vplex 引擎間具有 8 條邏輯路徑。對于每個站點 2 個、 4 個引擎的 Vplex 集群來說,主機連接需要覆蓋所有引擎;后端存儲陣列通過 SAN 交換機或者直接連接 Vplex 引擎的后端 IO 模塊,不需要配置到其他 Vplex 集群的跨站點連接路徑;根據需要選用 Witness 作仲裁, Witness 需部署于兩個 Vplex 集群不同的故障域中 ( 第三方站點 ) 。 分布式一致性緩存技術:EMC Vplex 是一個集群系統(tǒng),提供分布式緩存一致性保證,能夠將兩個或多個 Vplex 的緩存進行統(tǒng)一管理,從而使主機訪問到一個整體的緩存系統(tǒng)。當主機向 Vplex 的一個緩存區(qū)域寫 I/O 時, Vplex 緩存將鎖定這個緩存區(qū)域,同一時刻其他主機是無法向這個緩存區(qū)域寫入 I/O 的。但是,當主機讀取 I/O 時, Vplex 緩存允許多個主機訪問一個緩存區(qū)域,尤其是主機訪問其他 Vplex 集群中其他 Vplex 節(jié)點所管理的數據時,統(tǒng)一緩存管理會將這個 I/O 的具體緩存位置告知主機,主機直接跨 Vplex 集群訪問。分布式一致性緩存技術在實現(xiàn)上面,并沒有強求所有的 Cache 都保持統(tǒng)一,而是基于卷緩存目錄的形式來跟蹤細小的內存塊,并通過鎖的粒度來保證數據一致性。每個引擎的 cache 分為本地 Cache(Cache Local) 和全局 Cache(Cache Global) ,每引擎的本地 Cache 只有 26GB ,其余為全局 Cache 分布式緩存模式:Vplex Local 和 Vplex Metro 采用了寫直通緩存模式,當 Vplex 集群的虛擬卷接收到了主機的寫請求時,寫 I/O 直接透寫到該卷映射的后端存儲 LUN ( Vplex Metro 包含兩套后端存儲 LUN )中,后端陣列確認寫 I/O 完成后, Vplex 將返回確認信號至主機,完成本次寫 I/O 周期。寫直通緩存模式需要等待后端存儲陣列落盤完成,對寫 I/O 時延要求較高。這種寫直通緩存模式并適合 Vplex Geo 方案,該方案最大支持 50ms 的跨站點往返延遲,采用該緩存模式將對主機產生非常大的性能影響,對于大多數應用而言顯然是無法接受的。因此, Vplex Geo 采用了回寫緩存模式,在該模式下, Vplex 收到了主機的寫請求后,直接寫入引擎控制器的緩存,并將寫 I/O 鏡像至引擎另一個控制器和另一套 Vplex 集群的引擎控制器的內存中,然后向主機確認本次寫 I/O 周期。最后再將數據異步轉儲到引擎后端的存儲陣列中。當出現(xiàn)電源故障時, Vplex 引擎自帶的備用電源能夠保證緩存中的所有未持久化的數據暫存到本地 SSD 存儲上?;貙懢彺婺J綗o需等待后端存儲陣列落盤,即可回響應主機,大幅提升了 Vplex 雙活方案的距離和時延要求。 讀 I/O 加速能力:具有讀 Cache ,寫 I/O 的機制能對讀 I/O 實現(xiàn)加速。為了提升讀 I/O 性能,寫 I/O 的時候先判斷是否在 Local 、 Global Cache 中有對應的舊數據,如沒有直接寫入本地 Local Cache ;如有舊數據,先廢除舊數據再寫入 Local ;再通過寫直通緩存模式將寫 I/O 刷入兩套后端存儲陣列;最后反饋主機寫 I/O 周期完成,同時 Global Cache 中的索引做相應修改,并在所有引擎上共享該信息,實現(xiàn)分布式緩存一致性。 @yfwang 戴爾科技集團 顧問工程師: 簡單概括幾點VPLEX方案的特點: 1、 存儲復制網絡支持 FC 和萬兆以太網連接,只要延時小于 5ms 就可以,復制鏈路對距離沒有特別限制 2、 分布式緩存一致性是 vplex 的核心技術,在 vplex 出來之前,其他的網關都不具有這個技術,緩存一致性的核心是將所有控制器的緩存全局化,任何一個控制器進來的 I/O 可以訪問到任何一個控制器管理的后端存儲上的數據,而且可以跨集群擴展,所以不論主機從哪個 vplex 集群接入,訪問到的數據是一致的,關于緩存一致性的內容,樓上解釋的很詳細,贊。 3、 Vplex 的可用性標準和 VMAX 一樣,以高端存儲的性能和可靠性標準設計,可以勝任企業(yè)核心業(yè)務的要求。 4、 VPLEX 支持大容量的讀緩存,讀 I/O 如果在 vplex 緩存里命中,直接返回主機確認,如果 vplex 緩存沒有命中,則去后端存儲緩存去查找,如果命中返回,如果沒命中才去后端磁盤讀取數據,所以加了 vplex 相當于多了一級讀緩存,讀的性能一般會有所提升。 5、 Vplex 的寫操作采用透寫的模式,即寫 I/O 直接穿過 vplex 寫到后端存儲才確認,這樣做的好處是 vplex cache 里沒有臟數據,可以時刻保證后端存儲數據的一致性,從而不影響后端存儲的所有數據服務功能。 6、 Vplex 的仲裁采用監(jiān)控程序的方式,部署簡單,成本低,可用性高。 9、VPLEX Metro同城存儲雙活方案下的異地擴展方案有哪些實現(xiàn)方式? @鄧毓 江西農信 系統(tǒng)工程師: Vplex 的兩地三中心擴展方案有兩種實現(xiàn)方式,第一種是借助 EMC RecoverPoint 設備實現(xiàn)。在 Vplex Metro 雙活 CDP 方案中, Vplex 接受到主機寫 I/O 之后,同時寫入兩個數據中心的存儲。此外 Vplex 內部集成 I/O 分流軟件, Vplex 將每個主機寫 I/O 同步復制到 RecoverPoint 。RecoverPoint 將每個 I/O 記錄下來,采用 CDP 實現(xiàn)任意時間點恢復,如下圖 1 所示。在該方案之上還可進階實現(xiàn) 3DC 方案:站點 2 的 RecoverPoint 通過異步復制將 I/O 復制到站點 3 部署的 RecoverPoint 設備,站點 2 的 RecoverPoint 都將每個 IO 記錄下來,實現(xiàn)任意時間點恢復,站點 3 的 RecoverPoint 設備異步記錄從站點 2 RecoverPoint 設備傳輸過來得 I/O ,并落地至后端的存儲陣列。站點 2/3 的 RecoverPoint 設備對接的存儲需要能夠支持 RecoverPoint ,可以是 Vplex Local 集群,也可以是存儲陣列,如下圖 2 和 3 所示。由 EMC RecoverPoint 、 VPLEX Local (或存儲陣列)和 Metro 組成的三個站點拓撲將減少主站點或存儲陣列故障相關的停機時間,同時能夠快速從應用程序數據損壞、病毒或人為錯誤中恢復,即具備物理和邏輯性錯誤的雙重防范能力。如果丟失多個 VPLEX 站點或虛擬卷的邏輯損壞,可以通過第三方軟件集成 , 自動恢復遠程站點(第三站點)到虛擬卷的一致時間點。
第二種是在 Vplex Metro 的基礎上,借助 EMC 存儲自身的復制技術實現(xiàn) 3DC 方案,即 Vplex Metro EMC SRDF/A 方案,如下圖所示,主站點和同城災備站點為雙活,主站點 Vplex 集群的底層存儲為 EMC 存儲(需具備 SRDF 復制許可),通過 SRDF 異步將數據傳輸至異地災備站點后端的 EMC 存儲(也需具備 SRDF 復制許可),實現(xiàn)數據級異地災備。 @yfwang 戴爾科技集團 顧問工程師: 在存儲層面主要有兩種方式: 1、 基于底層存儲實現(xiàn)異地異步復制,比如 SRDF ,或者 HUR 之類的,優(yōu)點是簡單,缺點是要求同存儲平臺,不能跨異構,且復制鏈路要求較高。 2、 基于 Recoverpoint 實現(xiàn)異步復制,兩個 site 都部署 Recoverpoint ,通過 RP 來實現(xiàn)數據復制,優(yōu)勢包括:可實現(xiàn)三點環(huán)形復制方案;異地端存儲可以異構;復制鏈路要求低,劣勢是需要部署 Recoverpoint 硬件。 當然也可以考慮應用層面的方案,比如 Oracle 的 DG 或者 GG , vplex 不影響這些方案實施。 |
|