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 создает и удаляет соответствующих пользователей на вашем Ceph RADOS Gateway (RGW) через RGW Admin Ops API, считывает метрики использования для биллинга и рассчитывает оплату по модели pay-as-you-go: хранилище сверх бесплатного лимита за ГБ в месяц (с почасовым списанием) и исходящий трафик за ГБ. Входящий трафик бесплатен.
Используйте эту интеграцию, если у вас развернут кластер Ceph с RGW и вы хотите перепродавать объектное хранилище.
Требования
| Параметр | Требование |
|---|---|
| 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. |
| Хранилище | Достаточный объем в 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из вывода команды. Это Admin access key и Admin secret key в NexCMP.Включите ведение журнала использования и перезапустите шлюзы:
bashceph config set client.rgw rgw_enable_usage_log trueРазместите шлюзы за HTTPS на порту 443 (через reverse proxy или собственный TLS RGW), опубликуйте DNS-имя и выполните проверку с сервера панели:
bashcurl -fsS -o /dev/null -w '%{http_code}\n' https://s3.example.com/В ответе должен прийти XML от S3 (HTTP 200 или 403), а не таймаут.
Подключение в NexCMP
Подключите услугу S3 к зоне. Перейдите в Infrastructure › Datacenter › Zone, откройте редактирование зоны и отметьте флажком Object Storage (S3). В форме добавления бэкенда отображаются только мастер-зоны с услугой S3.
Перейдите в 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
Нажмите 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) Фиксированно 100 GB на аккаунт, пока у клиента есть хотя бы одна работающая VM; распределяется между его аккаунтами S3 пропорционально объему. Лимит задолженности (VND) Допустимый объем неоплаченного потребления. Порог биллинга (VND) Потребление сводится в один счет, как только сумма превышает этот порог. Минимальный баланс для создания S3 (VND) Баланс кошелька, необходимый для создания аккаунта. Максимум аккаунтов S3 на клиента, Техническая квота по умолчанию (GB) Лимиты для новых аккаунтов. 
Цены на S3 указываются в VND. Они конвертируются для отображения и списания средств с кошелька по действующему курсу; см. Валюта и обменные курсы.
Проверка
- Check возвращает "Ceph connection successful".
- Войдя как клиент (или с тестового аккаунта), создайте аккаунт S3. В Ceph
radosgw-admin user listпокажет нового пользователя, а в S3 accounts он появится в списке. - Создайте бакет с помощью любого S3-клиента, используя ключи клиента и клиентский эндпоинт. Загрузите файл.
- После очередного почасового биллингового цикла в S3 accounts отобразится потребление.
Ограничения и примечания
- Бэкенд, к которому уже привязаны аккаунты, сохраняет свои зону, эндпоинт и регион; чтобы изменить их, создайте новый бэкенд.
- У одной зоны может быть свой бэкенд; аккаунты и бэкенды привязываются к зоне навсегда.
- Бесплатный лимит и условие «загрузка бесплатна» — это фиксированные правила, а не настраиваемые параметры.
- Ключи хранятся в зашифрованном виде; в консоли отображается только поле «оставьте пустым, чтобы сохранить текущий ключ». Пара ключей всегда вводится целиком.
- Секретные ключи клиентов отображаются только один раз при создании. В случае утери ключ можно только ротировать.
Устранение неполадок
| Симптом | Причина | Решение |
|---|---|---|
| "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. |