Ceph 对象存储快速入门

从 firefly(v0.80)起,Ceph 存储集群显著地简化了 Ceph 对象网关的安装和配置。网关守护进程内嵌了 Civetweb,无需额外安装 web 服务器或配置 FastCGI。此外,可以直接 使用 ceph-deploy 来安装网关软件包、生成密钥、配置数据目录以及创建一个网关实例。

Tip

Civetweb 默认使用 7480 端口。要么直接打开 7480 端口,要么在你的 Ceph 配置文件中设置首选端口(例如 80 端口)。

要使用 Ceph 对象网关,请执行下列步骤:

安装 Ceph 对象网关

  1. client-node 上执行预安装步骤。如果你打算使用 Civetweb 的默认端口 7480 ,必须通过 firewall-cmdiptables 来打开它。详情见预检

  2. 从管理节点的工作目录,在 client-node 上安装 Ceph 对象网关软件包。例如:

    ceph-deploy install --rgw <client-node> [<client-node> ...]

新建 Ceph 对象网关实例

从管理节点的工作目录,在 client-node 上新建一个 Ceph 对象网关实例。例如:

ceph-deploy rgw create

一旦网关开始运行,你就可以通过 7480 端口来访问它(比如 http://client-node:7480 )。

配置 Ceph 对象网关实例

  1. 通过修改 Ceph 配置文件可以更改默认端口(比如改成 80 )。增加名为 [client.rgw.<client-node>] 的小节,把 <client-node> 替换成你自己 Ceph 客户端节点的短名称(即 hostname -s 的输出)。例如,你的节点名就是 client-node ,在 [global] 节后增加一个类似于下面的小节:

    [client.rgw.client-node]
    rgw_frontends = "civetweb port=80"
    

    Note

    确保在 rgw_frontends 键值对的 port=<port-number> 中没有空格。

    Important

    如果你打算使用 80 端口,确保 Apache 服务器没有在使用该端口,否则会和 Civetweb 冲突。出现这种情况时我们建议移除 Apache 服务。

  2. 为了使新端口的设置生效,需要重启 Ceph 对象网关。在 RHEL 7 和 Fedora 上 ,执行:

    sudo systemctl restart ceph-radosgw.service

    在 RHEL 6 和 Ubuntu 上,执行:

    sudo service radosgw restart id=rgw.<short-hostname>
  3. 最后,检查节点的防火墙,确保你所选用的端口(例如 80 端口)处于开放状态。如果没有,把该端口加入放行规则并重载防火墙的配置。例如:

    sudo firewall-cmd --list-all sudo firewall-cmd --zone=public --add-port
    80/tcp --permanent
    sudo firewall-cmd --reload

    关于使用 firewall-cmdiptables 配置防火墙的详细信息,请参阅预检

    你应该可以生成一个未授权的请求,并收到应答。例如,一个如下不带参数的请求:

    http://<client-node>:80

    应该收到这样的应答:

    <?xml version="1.0" encoding="UTF-8"?>
    <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
      <Owner>
        <ID>anonymous</ID>
        <DisplayName></DisplayName>
      </Owner>
      <Buckets>
      </Buckets>
    </ListAllMyBucketsResult>

    更多管理和 API 细节请参阅 Ceph 对象网关的配置 指南。