企業(yè)云存儲(chǔ)日常運(yùn)行維護(hù)實(shí)踐經(jīng)驗(yàn)分享
1 現(xiàn)狀及需求
隨著業(yè)務(wù)規(guī)模的不斷發(fā)展,監(jiān)管力度的不斷加強(qiáng),保護(hù)消費(fèi)者法的不斷完善,應(yīng)用系統(tǒng)每時(shí)每刻產(chǎn)生日志數(shù)據(jù)、業(yè)務(wù)影像數(shù)據(jù)、歷史數(shù)據(jù)都在海量增長(zhǎng),都有可能夠成為爭(zhēng)議交易的佐證證據(jù),且這些日志種類(lèi)繁雜,格式多樣,散落在生產(chǎn)系統(tǒng)的各個(gè)角落,往往只有在出現(xiàn)問(wèn)題時(shí)才會(huì)到海量日志中去查找和分析,這些信息可以對(duì)系統(tǒng)的優(yōu)化、運(yùn)維以及運(yùn)營(yíng)帶來(lái)重要的決策參考,所以建設(shè)一套可供上述數(shù)據(jù)永久存放的存儲(chǔ),并在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)維護(hù)得當(dāng),隨時(shí)能夠滿足查詢需求,已經(jīng)變得尤為重要。
銀行的上述非結(jié)構(gòu)化數(shù)據(jù)種類(lèi)繁多,用途各有不同,雖然制定了大部分?jǐn)?shù)據(jù)的清理策略,但是在歸檔后,因?yàn)楦鞣N原因查詢緩慢,人力投入過(guò)大,更加不能得到充分的分析及應(yīng)用。究其原因有兩點(diǎn),一是日志格式多樣且繁雜散亂,日志的分析存在一些難點(diǎn)和問(wèn)題;二是日志數(shù)據(jù)量巨大,傳統(tǒng)存儲(chǔ)架構(gòu)無(wú)法支撐海量數(shù)據(jù)。
尤其對(duì)于數(shù)百TB的日志類(lèi)數(shù)據(jù),龐大的數(shù)據(jù)量不僅增大了運(yùn)維人員的監(jiān)管和分析的難度,使得日志類(lèi)數(shù)據(jù)的價(jià)值更加難以挖掘,而且傳統(tǒng)的數(shù)據(jù)存儲(chǔ)方式已經(jīng)不能滿足海量交易類(lèi)日志數(shù)據(jù)對(duì)于安全性、可靠性和擴(kuò)展性的要求,急需一個(gè)合適的統(tǒng)一歷史數(shù)據(jù)管理與存儲(chǔ)方案,用作數(shù)據(jù)的集中管理、輔助監(jiān)控和分析以及交易類(lèi)歷史日志數(shù)據(jù)長(zhǎng)期歸檔存放。
存儲(chǔ)不僅要滿足現(xiàn)在應(yīng)用的需求,同時(shí)也要為未來(lái)數(shù)據(jù)增長(zhǎng)提供良好的可擴(kuò)展性,隨著銀行業(yè)務(wù)的數(shù)據(jù)量爆發(fā)式的增長(zhǎng),如票據(jù)影像、日志數(shù)據(jù)、數(shù)據(jù)庫(kù)歸檔數(shù)據(jù)等,同時(shí)生成部分應(yīng)用對(duì)數(shù)據(jù)的要求全天候訪問(wèn),現(xiàn)有的存儲(chǔ)基礎(chǔ)架構(gòu)顯得有些力不從心,系統(tǒng)管理復(fù)雜、運(yùn)營(yíng)成本不斷上升,存儲(chǔ)設(shè)施面臨著多重挑戰(zhàn)。
私有云的存儲(chǔ)方案在為未來(lái)業(yè)務(wù)發(fā)展提高強(qiáng)大的可擴(kuò)展能力和服務(wù)能力,同時(shí)能夠有效提升海量數(shù)據(jù)的可管理性、可靠性以及可用性。通過(guò)增加集群規(guī)模,容量和性能能夠同步提升,能夠很好地滿足銀行業(yè)務(wù)發(fā)展的需求。
2 在上述場(chǎng)景中傳統(tǒng)存儲(chǔ)的缺陷
1) 擴(kuò)展能力不足:不能進(jìn)行靈活的擴(kuò)展以滿足快速變化的業(yè)務(wù)需求,缺乏可擴(kuò)展性或大規(guī)模文件處理能力,且容易在管理不善的情況下造成數(shù)據(jù)孤島,查詢起來(lái)非常繁雜。
2) 數(shù)據(jù)可靠性:存儲(chǔ)數(shù)據(jù)的來(lái)源越來(lái)越多樣化,對(duì)數(shù)據(jù)可靠性提出更高的要求,在滿足數(shù)據(jù)可靠性的同時(shí),還需要平衡硬盤(pán)利用率,避免犧牲大量的存儲(chǔ)空間(原始數(shù)據(jù)幾倍的存儲(chǔ)空間)來(lái)滿足數(shù)據(jù)可靠性要求,傳統(tǒng)存儲(chǔ)一直使用一個(gè)資源池,不利于長(zhǎng)期保存。
3) 系統(tǒng)性能瓶頸:傳統(tǒng)集中式存儲(chǔ)Scale-up架構(gòu)的性能無(wú)法線性增長(zhǎng),面臨海量數(shù)據(jù)的高帶寬要求時(shí),往往無(wú)法快速響應(yīng)應(yīng)用的讀寫(xiě)請(qǐng)求,尤其是大文件和海量小碎文件讀寫(xiě)。
4) 管理維護(hù)難度大:隨著應(yīng)用不斷發(fā)展,現(xiàn)有的數(shù)據(jù)規(guī)模已經(jīng)超出原有平臺(tái)管理的峰值,存儲(chǔ)設(shè)備的增多帶來(lái)維護(hù)成本居高不下,多套存儲(chǔ)系統(tǒng)空間不能共用,管理復(fù)雜,需要多個(gè)IT管理人員維護(hù)多套不同的存儲(chǔ)設(shè)備和網(wǎng)絡(luò),總體成本急劇上升。
3 云上存儲(chǔ)具備的能力
1) 線性擴(kuò)展能力:系統(tǒng)應(yīng)具有良好的拓展能力,最大可擴(kuò)展容量應(yīng)能達(dá)到數(shù)十PB以上,同時(shí)性能隨容量的提升線性增加,確保整套系統(tǒng)隨容量增長(zhǎng)不出現(xiàn)性能瓶頸,整套系統(tǒng)的擴(kuò)展能力應(yīng)能滿足未來(lái)3-5年數(shù)據(jù)增長(zhǎng)和長(zhǎng)期歸檔的需求。
2) 高可靠性:系統(tǒng)應(yīng)保證有充分的冗余,在部分硬盤(pán)或節(jié)點(diǎn)損壞時(shí)系統(tǒng)能夠自動(dòng)恢復(fù)而不影響業(yè)務(wù)運(yùn)行,同時(shí)應(yīng)保證系統(tǒng)在7*24的高負(fù)荷環(huán)境中依然有良好的安全可靠性。
3) 易維護(hù)性:系統(tǒng)的運(yùn)維管理應(yīng)盡量簡(jiǎn)單,采用可視化圖形界面對(duì)整套系統(tǒng)進(jìn)行監(jiān)控維護(hù),一旦發(fā)生故障應(yīng)能主動(dòng)告警,并迅速定位故障點(diǎn),硬件部署安裝也應(yīng)簡(jiǎn)便,方便以后進(jìn)行系統(tǒng)擴(kuò)容和節(jié)點(diǎn)替換。
4) 提供的存儲(chǔ)服務(wù):從日志檢索這個(gè)出發(fā)點(diǎn),經(jīng)過(guò)時(shí)間的積累,必然會(huì)走向分析、告警、預(yù)測(cè),而從需求反推支撐功能的實(shí)現(xiàn),平臺(tái)必須在如下方面進(jìn)行考慮:能夠準(zhǔn)確查詢?nèi)罩?,支持便捷使用,可以真正用起?lái),除滿足日常歸檔存儲(chǔ)的功能外,應(yīng)該具備對(duì)象存儲(chǔ)功能,對(duì)外提供對(duì)象存儲(chǔ)接口,一般對(duì)象存儲(chǔ)服務(wù)提供了2套標(biāo)準(zhǔn)接口,分別符合Amazon S3和Openstack Swift規(guī)范;從影像數(shù)據(jù)存儲(chǔ)需求出發(fā),也可以通過(guò)對(duì)象存儲(chǔ)完成存儲(chǔ)與查詢,但是因?yàn)橐兏鼞?yīng)用接口,不適用于所有應(yīng)用,所以仍然需要提供NAS存儲(chǔ)服務(wù),在訪問(wèn)安全方面可通過(guò)設(shè)置NFS、CIFS、FTP及私有客戶端四種共享的權(quán)限來(lái)限制訪問(wèn)的用戶;從歷史結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)以及備份介質(zhì)的需求出發(fā),塊數(shù)據(jù)功能可以滿足此種服務(wù)需求。從存儲(chǔ)系統(tǒng)的業(yè)務(wù)供給能力角度看,不同存儲(chǔ)系統(tǒng)可以提供塊存儲(chǔ)、對(duì)象存儲(chǔ)、文件存儲(chǔ)等不同類(lèi)型的存儲(chǔ)服務(wù)。假如用戶有多種需求,就需要購(gòu)買(mǎi)不同類(lèi)型的存儲(chǔ)系統(tǒng)。分布式融合存儲(chǔ)系統(tǒng)可提供塊、對(duì)象、文件與大數(shù)據(jù)等多種不同的存儲(chǔ)接口,提供多種不同的存儲(chǔ)服務(wù),從而達(dá)到統(tǒng)一存儲(chǔ)的特性,降低多種存儲(chǔ)系統(tǒng)帶來(lái)的運(yùn)維復(fù)雜度,提高存儲(chǔ)資源利用率,節(jié)省機(jī)房空間。
4 日常維護(hù)
云存儲(chǔ)的日常維護(hù),必須考慮建設(shè)階段的策略選擇,例如可靠性、性能、擴(kuò)展能力等,只有在建設(shè)階段選擇了適當(dāng)?shù)牟呗?,日常運(yùn)維中才能做到從容不迫。
1) 高可靠?
對(duì)于大容量的私有云存儲(chǔ),糾刪碼技術(shù)和多副本相比更加適用,糾刪碼技術(shù)以同樣的初始容量存儲(chǔ)更多的數(shù)據(jù),磁盤(pán)利用率更高,從而大大降低了成本。舉例來(lái)說(shuō),3副本的利用率是1/3;而k+m糾刪碼的利用率是k/(k+m),如8+2的利用率是8/10。
2) 高性能?
面對(duì)歷史數(shù)據(jù)歸檔場(chǎng)景的云上存儲(chǔ),對(duì)使用者來(lái)說(shuō),存儲(chǔ)系統(tǒng)的性能體現(xiàn)在兩個(gè)方面:一個(gè)是從客戶端角度看,客戶端可以從系統(tǒng)獲得的性能;一個(gè)是從存儲(chǔ)集群的角度看,存儲(chǔ)集群的供給能力。
從客戶端角度看,集群中的文件或LUN會(huì)根據(jù)特有算法偽隨機(jī)地分散在集群的所有磁盤(pán)。這個(gè)分布是通過(guò)集群自動(dòng)完成,無(wú)需手動(dòng)配置。由于每個(gè)文件或LUN可以使用整個(gè)集群的磁盤(pán)性能,因此整個(gè)集群能夠提供更高的性能。在云上存儲(chǔ)集群中,通過(guò)分析將要存放的文件類(lèi)型,調(diào)整存儲(chǔ)塊的大小,也是非常有必要的,默認(rèn)存儲(chǔ)對(duì)象的大小是4M(可配置),比如一個(gè)1GB大小的文件或LUN,會(huì)被劃分成256個(gè)對(duì)象,這些對(duì)象分散在不同的OSD上。這樣在讀寫(xiě)文件時(shí),就會(huì)充分利用集群的整體性能,提升IOPS和吞吐率。
存儲(chǔ)集群的性能取決于兩方面:一方面是單節(jié)點(diǎn)的能力,另一方面是系統(tǒng)的擴(kuò)展能力。如前所述,云上存儲(chǔ)系統(tǒng)的性能可以隨節(jié)點(diǎn)的規(guī)模而線性擴(kuò)展。對(duì)于單節(jié)點(diǎn)的能力,云上存儲(chǔ)在系統(tǒng)設(shè)計(jì)和硬件配置方便實(shí)現(xiàn)了足夠的靈活性,從而可以表現(xiàn)出良好的性能。
對(duì)于歷史數(shù)據(jù)查閱的頻繁度,可以簡(jiǎn)單區(qū)分一下所使用的硬盤(pán)資源池。對(duì)傳統(tǒng)HDD來(lái)說(shuō),受尋道能力的限制,單盤(pán)的隨機(jī)讀寫(xiě)能力一般不超過(guò)200個(gè)IOPS。SSD的出現(xiàn),使得在IOPS上的能力相比于HDD有了成倍的提升,甚至是數(shù)量級(jí)的提升。在SSD+HDD混合組網(wǎng)模式下,云上存儲(chǔ)系統(tǒng)既可以將SSD作為緩存使用,也可以將SSD和HDD放到不同的存儲(chǔ)池做分層存儲(chǔ)使用。在此情況下可以發(fā)揮SSD 的IOPS和帶寬的優(yōu)勢(shì),又可以發(fā)揮HDD的容量和價(jià)格優(yōu)勢(shì)。
3) 高擴(kuò)展?
集群的線性擴(kuò)展能力,主要體現(xiàn)在兩個(gè)方面:一個(gè)是集群部署規(guī)??梢跃€性擴(kuò)展,另一個(gè)方面,隨集群規(guī)模的擴(kuò)展,其性能要能夠線性或近似線性擴(kuò)展,隨著服務(wù)器使用年限的增長(zhǎng),不斷將重要?dú)v史數(shù)據(jù)遷移到新的資源池也是一個(gè)較為重要的需求。
在規(guī)模上,傳統(tǒng)存儲(chǔ)之所以在擴(kuò)展能力上受限,一個(gè)很重要的原因就是一般其采用集中式控制,并且在控制節(jié)點(diǎn)存儲(chǔ)大量的元數(shù)據(jù)信息,從而使控制節(jié)點(diǎn)容易成為系統(tǒng)的瓶頸。對(duì)于云上系統(tǒng), 客戶端節(jié)點(diǎn)通過(guò)特有算法可以直接計(jì)算出數(shù)據(jù)的存儲(chǔ)位置,從而對(duì)OSD進(jìn)行直接讀寫(xiě),完全是分布式并行的;而其元數(shù)據(jù),也就是集群視圖,是輕量級(jí)數(shù)據(jù),而且其更新的頻率較低。這種架構(gòu)就在理論上保證了云上存儲(chǔ)具備線性擴(kuò)展能力。
在性能上,根據(jù)集群的分布式架構(gòu),客戶端的讀寫(xiě)數(shù)據(jù)最終會(huì)被打散,均勻分布到各OSD上,從而集群整體的吞吐率是各節(jié)點(diǎn)能力的總和,即集群的性能隨節(jié)點(diǎn)數(shù)量的增加而線性增加。
5 通過(guò)云上存儲(chǔ)提供的功能簡(jiǎn)化運(yùn)維操作
云上存儲(chǔ)為了簡(jiǎn)化管理運(yùn)維應(yīng)該具備大量自動(dòng)化運(yùn)維工具:
1) 集群快速部署及增減節(jié)點(diǎn)
包括批量部署、單節(jié)點(diǎn)增減、單磁盤(pán)增減等。從部署上來(lái)說(shuō)云上存儲(chǔ)系統(tǒng)可以根據(jù)用戶需求靈活地部署Monitor節(jié)點(diǎn)和Client節(jié)點(diǎn)。一方面,這些節(jié)點(diǎn)既可以部署在單獨(dú)的物理服務(wù)器上,也可以部署在和OSD相同的物理節(jié)點(diǎn)上。另一方面,Monitor和Client的節(jié)點(diǎn)可以根據(jù)用戶的需求靈活地調(diào)整。比如為了可靠性保證,至少需要部署3個(gè)Monitor節(jié)點(diǎn);在增刪存儲(chǔ)介質(zhì),或存儲(chǔ)介質(zhì)發(fā)生故障時(shí),系統(tǒng)會(huì)及時(shí)進(jìn)行檢測(cè)。比如,在磁盤(pán)發(fā)生故障時(shí),分布式融合存儲(chǔ)會(huì)利用損壞數(shù)據(jù)在其他存儲(chǔ)體上的副本進(jìn)行復(fù)制,并將復(fù)制的數(shù)據(jù)保存在健康的存儲(chǔ)體上;在增加磁盤(pán)時(shí),同樣會(huì)把其他存儲(chǔ)體的數(shù)據(jù)安排容量比例重新分布到新磁盤(pán),使集群的數(shù)據(jù)達(dá)到均衡。在上述過(guò)程中,雖然完全不需要人工干預(yù),但是仍然需要依靠人工巡檢保證系統(tǒng)運(yùn)轉(zhuǎn)狀態(tài)正常。
2) 系統(tǒng)監(jiān)控報(bào)警
發(fā)生故障時(shí)能快速界定問(wèn)題、排查故障,除系統(tǒng)本身的監(jiān)控外,因?yàn)榇鎯?chǔ)分布式架構(gòu),最好額外增加針對(duì)硬件級(jí)別的監(jiān)控。
3) 自定義分布策略
允許定制數(shù)據(jù)分布策略,方便地進(jìn)行冷熱數(shù)據(jù)分離、故障域隔離,以及對(duì)數(shù)據(jù)存儲(chǔ)位置進(jìn)行靈活選擇。比如在選用副本策略時(shí),用戶可能希望不同數(shù)據(jù)副本存儲(chǔ)在不同機(jī)架上面的主機(jī)上;或者主副本存儲(chǔ)在某個(gè)機(jī)架的主機(jī)上,其它副本存儲(chǔ)在另外機(jī)架的主機(jī)上;此類(lèi)需求可以靈活調(diào)整故障域和保護(hù)域策略,已滿足需求。
4) 重構(gòu)自動(dòng)Qos
在系統(tǒng)平衡數(shù)據(jù)(例如系統(tǒng)擴(kuò)容或者存儲(chǔ)節(jié)點(diǎn)、磁盤(pán)發(fā)生故障)的過(guò)程中,為保證用戶IO,云上存儲(chǔ)系統(tǒng)支持IO優(yōu)先級(jí)控制和Qos保證能力。我們知道,在系統(tǒng)擴(kuò)容或者存儲(chǔ)節(jié)點(diǎn)、磁盤(pán)故障過(guò)程中,為保證數(shù)據(jù)的可靠性,系統(tǒng)會(huì)自動(dòng)進(jìn)行數(shù)據(jù)平衡。為了盡快完成數(shù)據(jù)平衡,往往會(huì)占滿每個(gè)存儲(chǔ)節(jié)點(diǎn)的帶寬和IO能力,這樣做的好處是會(huì)使平衡時(shí)間最短,壞處是此時(shí)前端用戶的IO請(qǐng)求會(huì)得不到滿足。在日常業(yè)務(wù)系統(tǒng)正常運(yùn)行的場(chǎng)景下,我們是無(wú)法接受這種狀況的。為此,云上存儲(chǔ)系統(tǒng)實(shí)現(xiàn)了IO優(yōu)先級(jí)和Qos控制機(jī)制,可以根據(jù)我們?nèi)粘5木W(wǎng)絡(luò)流量和后端存儲(chǔ)網(wǎng)絡(luò)流量進(jìn)行控制,保證一定比例IO得到滿足。?