从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_key
和keys->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
-
在菜单中选择“Accounts > Add new Account”。
-
在弹出的对话框中,填写相关参数。
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):是否使用安全传输,因未配置安全传输,不要勾选此参数。
-
单击右下角的“Add new account”,则保存账户;
-
在菜单中选择“Accounts > 账户名称”,会自动连接到RGW 账户中。
连接成功后,将看到 RGW 账户下面对应的桶列表和对象列表。