Object Storage (S3, Ceph RGW)
**后台路径:**Infrastructure › Cloud provider › Ceph S3 (RGW)(
/infra/s3)。账户:Services › Object Storage › S3 accounts(/s3)。定价:Services › Object Storage › PAYG pricing(/s3/policy)。在System › Admin › License & updates下启用该模块。
功能说明
客户可从用户端创建S3账户并获取访问密钥。NexCMP通过RGW Admin Ops API在**您的Ceph RADOS Gateway (RGW)**上自动创建和删除对应用户,读取用量用于计费,并支持按量付费模式:超出免费额度的存储按每GB/月计费(按小时结算),下载流量按每GB计费。上传免费。
适用于运行带RGW的Ceph集群并希望转售对象存储的场景。
前提条件
| 项目 | 要求 |
|---|---|
| Ceph | 拥有至少一个RGW守护进程且启用了Admin Ops API的集群(默认配置rgw_enable_apis已包含admin)。 |
| Admin user | 供NexCMP使用的RGW用户,需具备下文列出的权限。请勿使用存储客户数据的用户。 |
| Endpoints | 供客户使用的S3端点以及Admin Ops端点。两者均写作https://host且不含路径,仅支持443端口,并且必须解析为公网地址:回环、链路本地、组播、私有及唯一本地地址均会被拒绝。 |
| Certificate | 端点主机名对应的有效证书。 |
| Usage log | 启用RGW用量日志(rgw_enable_usage_log = true),以便用量API能够上报流量数据。 |
| 区域 | 已勾选**Object Storage (S3)**服务的主区域。参见Zones。 |
| 存储 | Ceph中具备满足销售配额的可用容量。 |
| 依赖项 | Object Storage模块。下载流量也会计入Bandwidth。 |
准备基础设施
在Ceph管理节点上:
创建管理用户并赋予其所需的Admin Ops权限:
bashradosgw-admin user create --uid=nexcmp-admin --display-name="NexCMP admin" radosgw-admin caps add --uid=nexcmp-admin --caps="users=*;buckets=*;usage=read;metadata=read" radosgw-admin user info --uid=nexcmp-admin复制输出结果中的
access_key和secret_key。它们对应NexCMP中的Admin access key和Admin secret key。开启用量日志并重启网关:
bashceph config set client.rgw rgw_enable_usage_log true将网关部署在443端口的HTTPS之后(使用反向代理或RGW自带TLS),解析DNS域名,并从面板服务器进行测试:
bashcurl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/您应该收到S3 XML响应(HTTP 200或403),而不是超时。
在NexCMP中连接
为区域分配S3服务。打开Infrastructure › Datacenter › Zone,编辑该区域并勾选Object Storage (S3)。只有配置了S3服务的主区域才会出现在后端表单中。
打开Infrastructure › Cloud provider › Ceph S3 (RGW)并点击Add backend:
字段 示例值 Backend name Ceph RGW 1区域 第1步中的区域 RGW Admin Ops endpoint https://s3.example.com客户S3端点 https://s3.example.comS3签名区域 default管理员Access Key XXXX管理员Secret Key XXXX启用 开启 开启销售(需先完成连接测试) 暂设为关闭 变更原因 initial setup
点击OK(保存),然后点击该行中的Check。NexCMP会使用管理员密钥调用Admin Ops API。显示Ceph connection successful及Verified标签即表示连接成功。
点击Edit,开启Enable sales并保存。在检查成功前,NexCMP将拒绝开启销售。
打开Services › Object Storage › PAYG pricing并设置定价:
字段 说明 超出免费额度的存储(VND/GB/月) 存储价格;按小时计费,为月度价格除以730。 下载(VND/GB) 出方向流量价格。 上传(VND/GB) 始终为0。 运行中VM免费额度(GB) 当客户拥有至少一台运行中的VM时,每个账户固定为100 GB,并按容量分摊至其名下的各S3账户。 欠费额度(VND) 允许未结清使用的金额上限。 计费阈值(VND) 用量费用一旦超过此金额,即汇总生成一张账单。 创建S3的最低余额(VND) 创建账户所需的钱包余额。 每位客户最大S3账户数,默认技术配额(GB) 新账户的配额限制。 
S3价格以VND输入。展示和钱包扣费将按生效的汇率进行换算;参见货币与汇率。
验证
- Check显示“Ceph connection successful”。
- 作为客户(或使用测试账户)创建一个S3账户。在Ceph上,
radosgw-admin user list会显示一个新用户,并且S3 accounts中也会列出该用户。 - 使用客户的密钥通过任意S3客户端连接客户端点创建一个存储桶。然后上传一个文件。
- 在下一个小时的计费周期运行后,S3 accounts将显示用量。
限制与注意事项
- 已关联账户的后端将保留其zone、endpoint和region;如需更改,请创建新后端。
- 一个zone可以拥有独立的后端;账户与后端将永久绑定至该zone。
- 免费额度与“上传免费”为固定规则,不可配置。
- 密钥均加密存储;控制台仅显示“留空以保留当前密钥”字段。密钥对必须成对输入。
- 客户的Secret Key仅在创建时显示一次,后续不再显示。密钥丢失需通过轮换进行替换。
故障排查
| 症状 | 原因 | 解决办法 |
|---|---|---|
| “Endpoint requires HTTPS” | 端点使用了明文HTTP | 在443端口上发布HTTPS。 |
| “端点端口不允许” | 使用了443以外的端口 | 请使用标准HTTPS端口。 |
| “端点地址不被允许” | 域名解析为私网、环回、链路本地或唯一本地地址 | 请使用公网地址。 |
| “端点只能包含协议和主机” | URL包含路径、查询参数或用户信息 | 仅使用https://host。 |
| “解析端点失败” | 面板服务器无法解析DNS | 修复DNS。 |
| “连接Ceph失败” | 防火墙拦截或TLS错误 | 在面板服务器上使用curl进行测试。 |
| “Ceph返回HTTP 403 AccessDenied” | 密钥错误或缺少权限 | 检查密钥并重新运行radosgw-admin caps add。 |
| “Ceph响应无效” | 端点不是RGW Admin Ops API | 请将其指向RGW,而非网页。 |
| “启用销售前连接测试必须成功” | 在Check成功前开启了销售功能 | 先运行Check,再启用销售。 |
| “必须提供端点的所有新密钥” | 更改了端点但未同时提供两项密钥 | 请同时输入Access Key和Secret Key。 |
| “后端已关联资源;如需更改zone或端点,请创建新后端” | 该后端下已存在账户 | 创建新后端。 |
| “请选择启用了S3服务的master zone” | 该zone不是master zone或未启用S3服务 | 在该zone上勾选Object Storage (S3)。 |
| “无效的region” | region包含字母、数字、-和_以外的字符 | 使用default或您的RGW zonegroup名称。 |
| “Ceph用量汇总缺失;未计费” | 用量日志已禁用 | 启用rgw_enable_usage_log。 |