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 | 少なくとも1つのRGWデーモンを持ち、Admin Ops APIが有効化されたクラスター(デフォルトのrgw_enable_apisにはadminが含まれます)。 |
| 管理者ユーザー | 以下にリストする権限を持つ、NexCMP用のRGWユーザー。お客様のデータを所有するユーザーは使用しないでください。 |
| エンドポイント | お客様が使用するS3エンドポイントと、Admin Opsエンドポイント。両方ともhttps://host形式で記述し、パスなし、ポート443のみとし、パブリックアドレスに名前解決される必要があります。ループバック、リンクローカル、マルチキャスト、プライベート、およびユニークローカルアドレスは拒否されます。 |
| 証明書 | エンドポイントホスト用の有効な証明書。 |
| 使用量ログ | 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 で割った値として 1 時間ごとに請求されます。 ダウンロード(VND/GB) 下りトラフィックの料金。 アップロード(VND/GB) 常に 0。 稼働中 VM ありの無料枠(GB) 顧客が少なくとも 1 台の稼働中 VM を保有している間、アカウントあたり 100 GB に固定され、サイズごとに S3 アカウント間で共有されます。 債務限度額(VND) 許可される未払い利用料の上限。 請求しきい値(VND) この金額を超えると、利用料が 1 つの請求書にまとめられます。 S3 作成に必要な最低残高(VND) アカウント作成に必要なウォレット残高。 顧客あたりの最大 S3 アカウント数、デフォルトのテクニカルクォータ(GB) 新規アカウントの制限。 
S3 の価格は VND で入力されます。表示およびウォレットの課金時には、適用される為替レートで換算されます。Currency and exchange rates を参照してください。
確認
- Check で「Ceph connection successful」が表示されます。
- 顧客として(またはテストアカウントを使用して)S3 アカウントを作成します。Ceph 側では
radosgw-admin user listに新しいユーザーが表示され、NexCMP では S3 accounts にリストされます。 - 顧客のエンドポイントに対して顧客のキーを使用し、任意の S3 クライアントでバケットを作成します。ファイルをアップロードします。
- 次回の 1 時間ごとの課金処理の後、S3 accounts に利用状況が表示されます。
制限と注意点
- すでにアカウントが紐付けられているバックエンドは、ゾーン、エンドポイント、リージョンが維持されます。これらを変更するには、新しいバックエンドを作成してください。
- 1 つのゾーンに独自のバックエンドを持たせることができます。アカウントとバックエンドはゾーンに永続的に紐付けられます。
- 無料枠と「アップロード無料」はオプションではなく、固定のルールです。
- キーは暗号化して保存されます。コンソールには「現在のキーを維持する場合は空欄のままにする」というフィールドのみが表示されます。キーペアは常にセットで入力します。
- 顧客のシークレットキーは作成時に一度だけ表示され、二度と表示されません。キーを紛失した場合は、ローテーションによって置き換えます。
トラブルシューティング
| 症状 | 原因 | 対処法 |
|---|---|---|
| "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 を有効にしてください。 |