---
title: Object Storage (S3, Ceph RGW)
description: Bán dung lượng S3 pay-as-you-go trên cụm Ceph: yêu cầu RGW, admin user và caps, cùng cách gắn backend vào zone trong NexCMP.
url: https://nexcmp.com/vi/docs/infrastructure/s3/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Object Storage (S3, Ceph RGW) {#object-storage-s3-ceph-rgw}

> **Vị trí trong admin:** Infrastructure › Cloud provider › Ceph S3 (RGW) (`/infra/s3`). Tài khoản: Services › Object Storage › S3 accounts (`/s3`). Bảng giá: Services › Object Storage › PAYG pricing (`/s3/policy`). Bật module trong System › Admin › License & updates.

## Chức năng {#what-it-does}

Khách hàng tạo tài khoản S3 từ portal và nhận access key. NexCMP tạo và xóa user tương ứng trên **Ceph RADOS Gateway (RGW) của bạn** thông qua RGW Admin Ops API, đọc mức sử dụng để tính cước và thanh toán theo hình thức pay-as-you-go: dung lượng lưu trữ vượt mức miễn phí theo mỗi GB/tháng (tính theo giờ) và lưu lượng tải xuống theo mỗi GB. Chiều tải lên hoàn toàn miễn phí.

Sử dụng tính năng này khi bạn vận hành một cụm Ceph kèm RGW và muốn kinh doanh Object Storage.

## Yêu cầu {#requirements}

| Hạng mục | Yêu cầu |
|---|---|
| Ceph | Cụm Ceph có ít nhất một daemon RGW và đã bật **Admin Ops API** (mặc định `rgw_enable_apis` bao gồm `admin`). |
| Admin user | Một RGW user dành riêng cho NexCMP với các capability liệt kê bên dưới. Không dùng user đang chứa dữ liệu của khách hàng. |
| Endpoint | S3 endpoint mà khách hàng sử dụng và Admin Ops endpoint. Cả hai đều được viết dưới dạng `https://host` **không có path, chỉ dùng port 443**, và phải phân giải về địa chỉ **public**: các địa chỉ loopback, link-local, multicast, private và unique-local sẽ bị từ chối. |
| Chứng chỉ | Chứng chỉ hợp lệ cho host của endpoint. |
| Usage log | Bật RGW usage logging (`rgw_enable_usage_log = true`) để usage API có thể báo cáo lưu lượng. |
| Zone | Một master zone đã tích chọn service **Object Storage (S3)**. Xem [Zones](https://nexcmp.com/vi/docs/infrastructure/zones/). |
| Storage | Dung lượng khả dụng trong Ceph đáp ứng các quota bạn bán. |
| Phụ thuộc vào | Module **Object Storage**. Lưu lượng tải xuống cũng được tính vào [Bandwidth](https://nexcmp.com/vi/docs/catalog/bandwidth/). |

## Chuẩn bị hạ tầng {#prepare-the-infrastructure}

Trên một Ceph admin node:

1. Tạo admin user và cấp các quyền hạn (capability) Admin Ops cần thiết:

   ```bash
   radosgw-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
   ```

   Sao chép `access_key` và `secret_key` từ kết quả trả về. Đó chính là **Admin access key** và **Admin secret key** trong NexCMP.

2. Bật usage log và khởi động lại các gateway:

   ```bash
   ceph config set client.rgw rgw_enable_usage_log true
   ```

3. Đặt các gateway phía sau HTTPS trên port 443 (dùng reverse proxy hoặc TLS tích hợp của RGW), cấu hình DNS và kiểm tra từ panel server:

   ```bash
   curl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/
   ```

   Bạn sẽ nhận được phản hồi XML từ S3 (HTTP 200 hoặc 403), không phải lỗi timeout.


## Kết nối trong NexCMP {#connect-in-nexcmp}

1. **Gán dịch vụ S3 cho một zone.** Mở **Infrastructure › Datacenter › Zone**, chỉnh sửa zone và tích chọn **Object Storage (S3)**. Chỉ các master zone có dịch vụ S3 mới xuất hiện trong biểu mẫu backend.


2. Mở **Infrastructure › Cloud provider › Ceph S3 (RGW)** và nhấp vào **Add backend**:

   | Trường | Giá trị ví dụ |
   |---|---|
   | Tên backend | `Ceph RGW 1` |
   | Zone | zone từ bước 1 |
   | Endpoint RGW Admin Ops | `https://s3.example.com` |
   | Endpoint S3 khách hàng | `https://s3.example.com` |
   | Region ký S3 | `default` |
   | Admin access key | `XXXX` |
   | Admin secret key | `XXXX` |
   | Kích hoạt | bật |
   | Enable sales (cần kiểm tra kết nối trước) | tạm thời **tắt** |
   | Lý do thay đổi | `initial setup` |

      ![Hộp thoại backend S3 với các endpoint mẫu, region và key đã được ẩn](https://nexcmp.com/vi/docs/images/infrastructure/s3-02-backend-dialog.webp)

3. Nhấp vào **OK** (lưu), sau đó nhấp **Check** ở hàng tương ứng. NexCMP sẽ gọi Admin Ops API bằng admin key. Thông báo **Ceph connection successful** và thẻ **Verified** cho biết kết nối thành công.


4. Nhấp vào **Edit**, chuyển **Enable sales** sang bật và lưu lại. NexCMP sẽ từ chối mở bán cho đến khi việc kiểm tra thành công.
5. Mở **Services › Object Storage › PAYG pricing** và thiết lập giá:

   | Trường | Ý nghĩa |
   |---|---|
   | Lưu trữ vượt mức miễn phí (VND/GB/tháng) | Giá lưu trữ; được tính theo giờ bằng giá tháng chia cho 730. |
   | Tải xuống (VND/GB) | Giá cho lưu lượng chiều ra. |
   | Tải lên (VND/GB) | Luôn bằng 0. |
   | Hạn mức miễn phí khi có Running VM (GB) | Cố định ở mức 100 GB cho mỗi tài khoản khi khách hàng có ít nhất một VM đang chạy, được chia sẻ giữa các tài khoản S3 của họ theo dung lượng. |
   | Hạn mức ghi nợ (VND) | Mức sử dụng chưa thanh toán tối đa được cho phép. |
   | Ngưỡng lập hóa đơn (VND) | Lượng sử dụng sẽ được gom vào một hóa đơn khi vượt qua số tiền này. |
   | Số dư tối thiểu để tạo S3 (VND) | Số dư ví cần để tạo tài khoản. |
   | Số tài khoản S3 tối đa cho mỗi khách hàng, Hạn ngạch kỹ thuật mặc định (GB) | Giới hạn áp dụng cho các tài khoản mới. |

      ![Biểu mẫu giá S3 PAYG](https://nexcmp.com/vi/docs/images/infrastructure/s3-04-pricing.webp)

   Giá S3 được nhập bằng VND. Các mức giá này được quy đổi để hiển thị và trừ tiền trong ví theo tỷ giá hiện hành; xem [Tiền tệ và tỷ giá hối đoái](https://nexcmp.com/vi/docs/catalog/currency-and-exchange-rates/).

## Kiểm tra {#verify}

1. **Check** hiển thị "Ceph connection successful".
2. Với tư cách là khách hàng (hoặc dùng tài khoản thử nghiệm), hãy tạo một tài khoản S3. Trên Ceph, `radosgw-admin user list` sẽ hiển thị user mới, và **S3 accounts** sẽ liệt kê tài khoản đó.
3. Tạo một bucket bằng bất kỳ S3 client nào bằng key của khách hàng tới customer endpoint. Tải lên một tệp.
4. Sau chu kỳ tính cước theo giờ tiếp theo, **S3 accounts** sẽ hiển thị mức sử dụng.

## Giới hạn và lưu ý {#limits-and-notes}

- Backend đã gắn liền với các tài khoản sẽ giữ nguyên **zone, endpoint và region**; để thay đổi chúng, hãy tạo một backend mới.
- Mỗi zone có thể có backend riêng; các tài khoản và backend sẽ được liên kết cố định với một zone.
- Hạn mức miễn phí và quy định "tải lên là miễn phí" là các quy tắc cố định, không phải tùy chọn.
- Các key được lưu trữ dưới dạng mã hóa; console chỉ hiển thị trường "leave blank to keep the current key". Cặp key luôn phải được nhập cùng nhau.
- Secret key của khách hàng chỉ hiển thị một lần duy nhất khi tạo và không bao giờ xuất hiện lại. Nếu mất key, bạn chỉ có thể thay thế bằng cách rotate key.

## Xử lý sự cố {#troubleshooting}

| Hiện tượng | Nguyên nhân | Cách khắc phục |
|---|---|---|
| "Endpoint requires HTTPS" | Endpoint đang dùng HTTP thông thường | Xuất bản HTTPS trên cổng 443. |
| "Cổng endpoint không được phép" | Cổng khác 443 | Sử dụng cổng HTTPS tiêu chuẩn. |
| "Địa chỉ endpoint không được phép" | Tên miền phân giải ra địa chỉ private, loopback, link-local hoặc unique-local | Sử dụng địa chỉ public. |
| "Endpoint chỉ được chứa giao thức và host" | URL có chứa path, query hoặc thông tin người dùng | Chỉ sử dụng `https://host`. |
| "Không thể phân giải endpoint" | Máy chủ panel không thể phân giải DNS | Sửa lại cấu hình DNS. |
| "Failed to connect to Ceph" | Lỗi tường lửa hoặc lỗi TLS | Kiểm tra bằng `curl` từ máy chủ panel. |
| "Ceph returned HTTP 403 AccessDenied" | Sai key hoặc thiếu quyền hạn (capabilities) | Kiểm tra lại các key và chạy lại `radosgw-admin caps add`. |
| "Invalid Ceph response" | Endpoint không phải là RGW Admin Ops API | Trỏ endpoint về RGW, không trỏ về trang web. |
| "Kiểm tra kết nối phải thành công trước khi bật bán hàng" | Bạn đã bật bán hàng trước khi chạy **Check** thành công | Chạy **Check**, sau đó mới kích hoạt bán hàng. |
| "Bắt buộc có đầy đủ các key mới cho endpoint" | Đã đổi endpoint nhưng không cung cấp đủ cả hai key | Nhập đồng thời cả access key và secret key. |
| "Backend đã có tài nguyên liên kết; hãy tạo backend mới để đổi zone hoặc endpoint" | Đã có tài khoản tồn tại trên backend này | Tạo một backend mới. |
| "Chọn master zone có dịch vụ S3" | Zone này không phải là master zone hoặc chưa bật dịch vụ S3 | Tích chọn **Object Storage (S3)** trên zone. |
| "Invalid region" | Region chứa các ký tự khác ngoài chữ cái, chữ số, `-` và `_` | Sử dụng `default` hoặc tên zonegroup RGW của bạn. |
| "Thiếu tóm tắt mức sử dụng Ceph; không tính phí" | Usage log đang bị tắt | Bật `rgw_enable_usage_log`. |
