Консоль управления¶
Страница перечисляет, что администратор может сделать в консоли управления 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 (см. Добавление и вывод узлов) |