一 基础准备
参考《002.Ceph 安装部署》文档部署一个基础集群.
二 扩展集群
2.1 扩展架构
需求: 添加 Ceph 元数据服务器 node1. 然后添加 Ceph Monitor 和 Ceph Manager node2,node3 以提高可靠性和可用性.
2.2 添加元数据 (metadata) 服务器
1 [manager@deploy my-cluster]$ ceph-deploy mds create node1
提示: 要使用 CephFS, 您至少需要一个元数据服务器.
2.3 添加监视 (Monitor) 服务器
- [manager@deploy my-cluster]$ ceph-deploy mon add node2
- [manager@deploy my-cluster]$ ceph-deploy mon add node3
- [root@node1 ~]# ceph quorum_status --format JSON-pretty # 查看仲裁 (quorum) 状态信息
提示: 若出现如图所示报错, 需要在 ceph.conf 中添加 Public_network, 并重新推相关配置文件, 操作如下:
- [manager@deploy my-cluster]$ vi ceph.conf
- [global]
- #......
- public_network = 172.24.8.0/24
- [manager@deploy my-cluster]$ ceph-deploy --overwrite-conf mon add node2
- [manager@deploy my-cluster]$ ceph-deploy --overwrite-conf mon add node3
提示: Ceph 存储集群需要至少运行一个 Ceph Monitor 和 Ceph Manager. 为了实现高可用性, Ceph 存储集群通常运行多个 Ceph 监视器, 因此单个 Ceph 监视器的故障不会导致 Ceph 存储集群崩溃. Ceph 使用 Paxos 算法, 该算法需要大多数监视器 (即, 大于 N/2, 其中 N 是监视器的数量) 才能形成法定人数. 虽然这不是必需的, 但监视器的数量往往更好.
2.4 添加管理员
- [manager@deploy my-cluster]$ ceph-deploy mgr create node2 node3
- [manager@deploy my-cluster]$ SSH node1 sudo ceph -s # 查看验证
提示: Ceph Manager 守护进程以 active/standby 模式运行. 部署其他管理器守护程序可确保在一个守护程序或主机发生故障时, 另一个守护程序或主机可以在不中断服务的情况下接管.
2.5 添加 RGW
1 [manager@deploy my-cluster]$ ceph-deploy rgw create node1
提示: 要使用 Ceph 的 Ceph 对象网关组件, 必须部署 RGW 实例;
默认情况下, RGW 实例将侦听端口 7480. 可以通过在运行 RGW 的节点上编辑 ceph.conf 来更改此设置.
三 客户端存储示例
3.1 创建 pool
- [manager@deploy my-cluster]$ SSH node1 sudo ceph osd pool create mytest 64
- [manager@deploy my-cluster]$ SSH node1 sudo rados lspools
- [manager@deploy my-cluster]$ SSH node1 sudo ceph osd lspools
- [manager@deploy my-cluster]$ SSH node1 sudo ceph osd dump | grep pool
提示: 以上三种可以查看已经存在的 pool 信息, 第三种方式查看的结果最为详细.
3.2 客户端模拟
- [root@node3 ~]# echo 'This is my test file!'>> test.txt # 创建模拟文件
- [root@node3 ~]# rados put test-object-1 test.txt --pool=mytest
3.3 查看确认
- [manager@deploy my-cluster]$ SSH node1 sudo rados -p mytest ls # 查看存储的对
- test-object-1
3.4 定位对象
- [manager@deploy my-cluster]$ SSH node1 sudo ceph osd map mytest test-object-1 # 定位对象到相应的归置组
- osdmap e30 pool 'mytest' (5) object 'test-object-1' -> pg 5.74dc35e2 (5.22) -> up ([2,1,0], p2) acting ([2,1,0], p2)
提示: Ceph 客户端检出最新集群运行图, 用 CRUSH 算法计算出如何把对象映射到归置组, 然后动态地计算如何把归置组分配到 OSD . 要定位对象, 只需要对象名和存储池名字即可.
3.5 删除对象
1 [manager@deploy my-cluster]$ SSH node1 sudo rados rm test-object-1 --pool=mytest
3.6 删除 pool
- [manager@deploy my-cluster]$ SSH node1 sudo ceph osd pool delete mytest
- [manager@deploy my-cluster]$ SSH node1 sudo ceph osd pool delete mytest mytest --yes-i-really-really-mean-it
- pool 'mytest' removed
提示: 若出现以下报错: 由于删除 pool 时, pool 名字要输入两次同时要加入 --yes-i-really-really-mean-it 参数, 且需要在 ceph.conf 配置中开启允许删除, 操作如下:
- 1 [manager@deploy my-cluster]$ vi ceph.conf
- 2 [global]
- 3 #......
- 4 [mon]
- 5 mon allow pool delete = true #添加此行
- 6 [manager@deploy my-cluster]$ ceph-deploy --overwrite-conf config push node1 node2 node3 #重推一次配置文件
- 8 [root@node1 ~]# systemctl restart ceph-mon.target # 所有节点均需要重启一次该服务
来源: https://www.cnblogs.com/itzgr/p/10281502.html