一、部署监控节点 ceph-mon
启动监控节点需要下面这些内容:
1. unique id ==> fsid 集群唯一标识 id,区别集群
2. cluster name ==> 集群名(不可以有空格) 默认为 ceph, 多个集群时,集群名便于查看 ceph --cluster {cluster-name}).
,也可以简化命令行操作 3. monitor name ==> 监控实例的名字,普遍设置为监控实例所在主机的主机名,(推荐一个主机只有一个监控,最好不要有 osd 和其他监控)
4. monitor map ==> 启动时需要生成,需要 fsid, cluster name ,至少一个名字或者IP地址(大概意思时至少有一个节点吧)
5. administrator keyring ==> ceph cli 需要有 client.admin 用户,必须生成 admin 用户和 keyring 文件,添加 client.admin 用户 到 monitor keyring 中
来源: https://docs.ceph.com/docs/master/install/manual-deployment/
1. 安装必要的软件包
监控节点需要安装 ceph-common ceph-base ceph-mon librados2 等包 yum install ceph-common ceph-base ceph-mon librados2
2. 生成 fsid,修改配置文件
1 | # 这条命令会生成一个 uuid |
vim /etc/ceph/ceph.conf
修改配置文件如下
1 | [global] |
3. 生成 keyring 密钥,启动ceph-mon服务
3.1. 创建一个 keyring 文件
注意,这行命令中的 mon.
后面有一个 .
**,不要漏掉 这条命令会在 /tmp/ceph 下生成一个密钥文件,并且允许一切 ceph 一切权限 ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
3.2. 创建 administrator keyring
生成一个 administrator 最高管理员的密钥,并允许一切 ceph 权限 ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
3.3. 创建一个 bootstrap-osd keyring
生成一个允许启动 osd 的密钥 ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
3.4. 把密钥添加到 ceph.mon.keyring 中,以允许监控服务拥有上述用户权限
将admin 的密钥和bootstrap-osd 的密钥都导入到mon的密钥中 1
2ceph-authtool /tmp/ceph.mon.keyring --import-keyring etc/ceph/ceph.client.admin.keyring
ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
3.5. 修改 ceph.mon.keyring 文件所有者及所有者组(因为ceph以ceph用户运行,所以要保证有读取权限)
chown ceph:ceph /tmp/ceph.mon.keyring
3.6. 生成 monmap 文件
hostname 本机的主机名 ip-address 是本机的管理网地址 uuid 是 /etc/ceph/ceph.conf
中的fsid monmaptool --create --add {hostname} {ip-address} --fsid {uuid} /tmp/monmap
3.7. 创建一个 ceph-mon 工作目录
注意使用 sudo -u ceph
切换到 ceph用户执行,否则需要手动 chown -R ceph:ceph -p
参数
这里的 cluster-name
使用 ceph
, 如果有多个ceph集群,可以使用多个不同的集群名
hostname 即本机主机名
sudo -u ceph mkdir /var/lib/ceph/mon/{cluster-name}-{hostname}
示例: sudo -u ceph mkdir /var/lib/ceph/mon/ceph-cloud1
3.8. 创建新的 monitor fs
这里的集群名属于可选参数,因为一般都是一套集群,这里的集群名是 ceph
sudo -u ceph ceph-mon [--cluster {cluster-name}] --mkfs -i {hostname} --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
示例:
sudo -u ceph ceph-mon --cluster ceph --mkfs -i cloud1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
3.9. 启动 ceph-mon
systemctl start ceph-mon@cloud1
# cloud1 为主机名
3.10 验证 ceph-mon 是否正常
ceph -s 输出为: 有输出则表示 ceph-mon 服务已经启动 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17cluster:
id: a31d0c20-a7f0-43ab-92ca-8a4a7d88ef68
health: HEALTH_WARN
1 monitors have not enabled msgr2
services:
mon: 1 daemons, quorum cloud1 (age 15m)
mgr: no daemons active
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs: ceph mon enable-msgr2
使用 ceph -s
查看集群状态,不再提示要启用 msgr2 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16[root@cloud1 ~]# ceph -s
cluster:
id: a31d0c20-a7f0-43ab-92ca-8a4a7d88ef68
health: HEALTH_OK
services:
mon: 1 daemons, quorum cloud1 (age 2m)
mgr: cloud1(active, since 17h)
osd: 3 osds: 3 up (since 18h), 3 in (since 18h)
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 279 GiB / 282 GiB avail
pgs:
二、 部署管理节点 ceph-mgr
** 在每一台部署了 ceph-mon 的机器上,都应该安装 ceph-mgr 服务 **
首先安装包:
yum install ceph-common ceph-mon
1. 添加 mgr 权限
1 | #这里的 $hostname 使用一个名字代替,这里使用主机名 cloud1 |
输出类似如下:
1
2[mgr.cloud1]
key = AQCZ5QZfYap4HRAA97gVwodPmJB7dhZzbDYNpA==/var/lib/ceph/mgr/{cluster-name}-{$name}
文件中 cluster-name
一般是ceph
, $hostname 是主机名
2. 启动 mgr 服务
ceph-mgr -i ${hostname} # hostname 指主机名
PS: 关闭可以使用 pkill ceph-mgr
TODO: 貌似有部分高可用的功能
三、部署存储节点 ceph-osd
mon 服务和 mgr 服务都部署完成之后,就可以部署 osd 存储服务了,这个最好是和监控节点分离开,不要部署再同一台主机上
osd 的存储后端有两种: bluestore(据说性能比较好) filestore bluestore
==> 数据直接写入磁盘,磁盘上没有文件系统 filestore
==> 数据写入到磁盘中的文件系统中,数据直接以文件的形式存在
这里选用 bluestore
进行存储部署
首先安装软件包
yum install ceph-common ceph-base ceph-osd python3-rbd ceph-common
ceph 的客户端需要安装 ceph client packge
如果完整安装完成之后会有一个 ceph-volume
的命令
1 | # 这一步需要一个空的分区 |
回到监控节点: 运行 ceph -s
可以看到输出中已经有了 osd,这里在三台机器上部署了 ceph-volume,因此创建了三个 osd
1 | [root@cloud1 ceph]# ceph -s |
四、部署元数据服务器 ceph-mds
1. 创建 keyring 文件夹
这里的 id 不可以是纯数字,可以使用主机名,例如 cloud1
mkdir -p /var/lib/ceph/mds/{cluster-name}-{id}
示例: mkdir -p /var/lib/ceph/mds/ceph-cloud1
## 2. 创建 keyring 默认集群名是 ceph,id 是上面的文件夹名中 id sudo -s ceph ceph-authtool --create-keyring /var/lib/ceph/mds/{cluster-name}-{id}/keyring --gen-key -n mds.{id}
## 3. 将 keyring 添加到 mon 中 通过密钥认证监控节点
ceph auth add mds.{id} osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/{cluster}-{id}/keyring
4. 启动 ceph-mds 服务
需要保证 /var/lib/ceph/mds/{cluster}-{id}/keyring 文件的所有者和所有者组是 ceph:ceph,如果不是,可以通过 chown ceph:ceph /var/lib/ceph/mds/{cluster}-{id}/keyring
来修改
systemctl start ceph-mds@{id}
此处的 id 为上面的id,应该是主机名
示例: systemctl start ceph-mds@cloud1
或者使用手动方法(不推荐):
ceph-mds --cluster {cluster-name} -i {id} -m {mon-hostname}:{mon-port} [-f]
五、到此完成
** 下面内容不需要 ** ---------
六、创建 ceph fs system
5.1 创建 osd pool
一个 pool 存数据,一个存元数据
pgnum 推荐64 、128 TODO 含义??? > Generally, the metadata pool will have at most a few gigabytes of data. For this reason, a smaller PG count is usually recommended. 64 or 128 is commonly used in practice for large clusters.
1 | [root@cloud1 ~]# ceph osd pool create cephfs_data 64 |
5.2 创建 ceph fs
1 | # ceph fs new <fs_name> <metadata> <data> |
5.3 挂载 cephfs 到本地目录,测试使用
1 | #这里复制了 admin 的密钥 即 /etc/ceph/ceph.client.admin.keyring |
这样就可以通过 cephfs_dir 向cephfs中写文件了
5.4 验证安装
向 cephfs_dir 中写入文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23ceph -s
cluster:
id: a31d0c20-a7f0-43ab-92ca-8a4a7d88ef68
health: HEALTH_OK
services:
mon: 1 daemons, quorum cloud1 (age 32m)
mgr: cloud1(active, since 20h)
mds: cephfs:1 {0=mds0=up:active} 2 up:standby # 这里的 0=mds0=up:active 表示第一个 mds0 active 启用了,不是表示没有mds !!
osd: 3 osds: 3 up (since 21h), 3 in (since 21h)
data:
pools: 2 pools, 128 pgs
objects: 141 objects, 80 MiB
usage: 3.3 GiB used, 278 GiB / 282 GiB avail
pgs: 128 active+clean
io:
client: 525 KiB/s wr, 0 op/s rd, 0 op/s wr
六、ceph 测试性能
参考下面网址:
https://ivanzz1001.github.io/records/post/ceph/2017/07/28/ceph-benchmark
https://juejin.im/entry/5ab347daf265da238d509ed5
openstack 官方生产环境 ceph 集群架构 https://docs.openstack.org/openstack-ansible/latest/user/ceph/full-deploy.html