以下為演講文字整理:

各位嘉賓下午好!很榮幸參加DOIT主辦的SDSS峰會,我是郭建楠,來自中國移動蘇州研發(fā)中心,今天給大家?guī)淼姆窒眍}目是Ceph在中國移動大規(guī)模應(yīng)用實(shí)踐。

首先跟大家介紹一下Ceph在中國移動的應(yīng)用情況,第二、第三章節(jié)介紹分布式塊和對象的實(shí)踐,針對我們生產(chǎn)實(shí)踐和運(yùn)維過程中碰到的問題以及對Ceph的期待跟大家做分享,主要是體現(xiàn)Ceph在場景化中可能面臨的和急需解決的問題。

中移蘇州軟件技術(shù)有限公司是中國移動全資子公司,注冊資本7億,我Base在云技術(shù)產(chǎn)品部,主要做一些云計(jì)算標(biāo)準(zhǔn)化、定制化的產(chǎn)品、解決方案,承接云計(jì)算的軟硬件的集成服務(wù)和技術(shù)支撐,也可以做一些云計(jì)算相關(guān)應(yīng)用的云化遷移。存儲團(tuán)隊(duì)分為四個(gè)研發(fā)方向:塊、對象、文件、數(shù)據(jù)庫存儲。前面三個(gè)基于軟件定義存儲做的,最后的數(shù)據(jù)庫場景是我們最近才開始的,主要提供一體機(jī)的解決方案。

這是移動云整體的解決方案,我們可以提供IaaS、SaaS應(yīng)用,還可以做一些統(tǒng)一的運(yùn)營、運(yùn)維的管理平臺以及安全管理平臺,承載的業(yè)務(wù)可以按公有云、私有云、金融云、政務(wù)云進(jìn)行區(qū)分。

以一個(gè)具體的案例看一下,這是我們移動自己的公有云的建設(shè)情況,2015年開始中國移動集團(tuán)規(guī)劃公眾服務(wù)云的平臺,對內(nèi)打造自己產(chǎn)品的云化,達(dá)到降本增效的目的。對外服務(wù)于全網(wǎng)的政企客戶和互聯(lián)網(wǎng)用戶。2015年我們開始承建移動云,最早是在中國移動的南方基地開放資源池,2016年在北京信息港實(shí)現(xiàn)資源池的布局,實(shí)現(xiàn)南北資源池的布局。2017年在湖南的長沙、內(nèi)蒙古的呼和浩特、黑龍江的哈爾濱實(shí)現(xiàn)多節(jié)點(diǎn)的部署,后續(xù)納管各省級的資源池,建設(shè)規(guī)模涉及虛機(jī)10萬臺。

在服務(wù)移動內(nèi)部客戶的同時(shí),我們也會為外部客戶承建部分的基礎(chǔ)設(shè)施,如為某國有銀行做的金融云案例,總的建設(shè)規(guī)模超過1500個(gè)節(jié)點(diǎn),虛機(jī)涉及3萬個(gè)左右,上海、北京兩地三中心的生產(chǎn)環(huán)境,承載該銀行個(gè)人網(wǎng)銀、企業(yè)網(wǎng)人、電子支付、紀(jì)念幣預(yù)約等互聯(lián)網(wǎng)應(yīng)用。除了生態(tài)云,也為他們承接了測試云和開發(fā)云,OpenStack平臺十幾套,現(xiàn)在達(dá)到一共40套的規(guī)模。

聚焦到云產(chǎn)品,主要在軟件定義方面塊存儲、文件存儲、對象存儲,存儲方案選型也是基于開源做的,塊是基于Ceph。我們在選型開源產(chǎn)品的同時(shí)也積極的回饋社區(qū),在Ceph全版本過程中,中國移動貢獻(xiàn)國內(nèi)排名第三,全球排名13位。雖然做存儲的團(tuán)隊(duì)不多,但也想盡一份力量,把開發(fā)的功能盡可能的回饋社區(qū)。

我自己是做研發(fā)的,有些涉及細(xì)節(jié),這幅圖是邏輯架構(gòu)圖,引擎層是基于Ceph開源方案直接應(yīng)用塊構(gòu)建,總體來說Ceph確實(shí)是一款非常優(yōu)秀的開源軟件,可以提供豐富、穩(wěn)定的功能。我們可以直接拿來使用,不光是這些,在生產(chǎn)上確實(shí)不夠,我們也可以做一些周邊的工作,可以建SSD,也在做一些兼容性的驗(yàn)證。磁盤控制器和磁盤的錯誤檢查,網(wǎng)卡的檢測、SSD的壽命監(jiān)控,都是生產(chǎn)上需要的功能。服務(wù)層結(jié)合一些業(yè)務(wù)場景,開發(fā)一些特性,Ceph現(xiàn)在基于QEMU的熱遷移功能。除了QEMU,我們也可以使用NBD對接開發(fā),也可以用ISCSI。除了這之外,右邊還是展示了我們自己的管理平臺,可視化的方式可以進(jìn)行資源的監(jiān)控、性能監(jiān)控、集群的再現(xiàn)滾動升級和在線擴(kuò)容。

Ceph在塊存儲方面,在移動的部署方式。我們知道數(shù)據(jù)是有熱度的,頻繁訪問我們稱為熱數(shù)據(jù),它需要存儲性能。訪問低一點(diǎn)的是冷數(shù)據(jù),需要的存儲容量更節(jié)約存儲成本,我們把生產(chǎn)環(huán)境的Ceph集群分為三類:容量型、緩存型、性能型。容量型是更低的存儲成本,更大的存儲容量,性能型更好的存儲體驗(yàn)和更高的存儲性能,緩存型介于兩者之間,實(shí)現(xiàn)更高的存儲性價(jià)比。上面列出了一些典型的配置,主要是依據(jù)中國移動集團(tuán)的服務(wù)器系集采,中國移動的服務(wù)器是有集中采購的,一般是在里面進(jìn)行選型,比如說緩存型、性能型的,我們選擇性不大,基于現(xiàn)有的典型配置,我們梳理出一些可行的方案,一般控制在3%。緩存型把緩存比控制在13%左右,性能型就是上面的SSID。

下面是三種模式的抽象、概要的樹圖,容量型和性能型比較簡單,我們現(xiàn)在生產(chǎn)上批量推的還是Filestore,它還要跟普通的HDD進(jìn)行綁定形成一個(gè)邏輯設(shè)備,構(gòu)成具備緩存功能的邏輯盤。

再介紹下緩存方案,緩存簡單來說就是為了實(shí)現(xiàn)數(shù)據(jù)的冷熱遷移,我們用小容量的、高性能的SSD承載頻繁訪問的熱點(diǎn)數(shù)據(jù),用機(jī)械盤承載訪問頻次比較低的數(shù)據(jù)達(dá)到性能和成本的均衡,邏輯上的抽象概念就是右邊這幅圖,這套方案怎么讀寫SSD、HDD,數(shù)據(jù)在SSD和HDD之間怎么遷移。

左下角是LinuxIO的路徑圖,上面是虛擬文件系統(tǒng)、通用塊到驅(qū)動再到最終的設(shè)備,調(diào)動層、驅(qū)動層再到設(shè)備層,我們說的緩存方案一般集中在通用塊層,通用塊層有很多開源可以借鑒的項(xiàng)目,Google開源的Bcache、Facebook的開源flashcache,Enhance,我們對flashcache進(jìn)行調(diào)研,就是把HDD的存儲空間按塊劃成SSD,做成數(shù)據(jù)的冷熱管理。效果圖比較直觀,數(shù)據(jù)性能比較高,基本上可以達(dá)到SSID的性。

右邊是Bcache的模式,使用B數(shù)和B+數(shù)的明顯,B+數(shù)的夜節(jié)點(diǎn)是BIO,每個(gè)IO的請求根據(jù)訪問進(jìn)行排序,因?yàn)樗褂玫腂+數(shù),其實(shí)有一個(gè)指針可以達(dá)到迅速的連起來,對于數(shù)據(jù)的索引會特別方便,可以把它依照我們HDD的文件算法一次就達(dá)到盡量多的刷下去,這也是緩存的優(yōu)勢、特性。Bcache的緩存效果比flashcache更優(yōu)秀一些,它的性能有比較高的輸出,即使寫滿了,也可以直接回歸到HDD盤的性能,是有小幅下降,還是有很好的加速效果。

flashcache和Bcache在現(xiàn)網(wǎng)有具體的使用,Bcache我們想作為主推的方案,對于Bcache也做了很多的優(yōu)化,它在做性能匹配輸出的時(shí)候還有很多的毛刺,尤其是幾根比較長的,像針一樣的插在下面,就是Bcache的影響,我們也是改變了算法,讓曲線更加的平緩輸出。

塊存儲的典型部署場景,我們知道Ceph在四、五年迅速進(jìn)入大家的視野,OPENSTACK新的組件主要是提供卷,除了OPENSTACK以外,我們也充分發(fā)揮云接口的特性,可以把它產(chǎn)品化,可以提供虛擬化的對接,雖然Ceph方案比較曲折,我們也是兩套方案都在做,目前在LinuxIO的投入比較大,現(xiàn)在還有一些小的問題需要后續(xù)優(yōu)化改善,中國移動做了很多的工作,幫助方案進(jìn)行落地。

對象存儲,基于OPENSTACKSwift,文件的結(jié)構(gòu)以NFS、CFS的接口,經(jīng)過負(fù)載均衡把請求發(fā)到RGW,社區(qū)的存儲引擎包括兩種,基于典型的部署方案指導(dǎo),我們對部署方案進(jìn)行了一些實(shí)例化,負(fù)載均衡是有RVS,引擎層我們把數(shù)據(jù)類似于剛才塊的緩存一樣,也是做了存儲池之間的緩存,對象上傳的時(shí)候加了一個(gè)標(biāo)簽,是訪問頻度較高還是較低,多少天之后會轉(zhuǎn)變訪問頻次較低的存儲,對象上傳的時(shí)候指定熱度和生命周期,訪問頻次比較高就會放在副本的存儲池比較高效,訪問頻次比較低就著存儲放在糾刪碼的存儲池。上傳有生命周期的概念,把到達(dá)生命周期副本池的數(shù)據(jù)遷移到糾刪碼的存儲池,熱點(diǎn)數(shù)據(jù)的性能和冷存儲數(shù)據(jù)的存儲成本得到兼顧和均衡。

這個(gè)是對象存儲的應(yīng)用場景,對象存儲和OPENSTACK結(jié)合不是那么緊密,它也是有了存儲的池化,我們對象存儲主要是應(yīng)用于文件共享、靜態(tài)網(wǎng)站的托管、備份歸檔,我們也形成解決方案做CDN后端的數(shù)據(jù)持久化存儲。

我們使用Ceph也是有兩年左右的時(shí)間,我們2016年轉(zhuǎn)型使用Ceph,對于生產(chǎn)實(shí)踐中也碰到一些問題,對于Ceph也有一些期望。我們列了一些問題,并不是說Ceph不好,Ceph是作為開源的軟件,它的正常運(yùn)行要求有比較穩(wěn)定、比較健康的硬件環(huán)境。Ceph本身也做了很多的邊界條件的處理,我們生產(chǎn)端也遇到一些問題,Ceph目前是沒法處理的,這些邏輯不太適合做到Ceph中,如果有做Ceph產(chǎn)品化的公司我們達(dá)到分享的目的。

硬件故障比例的問題,主要是網(wǎng)絡(luò)磁盤,完整的故障Ceph都能處理,主要是一些極個(gè)別故障和亞健康的故障,我們知道Ceph對于一個(gè)節(jié)點(diǎn)網(wǎng)絡(luò)是有一個(gè)機(jī)制的,可以通過仲裁機(jī)制進(jìn)行集群,我們碰到一個(gè)集群是這樣的,兩臺服務(wù)器的集群不通,這兩個(gè)節(jié)點(diǎn)互相報(bào)對方離線了,收到這個(gè)信息以后一人一票不能根據(jù)節(jié)點(diǎn)的方式PK掉,影響了集群的正常使用,輔助存儲管理人做故障的排查。

服務(wù)器網(wǎng)卡丟包,亞健康監(jiān)控要有,這些不一定夠,奇葩的問題,機(jī)柜有堆疊交換機(jī),光模塊出現(xiàn)光衰弱,影響范圍是這兩臺交換機(jī)下面所有的存儲服務(wù)器的網(wǎng)卡都是偶發(fā)性的丟包、使用高,導(dǎo)致兩個(gè)機(jī)柜下的結(jié)點(diǎn)OSD時(shí)而DOWN,時(shí)而UP,這一類也是比較典型的問題。磁盤類的故障,壞扇區(qū),磁盤廠商對偶爾兩個(gè)壞扇區(qū)不認(rèn)為是什么問題,在我們的實(shí)踐來看,實(shí)際上是寫時(shí)觸發(fā)的,對這個(gè)壞塊進(jìn)行再次寫之前,對它的讀操作一直會出現(xiàn)異常,這個(gè)異常包括可能讀不出來,可能讀得不完整,可能讀得速度相當(dāng)慢,都會導(dǎo)致集群使用上的異常,而且集群還會伴隨Ceph在IO訪問時(shí)告警。我們通過告警輸出查一下有沒有壞塊,如果有及時(shí)提醒管理人關(guān)注或是換盤。

慢速磁盤,也遇到很多,慢的程度不一樣,幾十兆、幾兆、幾十K的都有,生產(chǎn)上總結(jié)下來不能應(yīng)對所有的慢盤故障,要有Ceph周邊管理平臺做一些監(jiān)控。還有一類比較詭異的是Raid卡故障,Raid卡是磁盤連接到服務(wù)器的一種方式這也是我們遇到的故障,比如說這個(gè)故障是我們運(yùn)維某銀行雙11保障全天存儲運(yùn)行正常,晚上11點(diǎn)左右這個(gè)集群的時(shí)延,每七分鐘沖高一次,系統(tǒng)的ROBS和帶寬沒有明顯的業(yè)務(wù)壓力變化,我們也是排查了將近幾個(gè)小時(shí),最后從Raid卡里導(dǎo)出每七分鐘出現(xiàn)一次,和集群沖高剛好對應(yīng)上,這類的問題更容易做到Ceph里,如果是HDA卡、Raid卡,涉及到監(jiān)控列表的問題,如果是產(chǎn)品化,這是要在管理系統(tǒng)外圍的方式上做一些強(qiáng)化,否則這個(gè)Ceph集群像演講中說的,沒有降落傘的保障,遇到這些問題比較難排查。

我們對Ceph的期望,備份容災(zāi)的能力,耿航先生說了,存儲可以實(shí)現(xiàn)多數(shù)據(jù)中心的源數(shù)據(jù)和數(shù)據(jù)的同步功能,塊的這塊雖然也有應(yīng)用的功能,實(shí)測下來看比較難取舍,如果用的話安全性會高一點(diǎn),性能下降得也比較多。對于Ceph的問題、期望總結(jié)如上。

中國移動的蘇研代表中國移動在今年成為Ceph基金會全球首批頂級會員,我們會盡我們的力量助力Ceph開源技術(shù)產(chǎn)品化,我的分享就是這些,謝謝大家!

分享到

Fred

baiyan

相關(guān)推薦