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 포함). |
| 관리자 사용자 | 아래 기능이 포함된 NexCMP용 RGW 사용자입니다. 고객 데이터를 소유한 사용자는 사용하지 마세요. |
| 엔드포인트 | 고객이 사용하는 S3 엔드포인트 및 Admin Ops 엔드포인트. 둘 다 https://host 형식으로 작성하되 경로 없이 포트 443만 사용해야 하며, 공인 주소로 확인되어야 합니다. 루프백, 링크 로컬, 멀티캐스트, 사설 및 고유 로컬 주소는 거부됩니다. |
| 인증서 | 엔드포인트 호스트용 유효한 인증서. |
| 사용량 로그 | 사용량 API가 트래픽을 보고할 수 있도록 RGW 사용량 로깅 켜기(rgw_enable_usage_log = true). |
| 영역 | 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를 클릭합니다:
필드 Example value 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입니다. 실행 중인 VM이 있는 무료 티어 (GB) 고객이 실행 중인 VM을 하나 이상 보유하는 동안 계정당 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 클라이언트로 버킷을 생성합니다. 파일을 업로드합니다.
- 다음 시간 정산 틱 이후, S3 accounts에 사용량이 표시됩니다.
제한 사항 및 참고 사항
- 이미 계정이 연결된 백엔드는 존, 엔드포인트 및 리전이 유지되며, 변경하려면 새 백엔드를 생성해야 합니다.
- 하나의 존에는 자체 백엔드를 가질 수 있으며, 계정과 백엔드는 영구적으로 존에 고정됩니다.
- 무료 티어와 "업로드 무료"는 옵션이 아닌 고정 규칙입니다.
- 키는 암호화되어 저장되며 콘솔에는 "현재 키를 유지하려면 비워두십시오" 필드만 표시됩니다. 키 쌍은 항상 함께 입력됩니다.
- 고객의 시크릿 키는 생성 시 한 번만 표시되며 다시는 표시되지 않습니다. 분실된 키는 회전(rotating)하여 교체합니다.
Troubleshooting
| 증상 | 원인 | 해결 방법 |
|---|---|---|
| "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을(를) 활성화하세요. |