官术网_书友最值得收藏!

icon1

1.1 Ceph概述

1.Ceph簡(jiǎn)介

從2004年提交第一行代碼開始到現(xiàn)在,Ceph已經(jīng)是一個(gè)有著十年之久的分布式存儲(chǔ)系統(tǒng)軟件,目前Ceph已經(jīng)發(fā)展為開源存儲(chǔ)界的當(dāng)紅明星,當(dāng)然這與它的設(shè)計(jì)思想以及OpenStack的推動(dòng)有關(guān)。

“Ceph is a unified, distributed storage system designed for excellent performance, reliability and scalability.”這句話說出了Ceph的特性,它是可靠的、可擴(kuò)展的、統(tǒng)一的、分布式的存儲(chǔ)系統(tǒng)。Ceph可以同時(shí)提供對(duì)象存儲(chǔ)RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、塊存儲(chǔ)RBD(Rados Block Device)、文件系統(tǒng)存儲(chǔ)Ceph FS(Ceph Filesystem)3種功能,以此來滿足不同的應(yīng)用需求。

Ceph消除了對(duì)系統(tǒng)單一中心節(jié)點(diǎn)的依賴,從而實(shí)現(xiàn)了真正的無中心結(jié)構(gòu)的設(shè)計(jì)思想,這也是其他分布式存儲(chǔ)系統(tǒng)所不能比的。通過后續(xù)章節(jié)內(nèi)容的介紹,你可以看到,Ceph幾乎所有優(yōu)秀特性的實(shí)現(xiàn),都與其核心設(shè)計(jì)思想有關(guān)。

OpenStack是目前最為流行的開源云平臺(tái)軟件。Ceph的飛速發(fā)展離不開OpenStack的帶動(dòng)。目前而言,Ceph已經(jīng)成為OpenStack的標(biāo)配開源存儲(chǔ)方案之一,其實(shí)際應(yīng)用主要涉及塊存儲(chǔ)和對(duì)象存儲(chǔ),并且開始向文件系統(tǒng)領(lǐng)域擴(kuò)展。這一部分的相關(guān)情況,在后續(xù)章節(jié)中也將進(jìn)行介紹。

2.Ceph的發(fā)展

Ceph是加州大學(xué)Santa Cruz分校的Sage Weil(DreamHost的聯(lián)合創(chuàng)始人)專為博士論文設(shè)計(jì)的新一代自由軟件分布式文件系統(tǒng)。

2004年,Ceph項(xiàng)目開始,提交了第一行代碼。

2006年,OSDI學(xué)術(shù)會(huì)議上,Sage發(fā)表了介紹Ceph的論文,并在該篇論文的末尾提供了Ceph項(xiàng)目的下載鏈接。

2010年,Linus Torvalds將Ceph Client合并到內(nèi)核2.6.34中,使Linux與Ceph磨合度更高。

2012年,擁抱OpenStack,進(jìn)入Cinder項(xiàng)目,成為重要的存儲(chǔ)驅(qū)動(dòng)。

2014年,Ceph正趕上OpenStack大熱,受到各大廠商的“待見”,吸引來自不同廠商越來越多的開發(fā)者加入,Intel、SanDisk等公司都參與其中,同時(shí)Inktank公司被Red Hat公司1.75億美元收購。

2015年,Red Hat宣布成立Ceph顧問委員會(huì),成員包括Canonical、CERN、Cisco、Fujitsu、Intel、SanDisk和SUSE。Ceph顧問委員會(huì)將負(fù)責(zé)Ceph軟件定義存儲(chǔ)項(xiàng)目的廣泛議題,目標(biāo)是使Ceph成為云存儲(chǔ)系統(tǒng)。

2016年,OpenStack社區(qū)調(diào)查報(bào)告公布,Ceph仍為存儲(chǔ)首選,這已經(jīng)是Ceph第5次位居調(diào)查的首位了。

3.Ceph應(yīng)用場(chǎng)景

Ceph可以提供對(duì)象存儲(chǔ)、塊設(shè)備存儲(chǔ)和文件系統(tǒng)服務(wù),其對(duì)象存儲(chǔ)可以對(duì)接網(wǎng)盤(owncloud)應(yīng)用業(yè)務(wù)等;其塊設(shè)備存儲(chǔ)可以對(duì)接(IaaS),當(dāng)前主流的IaaS云平臺(tái)軟件,例如OpenStack、CloudStack、Zstack、Eucalyptus等以及KVM等,本書后續(xù)章節(jié)中將介紹OpenStack、CloudStack、Zstack和KVM的對(duì)接;其文件系統(tǒng)文件尚不成熟,官方不建議在生產(chǎn)環(huán)境下使用。

4.Ceph生態(tài)系統(tǒng)

Ceph作為開源項(xiàng)目,其遵循LGPL協(xié)議,使用C++語言開發(fā),目前Ceph已經(jīng)成為最廣泛的全球開源軟件定義存儲(chǔ)項(xiàng)目,擁有得到眾多IT廠商支持的協(xié)同開發(fā)模式。目前Ceph社區(qū)有超過40個(gè)公司的上百名開發(fā)者持續(xù)貢獻(xiàn)代碼,平均每星期的代碼commits超過150個(gè),每個(gè)版本通常在2000個(gè)commits左右,代碼增減行數(shù)在10萬行以上。在過去的幾個(gè)版本發(fā)布中,貢獻(xiàn)者的數(shù)量和參與公司明顯增加,如圖1-1所示。

圖1-1 部分廠商和軟件

5.Ceph用戶群

Ceph成為了開源存儲(chǔ)的當(dāng)紅明星,國內(nèi)外已經(jīng)擁有眾多用戶群體,下面簡(jiǎn)單說一下Ceph的用戶群。

(1)國外用戶群

1)CERN:CERN IT部門在2013年年中開始就運(yùn)行了一個(gè)單一集群超過10000個(gè)VM和100000個(gè)CPU Cores的云平臺(tái),主要用來做物理數(shù)據(jù)分析。這個(gè)集群后端Ceph包括3PB的原始容量,在云平臺(tái)中作為1000多個(gè)Cinder卷和1500多個(gè)Glance鏡像的存儲(chǔ)池。在2015年開始測(cè)試單一30 PB的塊存儲(chǔ)RBD集群。

2)DreamHost:DreamHost從2012年開始運(yùn)行基于Ceph RADOSGW的大規(guī)模對(duì)象存儲(chǔ)集群,單一集群在3PB以下,大約由不到10機(jī)房集群組成,直接為客戶提供對(duì)象存儲(chǔ)服務(wù)。

3)Yahoo Flick:Yahoo Flick自2013年開始逐漸試用Ceph對(duì)象存儲(chǔ)替換原有的商業(yè)存儲(chǔ),目前大約由10機(jī)房構(gòu)成,每個(gè)機(jī)房在1PB~2PB,存儲(chǔ)了大約2500億個(gè)對(duì)象。

4)大學(xué)用戶:奧地利的因斯布魯克大學(xué)、法國的洛林大學(xué)等。

(2)國內(nèi)用戶群

1)以O(shè)penStack為核心的云廠商:例如UnitedStack、Awcloud等國內(nèi)云計(jì)算廠商。

2)Ceph產(chǎn)品廠商:SanDisk、XSKY、H3C、杉巖數(shù)據(jù)、SUSE和Bigtera等Ceph廠商。

3)互聯(lián)網(wǎng)企業(yè):騰訊、京東、新浪微博、樂視、完美世界、平安科技、聯(lián)想、唯品會(huì)、福彩網(wǎng)和魅族等國內(nèi)互聯(lián)網(wǎng)企業(yè)。

6.社區(qū)項(xiàng)目開發(fā)迭代

目前Ceph社區(qū)采用每半年一個(gè)版本發(fā)布的方式來進(jìn)行特性和功能的開發(fā),每個(gè)版本發(fā)布需要經(jīng)歷設(shè)計(jì)、開發(fā)、新功能凍結(jié),持續(xù)若干個(gè)版本的Bug修復(fù)周期后正式發(fā)布下一個(gè)穩(wěn)定版本。其發(fā)布方式跟OpenStack差不多,也是每半年發(fā)布一個(gè)新版本。

Ceph會(huì)維護(hù)多個(gè)穩(wěn)定版本來保證持續(xù)的Bug修復(fù),以此來保證用戶的存儲(chǔ)安全,同時(shí)社區(qū)會(huì)有一個(gè)發(fā)布穩(wěn)定版本的團(tuán)隊(duì)來維護(hù)已發(fā)布的版本,每個(gè)涉及之前版本的Bug都會(huì)被該團(tuán)隊(duì)移植回穩(wěn)定版本,并且經(jīng)過完整QA測(cè)試后發(fā)布下一個(gè)穩(wěn)定版本。

代碼提交都需要經(jīng)過單元測(cè)試,模塊維護(hù)者審核,并通過QA測(cè)試子集后才能合并到主線。社區(qū)維護(hù)一個(gè)較大規(guī)模的測(cè)試集群來保證代碼質(zhì)量,豐富的測(cè)試案例和錯(cuò)誤注入機(jī)制保證了項(xiàng)目的穩(wěn)定可靠。

7.Ceph版本

Ceph正處于持續(xù)開發(fā)中并且迅速提升。2012年7月3日,Sage發(fā)布了Ceph第一個(gè)LTS版本:Argonaut。從那時(shí)起,陸續(xù)又發(fā)布了9個(gè)新版本。Ceph版本被分為L(zhǎng)TS(長(zhǎng)期穩(wěn)定版)以及開發(fā)版本,Ceph每隔一段時(shí)間就會(huì)發(fā)布一個(gè)長(zhǎng)期穩(wěn)定版。Ceph版本具體信息見表1-1。欲了解更多信息,請(qǐng)?jiān)L問https://Ceph.com/category/releases/

表1-1 Ceph版本信息

1.2 Ceph的功能組件

Ceph提供了RADOS、OSD、MON、LIBRADOS、RBD、RGW和Ceph FS等功能組件,但其底層仍然使用RADOS存儲(chǔ)來支撐上層的那些組件,如圖1-2所示。

圖1-2 Ceph功能組件的整體架構(gòu)

下面分為兩部分來講述Ceph的功能組件。

(1)Ceph核心組件

在Ceph存儲(chǔ)中,包含了幾個(gè)重要的核心組件,分別是Ceph OSD、Ceph Monitor和Ceph MDS。一個(gè)Ceph的存儲(chǔ)集群至少需要一個(gè)Ceph Monitor和至少兩個(gè)Ceph的OSD。運(yùn)行Ceph文件系統(tǒng)的客戶端時(shí),Ceph的元數(shù)據(jù)服務(wù)器(MDS)是必不可少的。下面來詳細(xì)介紹一下各個(gè)核心組件。

?Ceph OSD:全稱是Object Storage Device,主要功能包括存儲(chǔ)數(shù)據(jù),處理數(shù)據(jù)的復(fù)制、恢復(fù)、回補(bǔ)、平衡數(shù)據(jù)分布,并將一些相關(guān)數(shù)據(jù)提供給Ceph Monitor,例如Ceph OSD心跳等。一個(gè)Ceph的存儲(chǔ)集群,至少需要兩個(gè)Ceph OSD來實(shí)現(xiàn)active +clean健康狀態(tài)和有效的保存數(shù)據(jù)的雙副本(默認(rèn)情況下是雙副本,可以調(diào)整)。注意:每一個(gè)Disk、分區(qū)都可以成為一個(gè)OSD。

?Ceph Monitor:Ceph的監(jiān)控器,主要功能是維護(hù)整個(gè)集群健康狀態(tài),提供一致性的決策,包含了Monitor map、OSD map、PG(Placement Group)map和CRUSH map。

?Ceph MDS:全稱是Ceph Metadata Server,主要保存的是Ceph文件系統(tǒng)(File System)的元數(shù)據(jù)(metadata)。溫馨提示:Ceph的塊存儲(chǔ)和Ceph的對(duì)象存儲(chǔ)都不需要Ceph MDS。Ceph MDS為基于POSIX文件系統(tǒng)的用戶提供了一些基礎(chǔ)命令,例如ls、find等命令。

(2)Ceph功能特性

Ceph可以同時(shí)提供對(duì)象存儲(chǔ)RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、塊存儲(chǔ)RBD(Rados Block Device)、文件系統(tǒng)存儲(chǔ)Ceph FS(Ceph File System)3種功能,由此產(chǎn)生了對(duì)應(yīng)的實(shí)際場(chǎng)景,本節(jié)簡(jiǎn)單介紹如下。

RADOSGW功能特性基于LIBRADOS之上,提供當(dāng)前流行的RESTful協(xié)議的網(wǎng)關(guān),并且兼容S3和Swift接口,作為對(duì)象存儲(chǔ),可以對(duì)接網(wǎng)盤類應(yīng)用以及HLS流媒體應(yīng)用等。

RBD(Rados Block Device)功能特性也是基于LIBRADOS之上,通過LIBRBD創(chuàng)建一個(gè)塊設(shè)備,通過QEMU/KVM附加到VM上,作為傳統(tǒng)的塊設(shè)備來用。目前OpenStack、CloudStack等都是采用這種方式來為VM提供塊設(shè)備,同時(shí)也支持快照、COW(Copy On Write)等功能。

Ceph FS(Ceph File System)功能特性是基于RADOS來實(shí)現(xiàn)分布式的文件系統(tǒng),引入了MDS(Metadata Server),主要為兼容POSIX文件系統(tǒng)提供元數(shù)據(jù)。一般都是當(dāng)做文件系統(tǒng)來掛載。

后面章節(jié)會(huì)對(duì)這幾種特性以及對(duì)應(yīng)的實(shí)際場(chǎng)景做詳細(xì)的介紹和分析。

1.3 Ceph架構(gòu)和設(shè)計(jì)思想

1.Ceph架構(gòu)

Ceph底層核心是RADOS。Ceph架構(gòu)圖如圖1-3所示。

圖1-3 Ceph架構(gòu)圖

?RADOS:RADOS具備自我修復(fù)等特性,提供了一個(gè)可靠、自動(dòng)、智能的分布式存儲(chǔ)。

?LIBRADOS:LIBRADOS庫允許應(yīng)用程序直接訪問,支持C/C++、Java和Python等語言。

?RADOSGW:RADOSGW是一套基于當(dāng)前流行的RESTful協(xié)議的網(wǎng)關(guān),并且兼容S3和Swift。

?RBD:RBD通過Linux內(nèi)核(Kernel)客戶端和QEMU/KVM驅(qū)動(dòng),來提供一個(gè)完全分布式的塊設(shè)備。

?Ceph FS:Ceph FS通過Linux內(nèi)核(Kernel)客戶端結(jié)合FUSE,來提供一個(gè)兼容POSIX的文件系統(tǒng)。

具體的RADOS細(xì)節(jié)以及RADOS的靈魂CRUSH(Controlled Replication Under Scalable Hashing,可擴(kuò)展哈希算法的可控復(fù)制)算法,這兩個(gè)知識(shí)點(diǎn)會(huì)在后面的第2、3章詳細(xì)介紹和分析。

2.Ceph設(shè)計(jì)思想

Ceph是一個(gè)典型的起源于學(xué)術(shù)研究課題的開源項(xiàng)目。雖然學(xué)術(shù)研究生涯對(duì)于Sage而言只是其光輝事跡的短短一篇,但畢竟還是有幾篇學(xué)術(shù)論文可供參考的。可以根據(jù)Sage的幾篇論文分析Ceph的設(shè)計(jì)思想。

理解Ceph的設(shè)計(jì)思想,首先還是要了解Sage設(shè)計(jì)Ceph時(shí)所針對(duì)的應(yīng)用場(chǎng)景,換句話說,Sage當(dāng)初做Ceph的初衷的什么?

事實(shí)上,Ceph最初針對(duì)的應(yīng)用場(chǎng)景,就是大規(guī)模的、分布式的存儲(chǔ)系統(tǒng)。所謂“大規(guī)模”和“分布式”,至少是能夠承載PB級(jí)別的數(shù)據(jù)和成千上萬的存儲(chǔ)節(jié)點(diǎn)組成的存儲(chǔ)集群。

如今云計(jì)算、大數(shù)據(jù)在中國發(fā)展得如火如荼,PB容量單位早已經(jīng)進(jìn)入國內(nèi)企業(yè)存儲(chǔ)采購單,DT時(shí)代即將來臨。Ceph項(xiàng)目起源于2004年,那是一個(gè)商用處理器以單核為主流,常見硬盤容量只有幾十GB的年代。當(dāng)時(shí)SSD也沒有大規(guī)模商用,正因如此,Ceph之前版本對(duì)SSD的支持不是很好,發(fā)揮不了SSD的性能。如今Ceph高性能面臨的最大挑戰(zhàn)正是這些歷史原因,目前社區(qū)和業(yè)界正在逐步解決這些性能上的限制。

在Sage的思想中,我們首先說一下Ceph的技術(shù)特性,總體表現(xiàn)在集群可靠性、集群擴(kuò)展性、數(shù)據(jù)安全性、接口統(tǒng)一性4個(gè)方面。

?集群可靠性:所謂“可靠性”,首先從用戶角度來說數(shù)據(jù)是第一位的,要盡可能保證數(shù)據(jù)不會(huì)丟失。其次,就是數(shù)據(jù)寫入過程中的可靠性,在用戶將數(shù)據(jù)寫入Ceph存儲(chǔ)系統(tǒng)的過程中,不會(huì)因?yàn)橐馔馇闆r出現(xiàn)而造成數(shù)據(jù)丟失。最后,就是降低不可控物理因素的可靠性,避免因?yàn)闄C(jī)器斷電等不可控物理因素而產(chǎn)生的數(shù)據(jù)丟失。

?集群可擴(kuò)展性:這里的“可擴(kuò)展”概念是廣義的,既包括系統(tǒng)規(guī)模和存儲(chǔ)容量的可擴(kuò)展,也包括隨著系統(tǒng)節(jié)點(diǎn)數(shù)增加的聚合數(shù)據(jù)訪問帶寬的線性擴(kuò)展。

?數(shù)據(jù)安全性:所謂“數(shù)據(jù)安全性”,首先要保證由于服務(wù)器死機(jī)或者是偶然停電等自然因素的產(chǎn)生,數(shù)據(jù)不會(huì)丟失,并且支持?jǐn)?shù)據(jù)自動(dòng)恢復(fù),自動(dòng)重平衡等。總體而言,這一特性既保證了系統(tǒng)的高度可靠和數(shù)據(jù)絕對(duì)安全,又保證了在系統(tǒng)規(guī)模擴(kuò)大之后,其運(yùn)維難度仍能保持在一個(gè)相對(duì)較低的水平。

?接口統(tǒng)一性:所謂“接口統(tǒng)一”,本書開頭就說到了Ceph可以同時(shí)支持3種存儲(chǔ),即塊存儲(chǔ)、對(duì)象存儲(chǔ)和文件存儲(chǔ)。Ceph支持市面上所有流行的存儲(chǔ)類型。

根據(jù)上述技術(shù)特性以及Sage的論文,我們來分析一下Ceph的設(shè)計(jì)思路,概述為兩點(diǎn):充分發(fā)揮存儲(chǔ)本身計(jì)算能力和去除所有的中心點(diǎn)。

?充分發(fā)揮存儲(chǔ)設(shè)備自身的計(jì)算能力:其實(shí)就是采用廉價(jià)的設(shè)備和具有計(jì)算能力的設(shè)備(最簡(jiǎn)單的例子就是普通的服務(wù)器)作為存儲(chǔ)系統(tǒng)的存儲(chǔ)節(jié)點(diǎn)。Sage認(rèn)為當(dāng)前階段只是將這些服務(wù)器當(dāng)做功能簡(jiǎn)單的存儲(chǔ)節(jié)點(diǎn),從而產(chǎn)生資源過度浪費(fèi)(如同虛擬化的思想一樣,都是為了避免資源浪費(fèi))。而如果充分發(fā)揮節(jié)點(diǎn)上的計(jì)算能力,則可以實(shí)現(xiàn)前面提出的技術(shù)特性。這一點(diǎn)成為了Ceph系統(tǒng)設(shè)計(jì)的核心思想。

?去除所有的中心點(diǎn):搞IT的最忌諱的就是單點(diǎn)故障,如果系統(tǒng)中出現(xiàn)中心點(diǎn),一方面會(huì)引入單點(diǎn)故障,另一方面也必然面臨著當(dāng)系統(tǒng)規(guī)模擴(kuò)大時(shí)的可擴(kuò)展性和性能瓶頸。除此之外,如果中心點(diǎn)出現(xiàn)在數(shù)據(jù)訪問的關(guān)鍵路徑上,也必然導(dǎo)致數(shù)據(jù)訪問的延遲增大。雖然在大多數(shù)存儲(chǔ)軟件實(shí)踐中,單點(diǎn)故障點(diǎn)和性能瓶頸的問題可以通過為中心點(diǎn)增加HA或備份加以緩解,但Ceph系統(tǒng)最終采用Crush、Hash環(huán)等方法更徹底地解決了這個(gè)問題。很顯然Sage的眼光和設(shè)想還是很超前的。

1.4 Ceph快速安裝

在Ceph官網(wǎng)上提供了兩種安裝方式:快速安裝和手動(dòng)安裝。快速安裝采用Ceph-Deploy工具來部署;手動(dòng)安裝采用官方教程一步一步來安裝部署Ceph集群,過于煩瑣但有助于加深印象,如同手動(dòng)部署OpenStack一樣。但是,建議新手和初學(xué)者采用第一種方式快速部署并且測(cè)試,下面會(huì)介紹如何使用Ceph-Deploy工具來快速部署Ceph集群。

1.4.1 Ubuntu/Debian安裝

本節(jié)將介紹如何使用Ceph-Deploy工具來快速部署Ceph集群,開始之前先普及一下Ceph-Deploy工具的知識(shí)。Ceph-Deploy工具通過SSH方式連接到各節(jié)點(diǎn)服務(wù)器上,通過執(zhí)行一系列腳本來完成Ceph集群部署。Ceph-Deploy簡(jiǎn)單易用同時(shí)也是Ceph官網(wǎng)推薦的默認(rèn)安裝工具。本節(jié)先來講下在Ubuntu/Debian系統(tǒng)下如何快速安裝Ceph集群。

1)配置Ceph APT源。

root@localhos`t:~#  echo  deb  http://ceph.com/debian-{ceph-stable-release}/
$(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

2)添加APT源key。

root@localhost:~#  wget  –q  –O  -'https://ceph.com/git/? p=ceph.git; a=blob_
plain; f=keys/release.asc' | sudo apt-key add -

3)更新源并且安裝ceph-deploy。

root@localhost:~# sudo apt-get update &&sudo apt-get install ceph-deploy -y

4)配置各個(gè)節(jié)點(diǎn)hosts文件。

root@localhost:~# cat /etc/hosts
192.168.1.2  node1
192.168.1.3  node2
192.168.1.4  node3

5)配置各節(jié)點(diǎn)SSH無密碼登錄,這就是本節(jié)開始時(shí)講到的Ceph-Deploy工具要用過SSH方式連接到各節(jié)點(diǎn)服務(wù)器,來安裝部署集群。輸完ssh-keygen命令之后,在命令行會(huì)輸出以下內(nèi)容。

root@localhost:~# ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/ceph-client/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /ceph-client/.ssh/id_rsa.
Your public key has been saved in /ceph-client/.ssh/id_rsa.pub

6)復(fù)制key到各節(jié)點(diǎn)。

root@localhost:~# ssh-copy-idnode1
root@localhost:~# ssh-copy-idnode2
root@localhost:~# ssh-copy-idnode3

7)在執(zhí)行ceph-deploy的過程中會(huì)生成一些配置文件,建議創(chuàng)建一個(gè)目錄,例如my-cluster。

root@localhost:~# mkdir my-cluster
root@localhost:~# cd my-cluster

8)創(chuàng)建集群(Cluster),部署新的monitor節(jié)點(diǎn)。

root@localhost:~# ceph-deploy new {initial-monitor-node(s)}

例如:

root@localhost:~# ceph-deploy new node1

9)配置Ceph.conf配置文件,示例文件是默認(rèn)的,可以根據(jù)自己情況進(jìn)行相應(yīng)調(diào)整和添加。具體優(yōu)化情況本書后面會(huì)介紹。

[global]
fsid = 67d997c9-dc13-4edf-a35f-76fd693aa118
mon_initial_members = node1, node2
mon_host = 192.168.1.2,192.168.1.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
<! -----以上部分都是ceph-deploy默認(rèn)生成的---->
public network = {ip-address}/{netmask}
cluster network={ip-addesss}/{netmask}
<! -----以上兩個(gè)網(wǎng)絡(luò)是新增部分,默認(rèn)只是添加public network,一般生產(chǎn)都是定義兩個(gè)網(wǎng)絡(luò),集
群網(wǎng)絡(luò)和數(shù)據(jù)網(wǎng)絡(luò)分開-------->
[osd]
……
[mon]
……

這里配置文件不再過多敘述。

10)安裝Ceph到各節(jié)點(diǎn)。

root@localhost:~# ceph-deploy install {ceph-node}[{ceph-node} ...]

例如:

root@localhost:~# ceph-deploy install node1 node2 node3

11)獲取密鑰key,會(huì)在my-cluster目錄下生成幾個(gè)key。

root@localhost:~# ceph-deploy mon create-initial

12)初始化磁盤。

root@localhost:~# ceph-deploy disk zap {osd-server-name}:{disk-name}

例如:

root@localhost:~# ceph-deploy disk zap node1:sdb

13)準(zhǔn)備OSD。

root@localhost:~# ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]

例如:

root@localhost:~# ceph-deploy osd prepare node1:sdb1:sdc

14)激活OSD。

root@localhost:~# ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}]

例如:

root@localhost:~# ceph-deploy osd activate node1:sdb1:sdc

15)分發(fā)key。

root@localhost:~# ceph-deploy admin {admin-node} {ceph-node}

例如:

root@localhost:~# ceph-deploy admin node1 node2 node3

16)給admin key賦權(quán)限。

root@localhost:~# sudo chmod +r /etc/ceph/ceph.client.admin.keyring

17)查看集群健康狀態(tài),如果是active+clean狀態(tài)就是正常的。

root@localhost:~# ceph health

提示

安裝Ceph前提條件如下。

① 時(shí)間要求很高,建議在部署Ceph集群的時(shí)候提前配置好NTP服務(wù)器。

② 對(duì)網(wǎng)絡(luò)要求一般,因?yàn)镃eph源在外國有時(shí)候會(huì)被屏蔽,解決辦法多嘗試機(jī)器或者代理。

1.4.2 RHEL/CentOS安裝

本節(jié)主要講一下在RHEL/CentOS系統(tǒng)下如何快速安裝Ceph集群。

1)配置Ceph YUM源。

root@localhost:~# vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Cephnoarch packages
baseurl=http://ceph.com/rpm-{ceph-release}/{distro}/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/? p=ceph.git; a=blob_plain; f=keys/release.asc

2)更新源并且安裝ceph-deploy。

root@localhost:~# yum update &&yum install ceph-deploy -y

3)配置各個(gè)節(jié)點(diǎn)hosts文件。

root@localhost:~# cat /etc/hosts
192.168.1.2  node1
192.168.1.3  node2
192.168.1.4  node3

4)配置各節(jié)點(diǎn)SSH無密碼登錄,通過SSH方式連接到各節(jié)點(diǎn)服務(wù)器,以安裝部署集群。輸入ssh-keygen命令,在命令行會(huì)輸出以下內(nèi)容。

root@localhost:~# ssh-keygen
Generating public/private key pair.
Enter file in which to save the key (/ceph-client/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /ceph-client/.ssh/id_rsa.
Your public key has been saved in /ceph-client/.ssh/id_rsa.pub

5)拷貝key到各節(jié)點(diǎn)。

root@localhost:~# ssh-copy-id node1
root@localhost:~# ssh-copy-id node2
root@localhost:~# ssh-copy-id node3

6)在執(zhí)行ceph-deploy的過程中會(huì)生成一些配置文件,建議創(chuàng)建一個(gè)目錄,例如my-cluster。

root@localhost:~# mkdir my-cluster
root@localhost:~# cd my-cluster

7)創(chuàng)建集群(Cluster),部署新的monitor節(jié)點(diǎn)。

root@localhost:~# ceph-deploy new {initial-monitor-node(s)}

例如:

root@localhost:~# ceph-deploy new node1

8)配置Ceph.conf配置文件,示例文件是默認(rèn)的,可以根據(jù)自己情況進(jìn)行相應(yīng)調(diào)整和添加。具體優(yōu)化情況本書后面會(huì)介紹。

[global]
fsid = 67d997c9-dc13-4edf-a35f-76fd693aa118
mon_initial_members = node1, node2
mon_host = 192.168.1.2,192.168.1.3
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
<! -----以上部分都是ceph-deploy默認(rèn)生成的---->
public network = {ip-address}/{netmask}
cluster network={ip-addesss}/{netmask}
<! -----以上兩個(gè)網(wǎng)絡(luò)是新增部分,默認(rèn)只是添加public network,一般生產(chǎn)都是定義兩個(gè)網(wǎng)絡(luò),集群網(wǎng)絡(luò)和數(shù)據(jù)網(wǎng)絡(luò)分開-------->
[osd]
……
[mon]
……

這里配置文件不再過多敘述。

9)安裝Ceph到各節(jié)點(diǎn)。

root@localhost:~# ceph-deploy install {ceph-node}[{ceph-node} ...]

例如:

root@localhost:~# ceph-deploy install node1 node2 node3

10)獲取密鑰key,會(huì)在my-cluster目錄下生成幾個(gè)key。

root@localhost:~# ceph-deploy mon create-initial

11)初始化磁盤。

root@localhost:~# ceph-deploy disk zap {osd-server-name}:{disk-name}

例如:

root@localhost:~# ceph-deploy disk zap node1:sdb

12)準(zhǔn)備OSD。

root@localhost:~# ceph-deploy osd prepare {node-name}:{data-disk}[:{journal-disk}]

例如:

root@localhost:~# ceph-deploy osd prepare node1:sdb1:sdc

13)激活OSD。

root@localhost:~# ceph-deploy osd activate {node-name}:{data-disk-partition}[:{journal-disk-partition}]

例如:

root@localhost:~# ceph-deploy osd activate node1:sdb1:sdc

14)分發(fā)key。

root@localhost:~# ceph-deploy admin {admin-node} {ceph-node}

例如:

root@localhost:~# ceph-deploy admin node1 node2 node3

15)給admin key賦權(quán)限。

root@localhost:~# sudo chmod +r /etc/ceph/ceph.client.admin.keyring

16)查看集群健康狀態(tài),如果是active + clean狀態(tài)就是正常的。

root@localhost:~# ceph health

1.5 本章小結(jié)

本章主要從Ceph的歷史背景、發(fā)展事件、Ceph的架構(gòu)組件、功能特性以及Ceph的設(shè)計(jì)思想方面介紹了Ceph,讓大家對(duì)Ceph有一個(gè)全新的認(rèn)識(shí),以便后面更深入地了解Ceph。

主站蜘蛛池模板: 临夏市| 临澧县| 维西| 佛冈县| 武隆县| 中方县| 中方县| 吴桥县| 秦皇岛市| 迁安市| 嘉义县| 那坡县| 微山县| 包头市| 高雄市| 嘉鱼县| 鹤岗市| 北川| 绥宁县| 鸡西市| 沐川县| 临漳县| 天峨县| 新疆| 儋州市| 黑龙江省| 独山县| 双鸭山市| 安溪县| 盐池县| 扬州市| 邓州市| 日土县| 鄂尔多斯市| 宝坻区| 长丰县| 南投市| 称多县| 嘉兴市| 丽水市| 宁晋县|