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

Начальное формирование

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

Коротко

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

Что делать, если формирование не завершается, описано на странице Если установка не завершается.

Состояния и шаги формирования

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

Формирование нельзя завершить досрочно

Формирование ждёт, пока условия не выполнятся. Способа завершить его досрочно нет: оно и предотвращает создание групп на части топологии. До его завершения запись объектов отклоняется.

Состояние кластера записано в столбце state таблицы s3r_cluster, а шаг формирования — в столбце step:

Состояние Шаг Что происходит Запись объектов
new registering инстансы регистрируют диски; кластер проверяет топологию и составляет план первых групп отклоняется
new forming каждый инстанс создаёт свою первую группу в каждом ярусе, где у него есть диски отклоняется
active пусто кластер сформирован: группы создаются и участники заменяются обычным порядком принимается

Перехода назад нет: полный перезапуск, добавление или потеря узла после перехода в состояние active обрабатываются обычным порядком.

Условия перехода к шагу forming

Кластер переходит с шага registering на шаг forming, когда выполнены все условия:

  • каждый инстанс, не исключённый из кластера, находится в сети и зарегистрировал свои диски, и каждый его диск открыт;
  • у каждого яруса с дисками есть схема, и ни у одного инстанса нет в ярусе 2 × (k + m) дисков или больше;
  • все инстансы с дисками яруса объявляют один и тот же набор поддоменов;
  • при нескольких площадках каждый инстанс объявляет dc;
  • каждый репликасет содержит столько инстансов, сколько задаёт фактор репликации; при нескольких площадках в каждом репликасете поровну инстансов с каждой площадки, а на каждой площадке одни и те же позиции инстансов несут каждый ярус;
  • план первых групп полон: каждый инстанс с дисками получает первую группу в каждом своём ярусе, и на каждом диске хватает свободных экстентов для всех первых групп, которые план ставит на него.

Что записывает переход

Переход к шагу forming записывает в таблицу s3r_cluster значения, которые дальше не меняются:

Столбец Что записано Что из этого следует
sites набор площадок набор площадок не меняется
tiers шаблон каждого яруса, его схема и классы блоков схема и классы блоков яруса не перезаписываются
founding_members список участников начального формирования: имена всех инстансов, которые зарегистрировались к этому моменту список больше не меняется

Инстанс, которого нет в списке founding_members, участвует в размещении только после перехода кластера в состояние active. Новый инстанс, запущенный на месте исключённого под его именем, остаётся участником начального формирования.

Шаг forming и переход в состояние active

Кластер переходит в состояние active, когда у каждой позиции плана в каждом её ярусе есть первая группа, перешедшая из состояния new в active, какой бы инстанс ею ни владел. Группа становится активной, когда каждый её участник выделил ей первые экстенты.

На шаге forming недоступный диск или инстанс не обходится:

  • Первая группа не подменяет недоступную позицию. Если диск плана недоступен, заполнен или вышел из строя, владелец ждёт.
  • Пока кластер находится в состоянии new, участники групп не заменяются.
  • Если диск отказывает первой группе в экстенте, владелец сохраняет эту группу и повторяет запрос позже, а новую группу вместо неё не создаёт.
  • Владелец, диски которого не монтируются, задерживает шаг forming. Другой владелец его не подменяет: в раскладке spread у любой первой группы плана могут быть позиции на его дисках.

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

  1. На место исключённого инстанса запускают новый узел. Picodata даёт новому инстансу имя исключённого.
  2. Новый инстанс принимает диски предшественника под их идентификаторами и переформатирует их (см. Добавление и вывод узлов).
  3. Новый инстанс занимает место предшественника в формировании и создаёт первую группу на его позиции. Формирование завершается по тому же плану.

Как выглядит несформированный кластер

Пока кластер не сформирован:

Где Что видно
Запросы S3 PutObject, CopyObject, UploadPart и UploadPartCopy получают ответ 503 ServiceUnavailable с сообщением the cluster is new (registering): it takes writes once its first placement groups are formed (или new (forming)). Бакеты при этом создаются
/-/ready отвечает кодом 503 и перечисляет, чего ждёт формирование
Журнал инстанса каждый инстанс при изменении причин записывает предупреждение the cluster is new (registering) and waits for: ... (или new (forming)). Инстанс, который ведёт формирование (зарегистрированный инстанс в сети с наименьшим именем), записывает при переходе строку the cluster moved to step forming или the cluster is active
GET /v2/cluster/servers состояние кластера, шаг и причины в поле formation, а для каждого инстанса его регистрация и состояния дисков
Страница «Кластер» консоли показывает шаг и отмечает инстансы и диски, которых ждёт формирование
Метрика s3r_formation_step 0 на шаге registering, 1 на шаге forming и 2 в состоянии active
Действия с дисками перевод диска в обслуживание и действие «Восстановить размещение» отклоняются с ответом 409 и кодом ClusterNew

Оповещение о незавершённом формировании

Правила оповещения о том, что формирование не завершается, в deploy/prometheus/s3r-alerts.yml нет: срок ожидания выбирает администратор в своей системе мониторинга.