首页 / 最佳实践 / 存储 / 配置 CephObject 分布式存储

配置 CephObject 分布式存储

CephObject 分布式存储提供标准 S3 接口,适用于大数据、备份归档、网盘等场景。本实践提供了配置分布式存储所需的操作指导,以及使用方式介绍。

分布式存储兼容的 API 及支持的 S3 特性参见 Ceph 官方文档

提示:本节涉及的所有终端操作,都需在存储所在集群的 控制节点 上执行。

准备分布式存储

分布式存储 页面中 创建存储服务 接入存储服务

提示

创建 Bucket

通过创建 ObjectBucketClaim 资源来创建 Bucket。一个 ObjectBucketClaim 资源对应一个 Bucket。

操作步骤

  1. 创建 Bucket。

    cat << EOF | kubectl create -f -
    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: ceph-object-bucket # 重复执行此命令创建 Bucket 时,需对应修改此处。
      namespace: rook-ceph
    spec:
      generateBucketName: ceph-bkt
      storageClassName: {分布式存储中,对象存储类的名称}
    EOF

    等待提示类似 …ceph-object-bucket created 信息时,操作成功。

  2. 查询 Bucket 名称。

    kubectl -n rook-ceph get objectbucketclaims {ObjectBucketClaim 名称,例如 ceph-object-bucket} -o yaml | grep bucketName | grep -v {} |  awk '{print $2}'

获取访问信息

包括用户凭证和连接信息。在 rook-ceph 命名空间下可查得对象存储的保密字典(与 ObjectBucketClaim 同名)以及内部路由。保密字典中记录了 Bucket 对应的用户及凭证,可用于上传、下载或删除对象。内部路由中记录了对象存储的 Endpoint 信息,可用于从集群内/外连接存储。

内部路由命名规则:

操作步骤

  1. 获取用户凭证。

    • AWS_ACCESS_KEY_ID
    kubectl -n rook-ceph get secret {保密字典名称,例如 ceph-object-bucket} -o yaml | grep AWS_ACCESS_KEY_ID | grep -v {} | awk '{print $2}' | base64 -d
    • AWS_SECRET_ACCESS_KEY
    kubectl -n rook-ceph get secret {保密字典名称,例如 ceph-object-bucket} -o yaml | grep AWS_SECRET_ACCESS_KEY | grep -v {} | awk '{print $2}' | base64 -d
  2. 获取连接信息。

    kubectl -n rook-ceph get svc/{内部路由名称,例如 rook-ceph-rgw-object}
    • Endpoint IP:如果用于集群内访问,则为通过 rook-ceph-rgw-{存储池名称} 查得的 CLUSTER-IP 取值;如果用于集群外访问,则为存储集群(ceph-cluster)中任一节点的 IP。节点信息可在 存储管理 > 分布式存储 页面的 存储设备 页签中查得。

    • Endpoint 端口号:以下回显示例中,748030176 端口将分别用于从集群内/外连接存储。

      NAME                            TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
      rook-ceph-rgw-object-external   NodePort   10.8.165.226   <none>        7480:30176/TCP   30h

应用场景一:用于 MySQL 备份

对象存储可作为 S3 存储供集群内/外的应用使用。例如开发人员可在备份 MySQL 时输入对象存储的访问信息(示例中模块 2 ),将数据备份到其中。

应用场景二:CLI 客户端调用对象存储

往 Bucket 中上传、下载或删除对象。

  1. 安装命令行工具 s3cmd。

    yum -y install s3cmd

    提示:如果提示 No package s3cmd available , 可尝试执行 yum install -y epel-release 后重新安装。

  2. 将访问信息填入 s3cmd 的配置文件。

    cat << EOF > ~/.s3cfg
    [default]
    access_key = {AWS_ACCESS_KEY_ID}
    secret_key = {AWS_SECRET_ACCESS_KEY}
    host_base = {Endpoint IP}:{Endpoint 端口号}
    host_bucket = {Endpoint IP}:{Endpoint 端口号}/{Bucket 名称}
    use_https = False
    EOF
  3. 上传、下载,或删除对象。

    # 获取所有的 bucket 信息
    s3cmd ls
    
    # 上传一个 object 文件到 bucket 中
    s3cmd put {object 文件} s3://{Bucket 名称}
    
    # 查看上传的 object
    s3cmd ls s3://{Bucket 名称}/
    
    # 下载 object
    s3cmd get s3://{Bucket 名称}/{object 文件}
    
    # 删除 object
    s3cmd rm s3://{Bucket 名称}/{object 文件}