第四课 ceph基础学习-RGW高可用集群和集群测试
文章目录
第一节 RGW高可用部署
1.1 RGW 简介
- Ceph Object Gateway也称为对象网关 ,RGW支持S2协议和SWIFT协议对外提供对象存储,两者的对象访问方式均以HTTP方式访问。用户的对象经由RGW处理后,会最终存放在后端RADOS系统。
- 对象网关对外提供兼容S3和SWIFT的API
- 存储网关RGW负责客户端接入
- RADOS协议实现数据存储(Libradio是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFs都是通过librados访问的目前提供PHP、Ruby、Java、Python等支持)
- Monitor 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据
- OSD 存储数据
- RGW对外提供三种基础数据逻辑实体:
- 用户
- 存储桶
- 对象
- 用户。RGW兼容aws s3和OpenStack Switft,用户数据包含:
- 用户认证信息
- 访问控制权限信息: 包含操作访问权限和访问控制列表ACL
- 用户配额信息: 防止某些用户占用过多内存空间,根据用户实际情况分配存储空间
- 存储桶(bucket)。存储桶是对象的容器,为了方便管理和操作具有相同属性的一类对象而引起的一级管理单元。存储桶信息包含:
- 基础信息 (保存在对应RADOS对象的数据部分) RGW关注的信息,包含bucket配额信息 (最大对象数目和对大对象总和),bucket placement rule,bucket中搜索对象数目等等
- 扩展信息: (保存在对应RADOS对象的扩展属性)对RGW透明的一些信息,如用户自定义的元数据信息
- 对象。RGW中的应用对象对应RADOS对象。应用对象上传分整体上传和分段上传,不同的方式应用对象对应RADOS对象的方式不同
rgw_max_chunk_size
: 分块大小,RGW下发至RADOS集群的单个IO大小rgw_obj_stripe_size
: 条带大小class RGWObjManifest
: 管理应用对象和RADOS对象的对应关系
- 整体上传。
- 应用对象大小小于等于分块大小: 用户上传的对象只对应一个RADOS对象,该RADOS对象以应用对象名称命名,应用对象元数据也保存在该RADOS对象的扩展属性中
- 应用对象大小小于分块大小: 对应对象被分解一个大小等于分块大小的售对象,多个大小等于条带大小的中间对象,和一个大小小于等于条带大小的尾对象。首对象以应用对象命名,在RGW中将该对象称为head_obj,该对象的数据部分保存了应用对象前rgw_max_chunk_size字节的数据,扩展属性部分保存了应用对象的元数据信息和manifest信息。
- 分段上传。RGW依照条带大小将应用对象的每一个分段分成多个RADOS对象,每个分段的第一个 RADOS 对象名称为:
- “multipart” + “用户上传对象名称” + “分段上传ID” + “分段编号”
- 其余对象的名称为:“shadow” + “用户上传对象名称” + “分段上传ID” + “分段编号” +
“_” + “条带编号”
- 当所有的分段上传结束后,RGW 会从 data_extra_pool 中的分段上传临时对象中读取各个分段信息,主要是各分段的 manifest 信息,组成一个 manifest;然后生成一个新的 RADOS 对象,即 head obj,用来保存分段上传的应用对象的元数据信息和各分段的manifest。
- RGW安装。ceph-01已经有rgw,现在在ceph-02上安装rgw,并且在ceph-01和ceph-02节点同时安装keeplived和haproxy或者nginx进行代理rgw
# 通过ceph-deploy创建rgw节点,这里实际上可以参考创建集群的步骤
ceph-deploy rgw create ceph-02
# 修改端口
[client.rgw.ceph-02]
rgw_frontends = "civetweb port=80"