以下為演講文字整理:
各位嘉賓下午好!很榮幸參加DOIT主辦的SDSS峰會,我是郭建楠,來自中國移動蘇州研發(fā)中心,今天給大家?guī)淼姆窒眍}目是Ceph在中國移動大規(guī)模應用實踐。
首先跟大家介紹一下Ceph在中國移動的應用情況,第二、第三章節(jié)介紹分布式塊和對象的實踐,針對我們生產(chǎn)實踐和運維過程中碰到的問題以及對Ceph的期待跟大家做分享,主要是體現(xiàn)Ceph在場景化中可能面臨的和急需解決的問題。
中移蘇州軟件技術有限公司是中國移動全資子公司,注冊資本7億,我Base在云技術產(chǎn)品部,主要做一些云計算標準化、定制化的產(chǎn)品、解決方案,承接云計算的軟硬件的集成服務和技術支撐,也可以做一些云計算相關應用的云化遷移。存儲團隊分為四個研發(fā)方向:塊、對象、文件、數(shù)據(jù)庫存儲。前面三個基于軟件定義存儲做的,最后的數(shù)據(jù)庫場景是我們最近才開始的,主要提供一體機的解決方案。
這是移動云整體的解決方案,我們可以提供IaaS、SaaS應用,還可以做一些統(tǒng)一的運營、運維的管理平臺以及安全管理平臺,承載的業(yè)務可以按公有云、私有云、金融云、政務云進行區(qū)分。
以一個具體的案例看一下,這是我們移動自己的公有云的建設情況,2015年開始中國移動集團規(guī)劃公眾服務云的平臺,對內(nèi)打造自己產(chǎn)品的云化,達到降本增效的目的。對外服務于全網(wǎng)的政企客戶和互聯(lián)網(wǎng)用戶。2015年我們開始承建移動云,最早是在中國移動的南方基地開放資源池,2016年在北京信息港實現(xiàn)資源池的布局,實現(xiàn)南北資源池的布局。2017年在湖南的長沙、內(nèi)蒙古的呼和浩特、黑龍江的哈爾濱實現(xiàn)多節(jié)點的部署,后續(xù)納管各省級的資源池,建設規(guī)模涉及虛機10萬臺。
在服務移動內(nèi)部客戶的同時,我們也會為外部客戶承建部分的基礎設施,如為某國有銀行做的金融云案例,總的建設規(guī)模超過1500個節(jié)點,虛機涉及3萬個左右,上海、北京兩地三中心的生產(chǎn)環(huán)境,承載該銀行個人網(wǎng)銀、企業(yè)網(wǎng)人、電子支付、紀念幣預約等互聯(lián)網(wǎng)應用。除了生態(tài)云,也為他們承接了測試云和開發(fā)云,OpenStack平臺十幾套,現(xiàn)在達到一共40套的規(guī)模。
聚焦到云產(chǎn)品,主要在軟件定義方面塊存儲、文件存儲、對象存儲,存儲方案選型也是基于開源做的,塊是基于Ceph。我們在選型開源產(chǎn)品的同時也積極的回饋社區(qū),在Ceph全版本過程中,中國移動貢獻國內(nèi)排名第三,全球排名13位。雖然做存儲的團隊不多,但也想盡一份力量,把開發(fā)的功能盡可能的回饋社區(qū)。
我自己是做研發(fā)的,有些涉及細節(jié),這幅圖是邏輯架構圖,引擎層是基于Ceph開源方案直接應用塊構建,總體來說Ceph確實是一款非常優(yōu)秀的開源軟件,可以提供豐富、穩(wěn)定的功能。我們可以直接拿來使用,不光是這些,在生產(chǎn)上確實不夠,我們也可以做一些周邊的工作,可以建SSD,也在做一些兼容性的驗證。磁盤控制器和磁盤的錯誤檢查,網(wǎng)卡的檢測、SSD的壽命監(jiān)控,都是生產(chǎn)上需要的功能。服務層結合一些業(yè)務場景,開發(fā)一些特性,Ceph現(xiàn)在基于QEMU的熱遷移功能。除了QEMU,我們也可以使用NBD對接開發(fā),也可以用ISCSI。除了這之外,右邊還是展示了我們自己的管理平臺,可視化的方式可以進行資源的監(jiān)控、性能監(jiān)控、集群的再現(xiàn)滾動升級和在線擴容。
Ceph在塊存儲方面,在移動的部署方式。我們知道數(shù)據(jù)是有熱度的,頻繁訪問我們稱為熱數(shù)據(jù),它需要存儲性能。訪問低一點的是冷數(shù)據(jù),需要的存儲容量更節(jié)約存儲成本,我們把生產(chǎn)環(huán)境的Ceph集群分為三類:容量型、緩存型、性能型。容量型是更低的存儲成本,更大的存儲容量,性能型更好的存儲體驗和更高的存儲性能,緩存型介于兩者之間,實現(xiàn)更高的存儲性價比。上面列出了一些典型的配置,主要是依據(jù)中國移動集團的服務器系集采,中國移動的服務器是有集中采購的,一般是在里面進行選型,比如說緩存型、性能型的,我們選擇性不大,基于現(xiàn)有的典型配置,我們梳理出一些可行的方案,一般控制在3%。緩存型把緩存比控制在13%左右,性能型就是上面的SSID。
下面是三種模式的抽象、概要的樹圖,容量型和性能型比較簡單,我們現(xiàn)在生產(chǎn)上批量推的還是Filestore,它還要跟普通的HDD進行綁定形成一個邏輯設備,構成具備緩存功能的邏輯盤。
再介紹下緩存方案,緩存簡單來說就是為了實現(xiàn)數(shù)據(jù)的冷熱遷移,我們用小容量的、高性能的SSD承載頻繁訪問的熱點數(shù)據(jù),用機械盤承載訪問頻次比較低的數(shù)據(jù)達到性能和成本的均衡,邏輯上的抽象概念就是右邊這幅圖,這套方案怎么讀寫SSD、HDD,數(shù)據(jù)在SSD和HDD之間怎么遷移。
左下角是LinuxIO的路徑圖,上面是虛擬文件系統(tǒng)、通用塊到驅(qū)動再到最終的設備,調(diào)動層、驅(qū)動層再到設備層,我們說的緩存方案一般集中在通用塊層,通用塊層有很多開源可以借鑒的項目,Google開源的Bcache、Facebook的開源flashcache,Enhance,我們對flashcache進行調(diào)研,就是把HDD的存儲空間按塊劃成SSD,做成數(shù)據(jù)的冷熱管理。效果圖比較直觀,數(shù)據(jù)性能比較高,基本上可以達到SSID的性。
右邊是Bcache的模式,使用B數(shù)和B+數(shù)的明顯,B+數(shù)的夜節(jié)點是BIO,每個IO的請求根據(jù)訪問進行排序,因為它使用的B+數(shù),其實有一個指針可以達到迅速的連起來,對于數(shù)據(jù)的索引會特別方便,可以把它依照我們HDD的文件算法一次就達到盡量多的刷下去,這也是緩存的優(yōu)勢、特性。Bcache的緩存效果比flashcache更優(yōu)秀一些,它的性能有比較高的輸出,即使寫滿了,也可以直接回歸到HDD盤的性能,是有小幅下降,還是有很好的加速效果。
flashcache和Bcache在現(xiàn)網(wǎng)有具體的使用,Bcache我們想作為主推的方案,對于Bcache也做了很多的優(yōu)化,它在做性能匹配輸出的時候還有很多的毛刺,尤其是幾根比較長的,像針一樣的插在下面,就是Bcache的影響,我們也是改變了算法,讓曲線更加的平緩輸出。
塊存儲的典型部署場景,我們知道Ceph在四、五年迅速進入大家的視野,OPENSTACK新的組件主要是提供卷,除了OPENSTACK以外,我們也充分發(fā)揮云接口的特性,可以把它產(chǎn)品化,可以提供虛擬化的對接,雖然Ceph方案比較曲折,我們也是兩套方案都在做,目前在LinuxIO的投入比較大,現(xiàn)在還有一些小的問題需要后續(xù)優(yōu)化改善,中國移動做了很多的工作,幫助方案進行落地。
對象存儲,基于OPENSTACKSwift,文件的結構以NFS、CFS的接口,經(jīng)過負載均衡把請求發(fā)到RGW,社區(qū)的存儲引擎包括兩種,基于典型的部署方案指導,我們對部署方案進行了一些實例化,負載均衡是有RVS,引擎層我們把數(shù)據(jù)類似于剛才塊的緩存一樣,也是做了存儲池之間的緩存,對象上傳的時候加了一個標簽,是訪問頻度較高還是較低,多少天之后會轉(zhuǎn)變訪問頻次較低的存儲,對象上傳的時候指定熱度和生命周期,訪問頻次比較高就會放在副本的存儲池比較高效,訪問頻次比較低就著存儲放在糾刪碼的存儲池。上傳有生命周期的概念,把到達生命周期副本池的數(shù)據(jù)遷移到糾刪碼的存儲池,熱點數(shù)據(jù)的性能和冷存儲數(shù)據(jù)的存儲成本得到兼顧和均衡。
這個是對象存儲的應用場景,對象存儲和OPENSTACK結合不是那么緊密,它也是有了存儲的池化,我們對象存儲主要是應用于文件共享、靜態(tài)網(wǎng)站的托管、備份歸檔,我們也形成解決方案做CDN后端的數(shù)據(jù)持久化存儲。
我們使用Ceph也是有兩年左右的時間,我們2016年轉(zhuǎn)型使用Ceph,對于生產(chǎn)實踐中也碰到一些問題,對于Ceph也有一些期望。我們列了一些問題,并不是說Ceph不好,Ceph是作為開源的軟件,它的正常運行要求有比較穩(wěn)定、比較健康的硬件環(huán)境。Ceph本身也做了很多的邊界條件的處理,我們生產(chǎn)端也遇到一些問題,Ceph目前是沒法處理的,這些邏輯不太適合做到Ceph中,如果有做Ceph產(chǎn)品化的公司我們達到分享的目的。
硬件故障比例的問題,主要是網(wǎng)絡磁盤,完整的故障Ceph都能處理,主要是一些極個別故障和亞健康的故障,我們知道Ceph對于一個節(jié)點網(wǎng)絡是有一個機制的,可以通過仲裁機制進行集群,我們碰到一個集群是這樣的,兩臺服務器的集群不通,這兩個節(jié)點互相報對方離線了,收到這個信息以后一人一票不能根據(jù)節(jié)點的方式PK掉,影響了集群的正常使用,輔助存儲管理人做故障的排查。
服務器網(wǎng)卡丟包,亞健康監(jiān)控要有,這些不一定夠,奇葩的問題,機柜有堆疊交換機,光模塊出現(xiàn)光衰弱,影響范圍是這兩臺交換機下面所有的存儲服務器的網(wǎng)卡都是偶發(fā)性的丟包、使用高,導致兩個機柜下的結點OSD時而DOWN,時而UP,這一類也是比較典型的問題。磁盤類的故障,壞扇區(qū),磁盤廠商對偶爾兩個壞扇區(qū)不認為是什么問題,在我們的實踐來看,實際上是寫時觸發(fā)的,對這個壞塊進行再次寫之前,對它的讀操作一直會出現(xiàn)異常,這個異常包括可能讀不出來,可能讀得不完整,可能讀得速度相當慢,都會導致集群使用上的異常,而且集群還會伴隨Ceph在IO訪問時告警。我們通過告警輸出查一下有沒有壞塊,如果有及時提醒管理人關注或是換盤。
慢速磁盤,也遇到很多,慢的程度不一樣,幾十兆、幾兆、幾十K的都有,生產(chǎn)上總結下來不能應對所有的慢盤故障,要有Ceph周邊管理平臺做一些監(jiān)控。還有一類比較詭異的是Raid卡故障,Raid卡是磁盤連接到服務器的一種方式這也是我們遇到的故障,比如說這個故障是我們運維某銀行雙11保障全天存儲運行正常,晚上11點左右這個集群的時延,每七分鐘沖高一次,系統(tǒng)的ROBS和帶寬沒有明顯的業(yè)務壓力變化,我們也是排查了將近幾個小時,最后從Raid卡里導出每七分鐘出現(xiàn)一次,和集群沖高剛好對應上,這類的問題更容易做到Ceph里,如果是HDA卡、Raid卡,涉及到監(jiān)控列表的問題,如果是產(chǎn)品化,這是要在管理系統(tǒng)外圍的方式上做一些強化,否則這個Ceph集群像演講中說的,沒有降落傘的保障,遇到這些問題比較難排查。
我們對Ceph的期望,備份容災的能力,耿航先生說了,存儲可以實現(xiàn)多數(shù)據(jù)中心的源數(shù)據(jù)和數(shù)據(jù)的同步功能,塊的這塊雖然也有應用的功能,實測下來看比較難取舍,如果用的話安全性會高一點,性能下降得也比較多。對于Ceph的問題、期望總結如上。
中國移動的蘇研代表中國移動在今年成為Ceph基金會全球首批頂級會員,我們會盡我們的力量助力Ceph開源技術產(chǎn)品化,我的分享就是這些,謝謝大家!