Ceph集群配置系列《六》RGW的使用

从firefly(v0.80)开始,Ceph对象网关在Civetweb上运行(已嵌入到ceph-radosgw守护进程)。 使用Civetweb简化了Ceph对象网关的安装和配置。

注意 要运行Ceph对象网关服务,应该有一个正在运行的Ceph存储集群,并且网关主机应该可以访问公共网络。

安装前的准备

对于 Ceph 对象网关,在生产环境下你需要开起 Civetweb 所使用的端口。

Note Civetweb默认运行在 7480 端口上。

安装CEPH对象网关(可选)

假设node4是对象网关节点,且未安装对象网关包。此时需进入管理服务器的工作目录,在node4上安装Ceph对象网关包。

ceph-common包是依赖项,所以ceph-deploy也会安装它。 请在管理服务器的工作目录中执行以下命令,将配置文件和管理密钥复制到网关节点:

# cd 管理服务器的工作目录
# ceph-deploy install --rgw <gateway-node1> [<gateway-node2> ...] 
# ceph-deploy admin <node-name>

例如:

# cd my_cluster
# ceph-deploy install --rgw node4
# ceph-deploy admin node4

新建网关实例

进入管理服务器的工作目录,在Ceph对象网关节点上创建Ceph对象网关的实例。 例如:

# ceph-deploy rgw create <gateway-node> 

例如:

# ceph-deploy rgw create node4

一旦网关运行,应该能够在端口7480上使用未经身份验证的请求访问它,如下所示:

http://gateway-node-ip:7480

如果网关实例工作正常,应该收到如下响应:

<?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>

更改默认端口

Civetweb默认在端口7480上运行。 要更改默认端口(例如,更改为端口80),请在管理服务器的工作目录中修改Ceph配置文件。 添加名为[client.rgw.]的部分,将替换为Ceph对象网关节点的短节点名称(即hostname -s)。

注意 从版本11.0.1开始,Ceph对象网关支持SSL。 有关如何设置它的信息,请参阅使用SSL的Civetweb

例如,节点名称是node4,请在[global]部分之后添加如下所示的部分:

[client.rgw.node4]
rgw_frontends = "civetweb port=80"

注意 确保在rgw_frontends键/值对中的port=之间不留空格。 [client.rgw.node4]节名称将Ceph配置文件的这一部分标识为配置Ceph存储集群客户端,其中客户端类型是Ceph对象网关(即rgw),并且实例的名称是node4。

进入管理服务器的工作目录,将更新后的配置文件推送到Ceph对象网关节点(以及其他Ceph节点):

# ceph-deploy --overwrite-conf config push <gateway-node> [<other-nodes>] 

例如:

 # ceph-deploy --overwrite-conf config push node1 node2 node3 node4

要使新端口设置生效,请重新启动Ceph对象网关:

# sudo systemctl restart ceph-radosgw@rgw.<gateway-node>

例如:

# sudo systemctl restart ceph-radosgw@rgw.node4
● ceph-radosgw@rgw.node4.service - Ceph rados gateway
   Loaded: loaded (/usr/lib/systemd/system/ceph-radosgw@.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-10-15 11:21:57 CST; 2h 46min ago
 Main PID: 11471 (radosgw)
   CGroup: /system.slice/system-ceph\x2dradosgw.slice/ceph-radosgw@rgw.node4.service
           └─11471 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node4 --setuser ceph --setgroup ceph

Oct 15 11:21:57 node4 systemd[1]: Started Ceph rados gateway.

使用网关

要使用RESTfull接口,首先要为S3接口创建一个初始Ceph对象网关用户。 然后,为Swift接口创建一个子用户。 然后,需要验证创建的用户是否能够访问网关。

创建S3用户

需要创建radosgw用户并授予访问权限。 命令man radosgw-admin将提供有关其它命令选项的信息。

要创建用户,请在网关节点上执行以下操作:

# sudo radosgw-admin user create --uid="hcl" --display-name="DS"

输出将如下所示:

{
    "user_id": "hcl",
    "display_name": "DS",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [
        {
            "user": "hcl",
            "access_key": "J78NGUX95WY1KQNSMH2D",
            "secret_key": "ATSjrtrAfCtGDxBGpq78EZBoqWWOo5M6gMPH2IQf"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

Note 其中keys->access_keykeys->secret_key 的值在访问时用来做验证。

重要 检查键的输出。 有时radosgw-admin会在access_key或secret_key中生成JSON转义字符\,而某些客户端不知道如何处理JSON转义字符。 补救措施包括删除JSON转义字符\,将字符串封装在引号中,重新生成密钥并确保它没有JSON转义字符或手动指定密钥和密钥。 此外,如果radosgw-admin在键中生成JSON转义字符\和正斜杠/,如\ /,则只删除JSON转义字符\。 不要删除正斜杠/,因为它是密钥中的有效字符。

创建SWIFT用户

如果需要这种访方式问,则需要创建Swift子用户。 创建Swift子用户是包含两个步骤。 第一步是创建子用户。 第二是创建密钥。

在网关主机上执行以下步骤:

创建Swift子用户:

# sudo radosgw-admin subuser create --uid=hcl --subuser=hcl:swift --access=full

输出将如下所示:

{
    "user_id": "hcl",
    "display_name": "DS",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [
        {
            "id": "hcl:swift",
            "permissions": "full-control"
        }
    ],
    "keys": [
        {
            "user": "hcl",
            "access_key": "J78NGUX95WY1KQNSMH2D",
            "secret_key": "ATSjrtrAfCtGDxBGpq78EZBoqWWOo5M6gMPH2IQf"
        }
    ],
    "swift_keys": [
        {
            "user": "hcl:swift",
            "secret_key": "7ffSApl4nOBwYYrJMZ6dpspiDFnjCbKx9KGu1pWr"
        }
    ],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

创建密钥:

# radosgw-admin key create --subuser=hcl:swift --key-type=swift --gen-secret

输出将如下所示:

{
    "user_id": "hcl",
    "display_name": "DS",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [
        {
            "id": "hcl:swift",
            "permissions": "full-control"
        }
    ],
    "keys": [
        {
            "user": "hcl",
            "access_key": "J78NGUX95WY1KQNSMH2D",
            "secret_key": "ATSjrtrAfCtGDxBGpq78EZBoqWWOo5M6gMPH2IQf"
        }
    ],
    "swift_keys": [
        {
            "user": "hcl:swift",
            "secret_key": "8WxLopB3izY7QkNfoPqYbuXnsWry6xbjYaoA60ww"
        }
    ],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

访问验证

S3 Browser是一种易于使用的 Amazon S3 免费客户端。它提供了一个简单的 Web 服务接口,可以使用绝大部分的对桶、对象进行操作管理的功能。

登录网址 http://S3Browser.com/download.php 进入下载界面,单击“Download”,下载安装文件。

连接RadosGW

  1. 在菜单中选择“Accounts > Add new Account”。

  2. 在弹出的对话框中,填写相关参数。

    Account Name:账户显示名称。

    Account Type:账户类型,此处选择S3 Compatible Storage。

    Rest Endpoint:RGW地址

    Signature Version:签名版本,选择v2

    Access key ID / Secret Access key:接入 RGW网关AK/SK。
    Encrypt Access Keys with a password:是否加密 AK,不要勾选此参数。

    Use secure transfer(SSL/TLS):是否使用安全传输,因未配置安全传输,不要勾选此参数。

  3. 单击右下角的“Add new account”,则保存账户;

  4. 在菜单中选择“Accounts > 账户名称”,会自动连接到RGW 账户中。
    连接成功后,将看到 RGW 账户下面对应的桶列表和对象列表。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值