Ceph是一個分布式存儲,可以提供對象存儲、塊存儲和文件存儲,其中對象存儲和塊存儲可以很好地和各大雲平台集成。一個Ceph集群中有Monitor節點、MDS節點(可選,用於文件存儲)、至少兩個OSD守護進程。
Ceph OSD:OSD守護進程,用於存儲數據、處理數據拷貝、恢復、回滾、均衡,並通過心跳程序向Monitor提供部分監控信息。一個Ceph集群中至少需要兩個OSD守護進程。
Monitor:維護集群的狀態映射信息,包括monitor、OSD、Placement Group(PG)。還維護了Monitor、OSD和PG的狀態改變歷史信息。
MDS:存儲Ceph文件系統的元數據。
一、准備兩台機器
10.111.131.125 ceph01
10.111.131.126 ceph02
ceph01將作為admin、osd1
ceph02將作為osd2、mon2
二、設置兩台主機ssh免密碼訪問
1、在ceph01電腦上執行
ssh-keygen //一直按回車即可,產生公鑰私鑰對
2、將ceph01產生的公鑰復制到ceph01和ceph02上,這樣可以使用ceph01無密碼登錄ceph01和ceph02
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph01
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph02
測試:
ssh ceph01
ssh ceph02
發現登錄時不用輸入密碼就算設置成功。
三、在ceph01上安裝ceph-deploy
apt-get install ceph-deploy
四、在ceph01上創建集群目錄
mkdir my-cluster
cd my-cluster
五、創建集群,會在當前目錄下看到ceph.conf ceph.log ceph.mon.keyring三個文件
在ceph01上執行:
ceph-deploy new ceph01
執行以上命令后,ceph01相當於監控節點。如果要把兩台都作為監控節點則:
ceph-deploy new ceph01 ceph02
vim ceph.conf並將以下配置追加到后面
osd pool default size = 2
六、分別在ceph01和ceph02上安裝ceph
在ceph01上執行以下命令:
ceph-deploy install ceph01 ceph02
執行以上命令,相當於在兩台電腦上都運行了:apt-get install -y ceph,如果上面的命令失敗,也可以用apt-get去每台機子上安裝ceph
七、初始化集群監控
在ceph01上執行:
ceph-deploy mon create-initial
八、收集秘鑰,目錄下會多出ceph.bootstrap-mds.keyring ceph.client.admin.keyring ceph.client.admin.keyring這幾個文件
ceph-deploy gatherkeys ceph01
九、准備2塊硬盤並准備osd
分別在ceph01和ceph02上執行:
mkfs.xfs /dev/sdb1
在ceph01上執行:
ceph-deploy osd prepare ceph01:/dev/sdb1 ceph02:/dev/sdb1
在ceph01上執行:
ceph-deploy osd activate ceph01:/dev/sdb1 ceph02:/dev/sdb1
上面兩條命令執行后,/dev/sdb1會mount到/var/lib/ceph/osd/ceph-0和/var/lib/ceph/osd/ceph-1上,當重啟電腦后該掛載會消失,最好開機掛載,解決辦法多樣,
本人的方法是在:/etc/rc.loac里面加入:
節點1:
mount /dev/sdb1 /var/lib/ceph/osd/ceph-0
節點2:
mount /dev/sdb1 /var/lib/ceph/osd/ceph-0
十、將配置文件和管理密鑰復制到管理節點和Ceph節點,下次再使用ceph命令界面時就無需指定集群監視器地址,執行命令時也無需每次都指定ceph.client.admin.keyring
在ceph01節點上執行:
ceph-deploy --overwrite-conf admin ceph01 ceph02
執行以上命令之后,ceph02這台機器的/etc/ceph目錄下也會多出ceph.client.admin.keyring這個文件。
十一、在ceph01上建一個元數據服務器(可選)
大多數情況下都是使用ceph的塊設備,一般來說都不用建立mds,只有用到ceph的文件存儲的時候才用到
首先執行:
mkdir -p /var/lib/ceph/mds/ceph-ceph01
ceph-deploy mds create ceph01
十二、ceph -s 看到ok表示集群狀態正常。
十三、重啟集群
service ceph restart -a
如果上面的命令不起作用則對各個節點服務進行重啟
1、重啟mon節點,mon節點在ceph01上
/etc/init.d/ceph restart mon.ceph01或
systemctl start ceph-mon@ceph01
2、重啟osd0節點,osd0在ceph01上
systemctl start ceph-osd@0
3、重啟osd1節點,osd1在ceph02上
ssh ceph02
systemctl start ceph-osd@1