在CentOS 7上安裝分布式存儲系統(tǒng)Ceph
關于 Ceph 的介紹網上一大堆,這里就不重復了。Sage Weil 讀博士的時候開發(fā)了這套牛逼的分布式存儲系統(tǒng),最初是奔著高性能分布式文件系統(tǒng)去的,結果云計算風口一來,Ceph 重心轉向了分布式塊存儲(Block Storage)和分布式對象存儲(Object Storage),現(xiàn)在分布式文件系統(tǒng) CephFS 還停在 beta 階段。Ceph 現(xiàn)在是云計算、虛擬機部署的最火開源存儲解決方案,據說有20%的 OpenStack 部署存儲用的都是 Ceph 的 block storage.
Ceph 提供3種存儲方式:對象存儲,塊存儲和文件系統(tǒng),下圖很好的展示了 Ceph 存儲集群的架構:
ceph-cluster
我們主要關心的是塊存儲,將在下半年慢慢把虛擬機后端存儲從 SAN 過渡到 Ceph. 雖然還是 0.94 版本,Ceph 現(xiàn)在已經比較成熟了,有個同事已經在生產環(huán)境里運行 Ceph 了兩年多,他曾遇到很多問題,但最終還是解決了,可見 Ceph 還是非常穩(wěn)定和可靠的。
硬件環(huán)境準備
準備了6臺機器,其中3臺物理服務器做監(jiān)控節(jié)點(mon: ceph-mon1, ceph-mon2, ceph-mon3),2臺物理服務器做存儲節(jié)點(osd: ceph-osd1, ceph-osd2),1臺虛擬機做管理節(jié)點(adm: ceph-adm)。
Ceph 要求必須是奇數(shù)個監(jiān)控節(jié)點,而且最少3個(自己玩玩的話,1個也是可以的),ceph-adm 是可選的,可以把 ceph-adm 放在 monitor 上,只不過把 ceph-adm 單獨拿出來架構上看更清晰一些。當然也可以把 mon 放在 osd 上,生產環(huán)境下是不推薦這樣做的。
ADM 服務器硬件配置比較隨意,用1臺低配置的虛擬機就可以了,只是用來操作和管理 Ceph;
MON 服務器2塊硬盤做成 RAID1,用來安裝操作系統(tǒng);
OSD 服務器上用10塊 4TB 硬盤做 Ceph 存儲,每個 osd 對應1塊硬盤,每個 osd 需要1個 Journal,所以10塊硬盤需要10個 Journal,我們用2塊大容量 SSD 硬盤做 journal,每個 SSD 等分成5個區(qū),這樣每個區(qū)分別對應一個 osd 硬盤的 journal,剩下的2塊小容量 SSD 裝操作系統(tǒng),采用 RAID1.
配置列表如下:
軟件環(huán)境準備
所有 Ceph 集群節(jié)點采用 CentOS 7.1 版本(CentOS-7-x86_64-Minimal-1503-01.iso),所有文件系統(tǒng)采用 Ceph 官方推薦的 xfs,所有節(jié)點的操作系統(tǒng)都裝在 RAID1 上,其他的硬盤單獨用,不做任何 RAID.
安裝完 CentOS 后我們需要在每個節(jié)點上(包括 ceph-adm 哦)做一點基本配置,比如關閉 SELINUX、打開防火墻端口、同步時間等:
在每臺 osd 服務器上我們需要對10塊 SAS 硬盤分區(qū)、創(chuàng)建 xfs 文件系統(tǒng);對2塊用做 journal 的 SSD 硬盤分5個區(qū),每個區(qū)對應一塊硬盤,不需要創(chuàng)建文件系統(tǒng),留給 Ceph 自己處理。
上面的命令行要對10個硬盤處理,重復的操作太多,以后還會陸續(xù)增加服務器,寫成腳本 parted.sh 方便操作,其中 /dev/sda|b|d|e|g|h|i|j|k|l 分別是10塊硬盤,/dev/sdc 和 /dev/sdf 是用做 journal 的 SSD:
在 ceph-adm 上運行 ssh-keygen 生成 ssh key 文件,注意 passphrase 是空,把 ssh key 拷貝到每一個 Ceph 節(jié)點上:
在 ceph-adm 上登陸到每臺節(jié)點上確認是否都能無密碼 ssh 了,確保那個煩人的連接確認不會再出現(xiàn):
Ceph 部署
比起在每個 Ceph 節(jié)點上手動安裝 Ceph,用 ceph-deploy 工具統(tǒng)一安裝要方便得多:
創(chuàng)建一個 ceph 工作目錄,以后的操作都在這個目錄下面進行:
初始化集群,告訴 ceph-deploy 哪些節(jié)點是監(jiān)控節(jié)點,命令成功執(zhí)行后會在 ceph-cluster 目錄下生成 ceph.conf, ceph.log, ceph.mon.keyring 等相關文件:
在每個 Ceph 節(jié)點上都安裝 Ceph:
初始化監(jiān)控節(jié)點:
查看一下 Ceph 存儲節(jié)點的硬盤情況:
初始化 Ceph 硬盤,然后創(chuàng)建 osd 存儲節(jié)點,存儲節(jié)點:單個硬盤:對應的 journal 分區(qū),一一對應:
***,我們把生成的配置文件從 ceph-adm 同步部署到其他幾個節(jié)點,使得每個節(jié)點的 ceph 配置一致:
測試
看一下配置成功了沒?
增加 PG 數(shù)目,根據 Total PGs = (#OSDs * 100) / pool size 公式來決定 pg_num(pgp_num 應該設成和 pg_num 一樣),所以 20*100/2=1000,Ceph 官方推薦取最接近2的指數(shù)倍,所以選擇 1024。如果順利的話,就應該可以看到 HEALTH_OK 了:
更詳細一點:
如果操作沒有問題的話記得把上面操作寫到 ceph.conf 文件里,并同步部署的各節(jié)點:
如果一切可以從來
部署過程中如果出現(xiàn)任何奇怪的問題無法解決,可以簡單的刪除一切從頭再來:
Troubleshooting
如果出現(xiàn)任何網絡問題,首先確認節(jié)點可以互相無密碼 ssh,各個節(jié)點的防火墻已關閉或加入規(guī)則:
初次安裝 Ceph 會遇到各種各樣的問題,總體來說排錯還算順利,隨著經驗的積累,今年下半年將會逐步把 Ceph 加入到生產環(huán)境。