linux學(xué)習(xí)教程之將分布式存儲系統(tǒng)Ceph安裝在CentOS 7
今天的分享來源于一位博主的Linux學(xué)習(xí)教程,在這篇教程中,這位博主將一步一步帶領(lǐng)我們實(shí)現(xiàn)標(biāo)題里的目標(biāo)。這其中,無論是centos7還是ceph都是比較常用的運(yùn)維工具,因此接下來就好好看這篇文章吧。
關(guān)于 Ceph 的介紹網(wǎng)上一大堆,這里就不重復(fù)了。Sage Weil 讀博士的時候開發(fā)了這套牛逼的分布式存儲系統(tǒng),最初是奔著高性能分布式文件系統(tǒng)去的,結(jié)果云計算風(fēng)口一來,Ceph 重心轉(zhuǎn)向了分布式塊存儲(Block Storage)和分布式對象存儲(Object Storage),現(xiàn)在分布式文件系統(tǒng) CephFS 還停在 beta 階段。Ceph 現(xiàn)在是云計算、虛擬機(jī)部署的最火開源存儲解決方案,據(jù)說有20%的 OpenStack 部署存儲用的都是 Ceph 的 block storage.
Ceph 提供3種存儲方式:對象存儲,塊存儲和文件系統(tǒng),下圖很好的展示了 Ceph 存儲集群的架構(gòu):

ceph-cluster
我們主要關(guān)心的是塊存儲,將在下半年慢慢把虛擬機(jī)后端存儲從 SAN 過渡到 Ceph. 雖然還是 0.94 版本,Ceph 現(xiàn)在已經(jīng)比較成熟了,有個同事已經(jīng)在生產(chǎn)環(huán)境里運(yùn)行 Ceph 了兩年多,他曾遇到很多問題,但最終還是解決了,可見 Ceph 還是非常穩(wěn)定和可靠的。
硬件環(huán)境準(zhǔn)備
準(zhǔn)備了6臺機(jī)器,其中3臺物理服務(wù)器做監(jiān)控節(jié)點(diǎn)(mon: ceph-mon1, ceph-mon2, ceph-mon3),2臺物理服務(wù)器做存儲節(jié)點(diǎn)(osd: ceph-osd1, ceph-osd2),1臺虛擬機(jī)做管理節(jié)點(diǎn)(adm: ceph-adm)。
Ceph 要求必須是奇數(shù)個監(jiān)控節(jié)點(diǎn),而且最少3個(自己玩玩的話,1個也是可以的),ceph-adm 是可選的,可以把 ceph-adm 放在 monitor 上,只不過把 ceph-adm 單獨(dú)拿出來架構(gòu)上看更清晰一些。當(dāng)然也可以把 mon 放在 osd 上,生產(chǎn)環(huán)境下是不推薦這樣做的。
- ADM 服務(wù)器硬件配置比較隨意,用1臺低配置的虛擬機(jī)就可以了,只是用來操作和管理 Ceph;
- MON 服務(wù)器2塊硬盤做成 RAID1,用來安裝操作系統(tǒng);
- OSD 服務(wù)器上用10塊 4TB 硬盤做 Ceph 存儲,每個 osd 對應(yīng)1塊硬盤,每個 osd 需要1個 Journal,所以10塊硬盤需要10個 Journal,我們用2塊大容量 SSD 硬盤做 journal,每個 SSD 等分成5個區(qū),這樣每個區(qū)分別對應(yīng)一個 osd 硬盤的 journal,剩下的2塊小容量 SSD 裝操作系統(tǒng),采用 RAID1.
配置列表如下:

軟件環(huán)境準(zhǔn)備
所有 Ceph 集群節(jié)點(diǎn)采用 CentOS 7.1 版本(CentOS-7-x86_64-Minimal-1503-01.iso),所有文件系統(tǒng)采用 Ceph 官方推薦的 xfs,所有節(jié)點(diǎn)的操作系統(tǒng)都裝在 RAID1 上,其他的硬盤單獨(dú)用,不做任何 RAID.
安裝完 CentOS 后我們需要在每個節(jié)點(diǎn)上(包括 ceph-adm 哦)做一點(diǎn)基本配置,比如關(guān)閉 SELINUX、打開防火墻端口、同步時間等:

在每臺 osd 服務(wù)器上我們需要對10塊 SAS 硬盤分區(qū)、創(chuàng)建 xfs 文件系統(tǒng);對2塊用做 journal 的 SSD 硬盤分5個區(qū),每個區(qū)對應(yīng)一塊硬盤,不需要創(chuàng)建文件系統(tǒng),留給 Ceph 自己處理。

上面的命令行要對10個硬盤處理,重復(fù)的操作太多,以后還會陸續(xù)增加服務(wù)器,寫成腳本 parted.sh 方便操作,其中 /dev/sda|b|d|e|g|h|i|j|k|l 分別是10塊硬盤,/dev/sdc 和 /dev/sdf 是用做 journal 的 SSD:

在 ceph-adm 上運(yùn)行 ssh-keygen 生成 ssh key 文件,注意 passphrase 是空,把 ssh key 拷貝到每一個 Ceph 節(jié)點(diǎn)上:

在 ceph-adm 上登陸到每臺節(jié)點(diǎn)上確認(rèn)是否都能無密碼 ssh 了,確保那個煩人的連接確認(rèn)不會再出現(xiàn):

Ceph 部署
比起在每個 Ceph 節(jié)點(diǎn)上手動安裝 Ceph,用 ceph-deploy 工具統(tǒng)一安裝要方便得多:

創(chuàng)建一個 ceph 工作目錄,以后的操作都在這個目錄下面進(jìn)行:

初始化集群,告訴 ceph-deploy 哪些節(jié)點(diǎn)是監(jiān)控節(jié)點(diǎn),命令成功執(zhí)行后會在 ceph-cluster 目錄下生成 ceph.conf, ceph.log, ceph.mon.keyring 等相關(guān)文件:

在每個 Ceph 節(jié)點(diǎn)上都安裝 Ceph:

初始化監(jiān)控節(jié)點(diǎn):

查看一下 Ceph 存儲節(jié)點(diǎn)的硬盤情況:

初始化 Ceph 硬盤,然后創(chuàng)建 osd 存儲節(jié)點(diǎn),存儲節(jié)點(diǎn):單個硬盤:對應(yīng)的 journal 分區(qū),一一對應(yīng):

最后,我們把生成的配置文件從 ceph-adm 同步部署到其他幾個節(jié)點(diǎn),使得每個節(jié)點(diǎn)的 ceph 配置一致:

測試
看一下配置成功了沒?

增加 PG 數(shù)目,根據(jù) Total PGs = (#OSDs * 100) / pool size 公式來決定 pg_num(pgp_num 應(yīng)該設(shè)成和 pg_num 一樣),所以 20*100/2=1000,Ceph 官方推薦取最接近2的指數(shù)倍,所以選擇 1024。如果順利的話,就應(yīng)該可以看到 HEALTH_OK 了:

更詳細(xì)一點(diǎn):

如果操作沒有問題的話記得把上面操作寫到 ceph.conf 文件里,并同步部署的各節(jié)點(diǎn):

如果一切可以從來
部署過程中如果出現(xiàn)任何奇怪的問題無法解決,可以簡單的刪除一切從頭再來:

Troubleshooting
如果出現(xiàn)任何網(wǎng)絡(luò)問題,首先確認(rèn)節(jié)點(diǎn)可以互相無密碼 ssh,各個節(jié)點(diǎn)的防火墻已關(guān)閉或加入規(guī)則:

初次安裝 Ceph 會遇到各種各樣的問題,總體來說排錯還算順利,隨著經(jīng)驗(yàn)的積累,今年下半年將會逐步把 Ceph 加入到生產(chǎn)環(huán)境。
希望在看完這篇文章后,你已經(jīng)對整個過程有了認(rèn)識。那么接下來最要緊的事情,就是動手操作啦~