---
title: Object Storage (S3, Ceph RGW)
description: Продажа S3-хранилища Ceph с оплатой за использование: требования к RGW, администратор, права доступа и подключение бэкенда к зоне в NexCMP.
url: https://nexcmp.com/ru/docs/infrastructure/s3/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Object Storage (S3, Ceph RGW) {#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.

## Назначение {#what-it-does}

Клиенты создают аккаунты S3 на портале и получают ключи доступа. NexCMP создает и удаляет соответствующих пользователей на **вашем Ceph RADOS Gateway (RGW)** через RGW Admin Ops API, считывает метрики использования для биллинга и рассчитывает оплату по модели pay-as-you-go: хранилище сверх бесплатного лимита за ГБ в месяц (с почасовым списанием) и исходящий трафик за ГБ. Входящий трафик бесплатен.

Используйте эту интеграцию, если у вас развернут кластер Ceph с RGW и вы хотите перепродавать объектное хранилище.

## Требования {#requirements}

| Параметр | Требование |
|---|---|
| Ceph | Кластер хотя бы с одним демоном RGW и включенным **Admin Ops API** (значение по умолчанию `rgw_enable_apis` включает `admin`). |
| Пользователь-администратор | Пользователь RGW для NexCMP с указанными ниже правами доступа. Не используйте пользователя, которому принадлежат данные клиентов. |
| Эндпоинты | Эндпоинт S3 для клиентов и эндпоинт Admin Ops. Оба указываются как `https://host` **без пути, только порт 443** и должны разрешаться в **публичный** адрес: loopback-, link-local-, multicast-, частные и unique-local адреса отклоняются. |
| Сертификат | Действующий сертификат для хоста эндпоинта. |
| Журнал использования | Включенное ведение журнала использования RGW (`rgw_enable_usage_log = true`), чтобы usage API мог передавать данные о трафике. |
| Зона | Мастер-зона с отмеченной услугой **Object Storage (S3)**. См. [Zones](https://nexcmp.com/ru/docs/infrastructure/zones/). |
| Хранилище | Достаточный объем в Ceph для продаваемых квот. |
| Зависимости | Модуль **Object Storage**. Исходящий трафик также учитывается в [Bandwidth](https://nexcmp.com/ru/docs/catalog/bandwidth/). |

## Подготовка инфраструктуры {#prepare-the-infrastructure}

На узле управления Ceph:

1. Создайте пользователя-администратора и назначьте ему необходимые права Admin Ops:

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

   Скопируйте `access_key` и `secret_key` из вывода команды. Это **Admin access key** и **Admin secret key** в NexCMP.

2. Включите ведение журнала использования и перезапустите шлюзы:

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

3. Разместите шлюзы за HTTPS на порту 443 (через reverse proxy или собственный TLS RGW), опубликуйте DNS-имя и выполните проверку с сервера панели:

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

   В ответе должен прийти XML от S3 (HTTP 200 или 403), а не таймаут.


## Подключение в NexCMP {#connect-in-nexcmp}

1. **Подключите услугу S3 к зоне.** Перейдите в **Infrastructure › Datacenter › Zone**, откройте редактирование зоны и отметьте флажком **Object Storage (S3)**. В форме добавления бэкенда отображаются только мастер-зоны с услугой S3.


2. Перейдите в **Infrastructure › Cloud provider › Ceph S3 (RGW)** и нажмите **Add backend**:

   | Поле | Пример значения |
   |---|---|
   | Имя бэкенда | `Ceph RGW 1` |
   | Зона | зона из шага 1 |
   | Эндпоинт RGW Admin Ops | `https://s3.example.com` |
   | Клиентский эндпоинт S3 | `https://s3.example.com` |
   | Регион подписи S3 | `default` |
   | Ключ доступа администратора | `XXXX` |
   | Секретный ключ администратора | `XXXX` |
   | Активность | включено |
   | Включить продажи (требуется предварительная проверка подключения) | **выключено** на данный момент |
   | Причина изменения | `initial setup` |

      ![Диалоговое окно бэкенда S3 с примерами эндпоинтов, региона и скрытыми ключами](https://nexcmp.com/ru/docs/images/infrastructure/s3-02-backend-dialog.webp)

3. Нажмите **OK** (сохранить), затем **Check** в строке. NexCMP обратится к Admin Ops API с ключом администратора. Сообщение **Ceph connection successful** и тег **Verified** означают, что всё работает.


4. Нажмите **Edit**, включите **Enable sales** и сохраните изменения. NexCMP не позволит открыть продажи, пока проверка не завершится успешно.
5. Перейдите в **Services › Object Storage › PAYG pricing** и настройте тарифы:

   | Поле | Значение |
   |---|---|
   | Хранилище сверх бесплатного лимита (VND/GB/месяц) | Стоимость хранения; списывается каждый час как цена за месяц, деленная на 730. |
   | Скачивание (VND/GB) | Стоимость исходящего трафика. |
   | Загрузка (VND/GB) | Всегда 0. |
   | Бесплатный лимит при работающей VM (GB) | Фиксированно 100 GB на аккаунт, пока у клиента есть хотя бы одна работающая VM; распределяется между его аккаунтами S3 пропорционально объему. |
   | Лимит задолженности (VND) | Допустимый объем неоплаченного потребления. |
   | Порог биллинга (VND) | Потребление сводится в один счет, как только сумма превышает этот порог. |
   | Минимальный баланс для создания S3 (VND) | Баланс кошелька, необходимый для создания аккаунта. |
   | Максимум аккаунтов S3 на клиента, Техническая квота по умолчанию (GB) | Лимиты для новых аккаунтов. |

      ![Форма тарифов S3 PAYG](https://nexcmp.com/ru/docs/images/infrastructure/s3-04-pricing.webp)

   Цены на S3 указываются в VND. Они конвертируются для отображения и списания средств с кошелька по действующему курсу; см. [Валюта и обменные курсы](https://nexcmp.com/ru/docs/catalog/currency-and-exchange-rates/).

## Проверка {#verify}

1. **Check** возвращает "Ceph connection successful".
2. Войдя как клиент (или с тестового аккаунта), создайте аккаунт S3. В Ceph `radosgw-admin user list` покажет нового пользователя, а в **S3 accounts** он появится в списке.
3. Создайте бакет с помощью любого S3-клиента, используя ключи клиента и клиентский эндпоинт. Загрузите файл.
4. После очередного почасового биллингового цикла в **S3 accounts** отобразится потребление.

## Ограничения и примечания {#limits-and-notes}

- Бэкенд, к которому уже привязаны аккаунты, сохраняет свои **зону, эндпоинт и регион**; чтобы изменить их, создайте новый бэкенд.
- У одной зоны может быть свой бэкенд; аккаунты и бэкенды привязываются к зоне навсегда.
- Бесплатный лимит и условие «загрузка бесплатна» — это фиксированные правила, а не настраиваемые параметры.
- Ключи хранятся в зашифрованном виде; в консоли отображается только поле «оставьте пустым, чтобы сохранить текущий ключ». Пара ключей всегда вводится целиком.
- Секретные ключи клиентов отображаются только один раз при создании. В случае утери ключ можно только ротировать.

## Устранение неполадок {#troubleshooting}

| Симптом | Причина | Решение |
|---|---|---|
| "Endpoint requires HTTPS" | Эндпоинт использует обычный HTTP | Опубликуйте HTTPS на порту 443. |
| "Порт эндпоинта не разрешен" | Порт, отличный от 443 | Используйте стандартный порт HTTPS. |
| «Адрес эндпоинта не разрешен» | Имя разрешается в приватный, loopback-, link-local или unique-local адрес | Используйте публичный адрес. |
| «Эндпоинт должен содержать только протокол и хост» | 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**, затем включите продажи. |
| «Требуются все новые ключи для эндпоинта» | Эндпоинт изменен без указания обоих ключей | Укажите access key и secret key одновременно. |
| «К бэкенду уже привязаны ресурсы; создайте новый бэкенд для изменения зоны или эндпоинта» | На этом бэкенде существуют аккаунты | Создайте новый бэкенд. |
| «Выберите мастер-зону со службой S3» | Зона не является master-зоной или в ней нет сервиса S3 | Отметьте **Object Storage (S3)** для этой зоны. |
| "Invalid region" | Регион содержит символы помимо букв, цифр, `-` и `_` | Используйте `default` или имя вашей zonegroup в RGW. |
| «Отсутствует сводка использования Ceph; тарификация не выполнена» | Логирование использования отключено | Включите `rgw_enable_usage_log`. |
