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