Перейти к содержанию

Консоль управления

Страница перечисляет, что администратор может сделать в консоли управления S3R и в каком её разделе это находится. Консоль — веб-интерфейс, встроенный в плагин. Как впервые открыть к ней доступ, описано на странице Первый вход в консоль управления.

Возможности консоли управления

Консоль собрана в двоичный файл плагина: отдельного развёртывания она не требует и обновляется вместе с плагином. Она работает поверх API управления, поэтому всё перечисленное здесь можно выполнить и запросом.

Снимков экранов в руководстве нет намеренно: расположение элементов меняется от выпуска к выпуску, а перечень возможностей остаётся прежним. Ниже перечислено, что доступно и в каком разделе консоли это находится.

Разделы кластера

Эти разделы доступны обладателям ролей s3r_superuser и s3r_observer. Наблюдателю доступно только чтение.

Обзор

Раздел показывает:

  • объём, который тенанты ещё могут записать (bytes_available), по каждому ярусу и в сумме;
  • расход памяти под метаданные с долей от квоты инстанса и указанием худшего инстанса;
  • время работы, версии Picodata и плагина, ссылку на метрики;
  • счётчик того, что требует внимания, и сводку по подсистемам.

Как считается bytes_available. Значение указано в байтах объектов: место под избыточность в него не входит.

  • Свободные экстенты тех дисков, которые может использовать группа размещения, умножаются на долю k / (k + m) схемы избыточности яруса, а для реплицированного яруса делятся на число копий.
  • Группа занимает экстент сразу на всех своих участниках. Поэтому свободное место диска учитывается лишь в той мере, в какой его хватает и на остальных дисках, с которыми он входит в группы.
  • Небольшие объекты в расчёт не входят.

Чего в консоли нет. Заполнение дисков, экстенты и занятость групп размещения консоль не показывает.

Что нужно Где смотреть
заполнение дисков и экстенты метрики s3r_extents, s3r_disk_used_bytes и панели Grafana
состояние дисков и групп API управления: GET /v2/disks, GET /v2/placement-groups
сколько блоков занято в группе отладочный отчёт GET /-/debug/group владельца группы

Сводка по подсистемам приходит из GET /v2/health: каждая запись несёт числа, по которым вынесена оценка, и то, что следует сделать.

Запись Что показывает
публичный адрес S3 отмечается, если адрес не настроен (см. ниже)
free_space предупреждает о свободном месте, которое не может использовать ни одна группа размещения яруса. Это место не входит в bytes_available
integrity поле damaged — число повреждённых полос во всём кластере, какой бы инстанс ни ответил. Число берётся из того же кеша, что и ответ GET /v2/cluster/attention, и обновляется не чаще раза в десять секунд. Если хотя бы один репликасет не ответил на подсчёт, запись получает оценку warn, а поле damaged равно null
repair поле members_waiting — число участников на выводимых дисках, данные которых некуда перенести; в этом случае запись получает оценку warn. Если таблицы размещения прочитать не удалось, запись получает оценку warn, а поле members_waiting равно null
placement группы размещения, у которых нет владельца или владелец сменяется

Запись free_space появляется, когда:

  • в ярусе меньше инстансов, доменов отказа или дисков, чем требует его схема;
  • свободных экстентов на диске меньше, чем занимает новая группа при открытии;
  • на диске свободно больше, чем на дисках, с которыми он делил бы группу.

Без публичного адреса S3 консоль не загружает файлы

Публичный адрес S3 задаётся параметром s3r_api.s3_public_url либо FQDN тенанта. Без него консоль не загружает файлы и не выдаёт заранее подписанные ссылки, поскольку подпись покрывает имя узла. Запрос подписанной ссылки получает ответ 409 с кодом S3PublicUrlUnset. На новой установке загрузка чаще всего не работает именно по этой причине, поэтому сводка состояния сообщает о ненастроенном адресе заранее.

Адрес S3 изменён, пока консоль открыта. При открытии страница консоли получает список адресов, к которым ей разрешено подключаться: директиву connect-src политики безопасности содержимого (Content-Security-Policy). Если адрес S3 задать или изменить после этого, браузер остановит загрузку ещё до отправки. До инстанса запрос не дойдёт, поэтому в журнале инстанса записи об этом нет. Консоль в этом случае запрашивает свою страницу повторно и сравнивает свежую политику с адресом загрузки:

  • новый адрес в политике уже есть — консоль предлагает перезагрузить страницу;
  • нового адреса нет и в свежей политике — консоль сообщает, что политика, которую получает браузер, не совпадает с адресом, для которого подписана ссылка. Обычно так бывает, когда прокси перед консолью задаёт собственный заголовок Content-Security-Policy.

Кластер

Раздел показывает инстансы с их состоянием, числом дисков и ёмкостью, а ниже — диски: инстанс, ярус, поддомен отказа, путь, состояние и исправность.

Состояние диска Как показано Чем снимается
active исправен —
failed отказ только переформатированием
blank, foreign, corrupt отказ переформатированием либо само, когда по пути диска снова монтируется его накопитель

Для нового диска рядом с состоянием показан его шаг. Шаг, который не удался, выделен красным, а подсказка содержит ошибку.

Кнопки диска. Кнопки вызывают действия API управления над дисками (см. Действия с дисками). Консоль просит подтвердить каждое действие и показывает отказ сервера в том же окне.

Кнопка Запрос Особенности
«Перевести в обслуживание» POST /v2/disks/{disk_id}/drain доступна только после начального формирования кластера (см. Замена исправного диска)
«Признать вышедшим из строя» POST /v2/disks/{disk_id}/failed доступна для любого диска, кроме уже вышедшего из строя, в том числе для диска в состоянии blank, foreign или corrupt
«Переформатировать» POST /v2/disks/{disk_id}/reformat можно указать новый путь к накопителю и его ёмкость в ГиБ; ёмкость нужна, если в директорию не смонтирована собственная файловая система
«Удалить» DELETE /v2/disks/{disk_id} доступна для любого диска; недопустимое удаление отклоняет сервер
«Добавить диск» POST /v2/disks добавляет диск на работающий инстанс: нужно выбрать инстанс и указать путь, ярус, поддомен отказа и, если в директорию не смонтирована собственная файловая система, ёмкость в ГиБ

Во время начального формирования. Пока оно не завершено, на странице показан его шаг и перечислено, чего оно ждёт. Инстансы и диски, которых ждёт формирование, отмечены. Диск, который не открылся, признают вышедшим из строя и переформатируют на исправный накопитель.

Группы размещения, у которых нет владельца или владелец сменяется, считает запись placement в сводке состояния на экране «Обзор».

Контроль целостности

Раздел показывает состояние контроля целостности и позволяет запустить проверку.

Общий итог вверху страницы: всё в порядке, сколько всего требует внимания, с какого времени идёт проверка и кто её запустил, или что кластер исправляет найденное сам.

Значок у названия раздела в меню показывает сумму полей repair_errors и repair_warnings ответа GET /v2/cluster/attention: красным, если есть хотя бы одна ошибка, и жёлтым в остальных случаях (см. Состояние по областям).

Кнопка «Проверить и исправить» отправляет запрос проверки (см. Запрос проверки).

  • Кнопка недоступна, пока предыдущий запрос не завершён и пока фоновый контроль целостности приостановлен. Во втором случае страница предлагает сначала его возобновить.
  • Рядом показана последняя проверка: кто и когда её запустил, завершена она или выполняется, какие области ещё проверяются и что осталось непроверенным (offline, orphaned или paused).

Переключатель «Фоновый контроль целостности: работает / приостановлен» меняет repair_mode после подтверждения и показывает, кто и когда его менял (см. Приостановка фонового контроля целостности).

Карточки областей. Ниже расположено по карточке на каждую область. На карточке указано состояние области («Состояние: в порядке», «проверяется», «исправляется», «неоптимально» или «неисправно») и время последней проверки. У каждого элемента в таблице указана его важность в соответствующем цвете. Пока фоновый контроль целостности приостановлен, элемент, который кластер исправил бы сам, помечен «исправится после возобновления».

Карточка Что показывает
«Каталог» число ошибок и неудачных сканирований; таблица репликасетов, сканирование которых нашло ошибки или не удалось; выбор расписания сканирования каталога: никогда, ежедневно, еженедельно, раз в две недели или ежемесячно
«Данные» группы, ожидающие ресинхронизации; реестр повреждённых полос с тенантом, бакетом, ключом объекта и номером полосы. Об утраченных полосах страница сообщает отдельно и отсылает к реестру. Здесь же время окончания самой давней проверки целостности данных и допустимый срок
«Диски» каждый диск не в состоянии active и подходящее действие: «Переформатировать» для пустого, чужого или повреждённого диска, «Удалить» для вышедшего из строя. Эти кнопки ведут в раздел «Кластер», где действие нужно подтвердить. Диск, который переводится в обслуживание, отмечен соответствующей надписью
«Группы» деградированные и утраченные группы; группы, перенос данных которых ждёт места; группы без владельца или меняющие владельца; группы не на своих позициях

Действия на карточке «Группы»:

  • Для группы, перенос данных которой ждёт места, на странице указаны причина и действие из таблицы в разделе Замена исправного диска.
  • Кнопка «Восстановить размещение» запускает это действие для одной группы. Кнопка для площадки и яруса запускает его для всех их несимметричных групп (см. Группы не на своих позициях). Пока фоновый контроль целостности приостановлен, эти кнопки недоступны.
  • Для деградированной группы, которую нечем исправить, страница предлагает добавить диск на её площадке в её ярусе.
  • Для группы без владельца страница предлагает добавить инстанс.

Репликация

Состояние репликации между площадками: что скопировано, что находится в очереди на копирование, где накапливается отставание.

Разделы тенанта

Тенанты

  • Создание и удаление тенанта. Создание выполняется не мгновенно, и консоль показывает ожидание явно (см. Создание и удаление тенанта).
  • FQDN тенанта, сертификат TLS и материал mTLS, включая передачу сертификата и режим обязательного mTLS, срок действия и замену.

Окно создания тенанта перечисляет ярусы кластера с числом дисков, доменов отказа и схемами избыточности. Если группа по схеме сейчас не может быть создана, в подсказке у схемы указана причина отказа.

Окно настроек тенанта показывает его правила CORS для новых бакетов (см. Правила CORS тенанта по умолчанию) той же таблицей, что правила бакета. Кнопка «Изменить» открывает их в редакторе JSON, кнопка «Убрать все» удаляет набор. Существующие бакеты эти действия не затрагивают.

Пользователи и ключи

  • Создание пользователя тенанта, блокировка и разблокировка.
  • Выдача ключа доступа, замена секрета с сохранением ключа и удаление ключа. Секретный ключ показывается один раз, в момент выдачи.
  • В режиме входа picodata здесь же задаётся пароль для входа по SQL (см. Пароль для входа по SQL). При работе с внешним провайдером идентификации пароль принадлежит провайдеру, и консоль такой операции не предлагает.

Бакеты

  • Список бакетов с владельцем и признаком версионирования.
  • Создание и удаление, передача бакета другому владельцу, включение блокировки объектов.
  • Настройки бакета: версионирование, CORS, политика, публичный доступ, сжатие, дедупликация и квота.
  • Правила жизненного цикла редактируются отдельным разделом: срок жизни, переход в другой класс хранения, обращение со старыми версиями и обрыв незавершённых загрузок. Они доступны также в виде JSON.
  • Права на бакет задаются матрицей выдач.

Правила CORS бакета в настройках показаны таблицей, по строке на правило.

  • В строке указаны источники, методы и заголовки запроса. Под ней показаны идентификатор, заголовки ответа и время кеширования ответа на предварительный запрос, если они заданы.
  • Правила пронумерованы в том порядке, в котором сервер их проверяет.
  • Консоль отмечает первое правило, которое разрешает загрузку из неё, и показывает его номер. Если такого правила нет, но есть правило, которому не хватает только заголовка Content-Type, консоль показывает его номер.
  • Изменяются правила в редакторе JSON.

Окно создания бакета по умолчанию добавляет правило CORS, которое разрешает загрузку из этой консоли. Если у тенанта задан набор правил по умолчанию (см. Правила CORS тенанта по умолчанию), окно показывает его такой же таблицей, а дальше поведение зависит от набора:

Набор тенанта Что получает бакет
уже разрешает загрузку из консоли (см. Объекты) набор тенанта; своё правило окно не добавляет
загрузку из консоли не разрешает набор тенанта и правило консоли. Правило добавляется к набору, а не заменяет его: правила набора, в том числе правило с идентификатором s3r-console для другого адреса, сохраняются

Пока набор тенанта не прочитан, создать бакет в этом окне нельзя.

Квоты

Ограничения тенанта, пользователя и бакета одним списком:

  • накапливаемые: хранимый объём, число версий объектов и бакетов. Рядом показано потребление;
  • скоростные: запросы и байты в секунду на чтение и на запись, с величиной всплеска.

Объекты

Обзор бакета по папкам, загрузка файла, скачивание и получение ссылки, которой можно поделиться.

Загрузка и скачивание идут напрямую между браузером и эндпоинтом S3 по подписанной ссылке, минуя API управления. Если бакет не разрешает обращение из браузера, консоль объясняет это и предлагает добавить нужное правило CORS.

Консоль считает, что правило CORS разрешает загрузку, если оно разрешает:

  • источник консоли, в том числе по образцу вроде https://console.example.net:*;
  • метод PUT;
  • заголовок Content-Type: браузер указывает этот заголовок в предварительном запросе для большинства типов файлов.

Правило, заголовки которого не охватывают Content-Type, консоль не учитывает и добавляет своё.

Порядок списка. По умолчанию список папки идёт в порядке ключей, страница за страницей.

  • Щелчок по заголовку «Изменён» упорядочивает папку по дате изменения, сначала новые. Повторный щелчок меняет направление.
  • Щелчок по заголовку «Имя» возвращает порядок ключей. Его задаёт сервер, и он идёт только по возрастанию.

Индекса по времени нет, поэтому для сортировки по дате консоль читает папку целиком и упорядочивает её у себя. Она берёт не больше 5000 записей; если в папке их больше, консоль предупреждает, что упорядочены только первые записи в порядке ключей.

Фильтр. Большую папку сужают полем «Имя начинается с». Оно показывает только ключи папки, начинающиеся с введённого текста, с учётом регистра, как параметр prefix в S3. Если текст содержит /, поиск идёт внутри подпапки.

После загрузки консоль сообщает над таблицей, что и куда загружено, и отмечает загруженные объекты в списке.

  • Порядок, фильтр и страница при этом не меняются. Найти объект помогают сортировка по дате и фильтр.
  • Крестик закрывает только сообщение, отметки остаются.
  • Сообщение и отметки исчезают при смене бакета или папки и при следующей загрузке.

Ограничения консоли

Следующие операции консоль не выполняет:

Операция Чем выполняется
установка плагина, его конфигурация командой ALTER PLUGIN, выдача ролей средствами SQL: это операции уровня СУБД
выдача роли пользователю тенанта запросом GRANT от администратора. Самого пользователя тенанта консоль создаёт
изменение состава кластера средствами Picodata (см. Добавление и вывод узлов)