Начальное формирование¶
Страница объясняет, как новый кластер 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у любой первой группы плана могут быть позиции на его дисках.
Если такой инстанс исключён из кластера, формирование по-прежнему ждёт его позицию. Порядок действий:
- На место исключённого инстанса запускают новый узел. Picodata даёт новому инстансу имя исключённого.
- Новый инстанс принимает диски предшественника под их идентификаторами и переформатирует их (см. Добавление и вывод узлов).
- Новый инстанс занимает место предшественника в формировании и создаёт первую группу на его позиции. Формирование завершается по тому же плану.
Как выглядит несформированный кластер¶
Пока кластер не сформирован:
| Где | Что видно |
|---|---|
| Запросы 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 нет: срок ожидания выбирает администратор в
своей системе мониторинга.