Ceph 叢集的擴充,Ceph叢集擴充
前文講述了如何建立一個叢集,結構如下,本文講述如何對該叢集進行擴充
| IP |
hostname |
描述 |
| 192.168.40.106 |
dataprovider |
部署管理節點 |
| 192.168.40.107 |
mdsnode |
MON節點 |
| 192.168.40.108 |
osdnode1 |
OSD節點 |
| 192.168.40.148 |
osdnode2 |
OSD節點 |
擴充主要包括以下幾點:
- 在mdsnode上添加OSD進程以及CephMetadata服務
- 在osdnode1,osdnode2節點上添加Ceph Monitor服務
- 添加一個新的OSD節點osdnode3
最終結果如下:
| IP |
hostname |
描述 |
| 192.168.40.106 |
dataprovider |
部署管理節點 |
| 192.168.40.107 |
mdsnode |
MDS,MON節點,OSD節點 |
| 192.168.40.108 |
osdnode1 |
OSD節點,MON節點 |
| 192.168.40.148 |
osdnode2 |
OSD節點,MON節點 |
| 192.168.40.125 |
osdnode3 |
OSD節點 |
擴充MON節點的OSD功能
- 在dataprovider上切換到leadorceph使用者,並進入/home/leadorceph/my-cluster目錄
- 添加mdsnode節點的OSD服務
ssh node1 sudo mkdir /var/local/osd2 exit
ceph-deploy --overwrite-conf osd prepare mdsnode:/var/local/osd2
ceph-deploy osd activate mdsnode:/var/local/osd2
當執行完上面的命令後,Ceph會重新調整整個叢集,並且會將PG遷移到新的OSD上,可以通過ceph -w發現叢集的狀態發生了變化
增加一個新的OSD節點
在已有的MON節點上添加完OSD功能後,接下來將在一個全新的osdnode3上增加OSD的功能
- 修改dataprovider節點的/etc/hosts資訊
添加192.168.40.125 osdnode3到其/etc/hosts檔案中
- 在osdnode3上執行下列命令,其描述請參考“Centos6.5下Ceph儲存叢集的搭建 ”
yum install -y ntp ntpdate ntp-doc yum install -y openssh-server sudo useradd -d /home/leadorceph -m leadorceph sudo passwd leadorceph echo "leadorceph ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/leadorceph sudo chmod 0440 /etc/sudoers.d/leadorceph
使用leadorceph使用者的身份執行sudo visudo命令,然後修改Defaults requiretty 為Defaults:ceph !requiretty
- 在dataprovider節點上將無密碼的SSH key拷貝到osdnode3上
ssh-copy-id leadorceph@osdnode3
- 在dataprovider上安裝osdnode3的ceph
ceph-deploy install osdnode3<br style="background-color: inherit;" />
- 在dataprovider上建立以及啟用osdnode3上的進程
ceph-deploy osd prepare osdnode3:/var/local/osd3ceph-deploy osd activate osdnode3:/var/local/osd3
從可以看出,此時pg的數量太少了,每個OSD平均只有16個,所以此時需要添加一些pg
ceph osd pool set rbd pg_num 100 ceph osd pool set rbd pgp_num 100
添加一個Metadata Server
如果想要使用CephFS,則必須要包含一個metadata server,通過下面的方式來建立metadata 服務:
ceph-deploy mds create mdsnode
添加Ceph Mon
Mon的擴充比較複雜,搞不好會導致整個叢集出錯,所以建議開始的時候對MON做好規劃,盡量不要對其進行修改。
ceph monitor的個數是2n+1(n>=0)個(為奇數),線上上至少3個,只要正常的節點數>=n+1,ceph的paxos演算法能保證系統的正常運行。所以,對於3個節點,同時只能掛掉一個。
- 修改dataprovider上的ceph.conf檔案,把要添加的MON節點的資訊追加進去,修改如下
[global] auth_service_required = cephx osd_pool_default_size = 2 filestore_xattr_use_omap = true auth_client_required = cephx auth_cluster_required = cephx public_network = 192.168.40.0/24 mon_initial_members = mdsnode,osdnode1,osdnode2 fsid = 1fffdcba-538f-4f0d-b077-b916203ff698 [mon] mon_addr = 192.168.40.107:6789,192.168.40.108:6789,192.168.40.148:6789 mon_host = mdsnode,osdnode1,osdnode2 debug_mon = 20 [mon.a] host = mdsnode addr = 192.168.40.107:6789 [mon.b] host = osdnode1 addr = 192.168.40.108:6789 [mon.c] host = osdnode2 addr = 192.168.40.148:6789
- 執行ceph-deploy mon create osdnode1 osdnode2
當添加完新的節點後,可以通過下面的方式來查詢結果
ceph quorum_status --format json-pretty
儲存以及檢索對象
Ceph用戶端通過最新的cluster map以及CRUSH演算法決定怎麼把一個對象映射到PG中,然後決定如何把該PG映射到OSD上
echo {Test-data} > testfile.txtrados put test-object-1 testfile.txt --pool=data
rados -p data ls
ceph osd map data test-object-1
輸出的資訊可能如下:
osdmap e537 pool 'data' (0) object 'test-object-1' -> pg 0.d1743484 (0.4) -> up [1,0] acting [1,0]
rados rm test-object-1 --pool=data
由於叢集節點的變化,位置的資訊可能會動態發生變化