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管理員存取金鑰 XXXX管理員祕密金鑰 XXXX啟用 on 啟用銷售(需先進行連線測試) off(目前) 變更原因 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。 執行中虛擬機器之免費額度(GB) 當客戶擁有至少一台執行中的虛擬機器時,每個帳號固定為100 GB,依容量在其S3帳號之間共用。 欠費額度上限(VND) 允許的未付使用費金額。 計費門檻(VND) 使用量達到此金額後將合併為一張帳單。 建立S3所需的最低餘額(VND) 建立帳號所需的錢包餘額。 每個客戶的S3帳號上限,預設技術配額(GB) 新帳號的限制。 
S3價格以VND輸入。顯示與錢包扣款時會依當時的匯率進行換算;請參閱Currency and exchange rates。
驗證
- Check顯示「Ceph connection successful」。
- 以客戶身分(或使用測試帳號)建立S3帳號。在Ceph上,
radosgw-admin user list會顯示新使用者,且S3 accounts會列出該帳號。 - 使用任何S3客戶端,以客戶的金鑰對應客戶端點建立值區(bucket)。上傳檔案。
- 在下一個小時的計費時間點後,S3 accounts會顯示使用量。
限制與注意事項
- 已附加帳號的後端會保留其區域、端點與區域設定;若要變更,請建立新的後端。
- 單一區域可擁有專屬後端;帳號與後端一律永久繫結至特定區域。
- 免費額度與「上傳免費」為固定規則,而非選項。
- 金鑰經過加密儲存;控制台僅顯示「留空以保留目前金鑰」欄位。金鑰對一律必須同時輸入。
- 客戶的祕密金鑰僅在建立時顯示一次,之後不再顯示。若金鑰遺失,需透過輪替(rotating)來取代。
故障排除
| 症狀 | 原因 | 修正方式 |
|---|---|---|
| "Endpoint requires HTTPS" | 端點使用明文HTTP | 在連接埠443上發布HTTPS。 |
| "端點連接埠不允許" | 非443的連接埠 | 請使用標準HTTPS連接埠。 |
| 「端點位址不允許」 | 名稱解析為私有、迴圈、連結本地或獨特本地位址 | 請使用公開位址。 |
| 「端點僅能包含通訊協定與主機」 | URL 包含路徑、查詢或使用者資訊 | 僅使用 https://host。 |
| 「無法解析端點」 | 面板伺服器無法進行 DNS 解析 | 修正 DNS。 |
| "Failed to connect to Ceph" | 防火牆或 TLS 錯誤 | 從面板伺服器以 curl 進行測試。 |
| "Ceph returned HTTP 403 AccessDenied" | 金鑰錯誤或缺少權能 | 檢查金鑰並重新執行 radosgw-admin caps add。 |
| "Invalid Ceph response" | 端點不是 RGW Admin Ops API | 請將其指向 RGW,而非網頁。 |
| 「啟用銷售前必須先通過連線測試」 | 您在成功執行 Check 之前就開啟了銷售 | 執行 Check,然後啟用銷售。 |
| 「端點的所有新金鑰皆為必填」 | 變更端點卻未提供兩把金鑰 | 請同時輸入存取金鑰與密鑰。 |
| 「後端已有附加資源;請建立新後端以變更區域或端點」 | 此後端上存在帳號 | 建立新的後端。 |
| 「選取具有 S3 服務的主區域」 | 該區域不是主區域或未包含 S3 服務 | 勾選該區域上的 Object Storage (S3)。 |
| "Invalid region" | 區域包含字母、數字、- 與 _ 以外的字元 | 請使用 default 或您的 RGW 區域群組名稱。 |
| 「缺少 Ceph 使用量摘要;未計費」 | 用量記錄已停用 | 啟用 rgw_enable_usage_log。 |