Ceph集群擴容
一個基本的集群啟動並開始運行后,下一步就是擴展集群
做以下實驗:
1.在node4(192.168.10.14)上添加一個 OSD 守護進程
2.分別在 node2 和 node3 上添加 Ceph Monitor ,以形成 Monitors 的法定人數
實驗:為ceph集群添加OSD
一.准備工作
在所有節點上修改解析記錄,加入node4
在node4節點上:
配置時間與管理節點admin同步
配置好yum源並安裝好ceph軟件
掛載好一塊磁盤
在管理節點admin上:
把用戶公鑰傳到node4上
二.配置集群加入OSD
在管理節點上操作:
[root@node4 ~]# mkfs.xfs /dev/sdb
[root@node4 ~]# mkdir /mnt/osd4
[root@node4 ~]# mount /dev/sdb /mnt/osd4/
[root@admin ~]# cd /etc/ceph/
[root@admin ceph-cluster]# ceph-deploy osd prepare node4:/mnt/osd4 #准備osd
[root@kafka3 ceph]# chown -R ceph.ceph /mnt/osd4 #賦予權限
[root@admin ceph-cluster]# ceph-deploy osd activate node4:/mnt/osd4 #激活osd
一旦你新加了 OSD ,,Ceph 集群就開始重均衡,把歸置組遷移到新 OSD 。可以用下面的 ceph 命令觀察此過程:
[root@admin ceph-cluster]# ceph -w
=====================================================================
刪除OSD
1.把OSD踢出集群
刪除 OSD 前,它通常是 up 且 in 的,要先把它踢出集群,以使 Ceph 啟動重新均衡、把數據拷貝到其他 OSD
ceph osd out {osd-num}
例:
[root@admin ceph-cluster]# ceph osd out 2
2.觀察數據遷移
一旦把 OSD 踢出( out )集群, Ceph 就會開始重新均衡集群、把歸置組遷出將刪除的 OSD 。你可以用
ceph 工具觀察此過程
ceph -w
你會看到歸置組狀態從 active+clean 變為 active, some degraded objects 、遷移完成后最終回到 active+clean 狀態
3.停止OSD進程
把 OSD 踢出集群后,它可能仍在運行,就是說其狀態為 up 且 out 。刪除前要先停止 OSD 進程
/etc/init.d/ceph stop osd.{osd-num}
-----------------------------------------------------
這是el6中的操作方法,7中可kill進程號, 或用systemd結束
systemctl stop ceph-osd@4
結束進程后用ceph osd tree可以看到osd狀態已經由up變成了down
4.刪除 OSD
此步驟依次把一個 OSD 移出集群 CRUSH 圖、刪除認證密鑰、刪除 OSD 圖條目、刪除 ceph.conf 條目。
如果主機有多個硬盤,每個硬盤對應的 OSD 都得重復此步驟
1) ceph osd crush remove {name} #刪除 CRUSH 圖的對應 OSD 條目,它就不再接收數據了,name可用ceph osd crush tree查看
例:
[root@admin ceph-cluster]# ceph osd crush remove osd.2
2)刪除 OSD 認證密鑰: ceph auth del osd.{osd-num}
例:
[root@admin ceph-cluster]# ceph auth del osd.2
3)刪除 OSD: ceph osd rm {osd-num}
例:
[root@admin ceph-cluster]# ceph osd rm 2
=======================================================
有時候,(通常是只有幾台主機的“小”集群,比如小型測試集群)拿出( out )某個 OSD 可能會使 CRUSH 進入臨界狀態,這時某些 PG 一直卡在 active+remapped 狀態.如果遇到了這種情況,你應該把此 OSD 標記為 in :
ceph osd in {osd-num}
等回到最初的狀態后,把它的權重設置為 0 ,而不是標記為 out ,用此命令:
ceph osd crush reweight osd.{osd-num} 0
執行后,你可以觀察數據遷移過程,應該可以正常結束。把某一 OSD 標記為 out 和權重改為 0 的區別在於,前者,包含此 OSD 的桶、其權重沒變;而后一種情況下,桶的權重變了(降低了此 OSD 的權重)。某些情況下, reweight 命令更適合“小”集群。
實驗:為ceph集群添加monitor
Ceph 存儲集群需要至少一個 Monitor 才能運行。
為達到高可用,,型的 Ceph 存儲集群會運行多個 Monitors,這樣在單個 Monitor 失敗時不會影響 Ceph 存儲集群的可用性。
Ceph 使用 PASOX 算法,此算法要求有多半 monitors(即 1 、 2:3 、 3:4 、 3:5 、 4:6 等 )形成法定人數
下面我們要在node1和node2上添加monitor,以形成monitor的法定人數:
1.修改配置文件:
[root@admin ceph]# vim ceph.conf

2.新增monitor成員:
[root@admin ceph]# ceph-deploy --overwrite-conf mon add node1
[root@admin ceph]# ceph-deploy --overwrite-conf mon add node2
或 ceph-deploy mon create {host-name [host-name]...}
注: 在一主機上新增監視器時,如果它不是由 ceph-deploy new 命令所定義的,那就必須把 public network 加入 ceph.conf 配置文件
3.添加完成后查看:
[root@admin ceph]# ceph quorum_status --format json-pretty

-------------------------------------------------------------------------------------------------------------------
刪除monitor
ceph-deploy mon destroy {host-name [host-name]...}