1. 程式人生 > >CentOS 7.2 安裝部署 Ceph 及添加 PG

CentOS 7.2 安裝部署 Ceph 及添加 PG

狀況 告警 通過 健康狀況 pub sort network check 多文件

前期準備:
準備三臺CentOS 7.2系統,每臺機器三塊硬盤,關閉selinux,關閉iptables,做好時間同步,做好本地域名解析,並對每臺機器做互信。
192.168.10.101 ceph-node1
192.168.10.22 ceph-node2
192.168.10.33 ceph-node3
每臺機器上有三個osd,整個集群共九個osd。


在每臺機器上 /etc/yum.repos.d/目錄下創建 ceph.repo然後寫入以下內容

[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/$basearch

enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.163.com/ceph/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.163.com/ceph/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages

baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.163.com/ceph/keys/release.asc
priority=1


在ceph-node1創建文件夾,用ceph-deploy安裝時,會生成很多文件。
mkidr /home/ceph && cd /home/ceph

安裝ceph-depoly
yum install -y ceph-deploy

創建ceph集群
ceph-depoly new ceph-node1 ceph-node2 ceph-node3

ceph初始默認三副本,可以更改副本數。在生成的ceph.conf中加入(寫入[global] 段下)
osd pool default size = 2

如果有多個網卡,可以把 public network 寫入 ceph 配置文件的 [global] 段下
public network = 192.168.10.0/24

安裝ceph
ceph-deploy install ceph-node1 ceph-node2 ceph-node3

向ceph集群上報osd
ceph-deploy osd prepare ceph-node1:/dev/sdb ceph-node1:/dev/sdc ceph-node1:/dev/sdd ceph-node2:/dev/sdb ceph-node2:/dev/sdc ceph-node2:/dev/sdd ceph-node3:/dev/sdb ceph-node3:/dev/sdc ceph-node3:/dev/sdd

激活集群中的osd
ceph-deploy osd activate ceph-node1:/dev/sdb ceph-node1:/dev/sdc ceph-node1:/dev/sdd ceph-node2:/dev/sdb ceph-node2:/dev/sdc ceph-node2:/dev/sdd ceph-node3:/dev/sdb ceph-node3:/dev/sdc ceph-node3:/dev/sdd

ceph -s 查看健康狀況 創建完成!!!


[root@ceph-node1 local]# ceph -s
cluster dc045fd8-0851-4052-8791-25cb6e5b3e8e
health HEALTH_WARN
too few PGs per OSD (21 < min 30)
monmap e1: 3 mons at {ceph-node1=192.168.10.101:6789/0,ceph-node2=192.168.10.22:6789/0,ceph-node3=192.168.10.33:6789/0}
election epoch 8, quorum 0,1,2 ceph-node2,ceph-node3,ceph-node1
osdmap e44: 9 osds: 9 up, 9 in
flags sortbitwise,require_jewel_osds
pgmap v113: 64 pgs, 1 pools, 0 bytes data, 0 objects
971 MB used, 45009 MB / 45980 MB avail
64 active+clean

由於改集群是新建集群,只有一個池,由於pg過少導致每個osd上的pg未達到配置文件的上線所以存在告警

查看某個池的pg個數 <rbd池>
ceph osd pool get rbd pg_num
pg_num: 64

pgs為64,因為是3副本的配置,所以當有9個osd的時候,每個osd上均分了64/9 *3=21個pgs,也就是出現了如上的告警 小於最小配置30個

修改rbd池的pg個數
ceph osd pool set rbd pg_num 256
set pool 0 pg_num to 256

gpg的個數要與pg個數一致 修改rbd池的pgp個數
sudo ceph osd pool set rbd pgp_num 256
set pool 0 pgp_num to 256
修改完成等待集群同步,故障解決。

註意:生產環境不可以批量添加pg,pgp。要沒添加一個,等待同步完成再添加下一個pg。

每個池添加pg個數根據如下公式計算:

{(每個OSD的目標PG)x(OSD#)x(%數據)}/(尺寸)
1.每個OSD的目標PG約100個
2.如果上述計算的值小於(OSD#)/(大小)的值,則將該值更新為(OSD#)/(大小)的值。這是為了通過為每個池的每個OSD分配至少一個主要或輔助PG來確保均勻的負載/數據分發。
3.然後將輸出值四舍五入到最接近的2的冪。
提示:最接近的2的冪提供了CRUSH算法效率的微小改進。
4.如果最接近的2的冪次方比原始值低25%以上,則使用下一個更高的2的冪。

CentOS 7.2 安裝部署 Ceph 及添加 PG