Декларативная часть регламентного обслуживания: что должно регулярно делаться с сервисами, оборудованием и ОС: индексация БД, резервное копирование VM, дампы конфигураций оборудования. Фактически выполняемые работы — отдельная сущность, Регламентное обслуживание; работа “выполняет” требования, и сопоставление одного с другим показывает непокрытые требования на карточках ОС и оборудования.
Задача, которую решает соглашение: как бэкапить конечную ОС/ВМ? Ответ: Требовния к бэкапу ОС/ВМ должны вытекать из ее задач.
Как это оформить в инвентаризации?
Ответ: требования РК предъявляются к сервисам и автоматически
наследуются на ОС/ВМ, на которых сервис работает (флаг
“Распространяется на ОС”; для железа аналогично — “Распространяется на
оборудование”). Владелец сервиса формулирует потребность в терминах
своего сервиса, а на ВМ требования собираются со всех её сервисов сами.
Что делать, если ОС/ВМ является платформой сразу для нескольких сервисов,
и на нее может упасть сразу несколько требований РК?
Ответ: требования можно сделать дополняющими друг друга, тогда из всего
набора требований можно выбрать тот, который содержит наиболее полный набор
требований (см. далее “готовый набор вместо произвольных требований”).
Дополняемость требований объявляется явно.
Требование РК описывается одним параметром — GFS-сценарием вида Д-Н-М-Г (сколько хранится дневных, недельных, месячных и годовых копий). Сценарий одновременно задаёт и RPO (самый частый слой), и глубину хранения.
Сознательно не заявляются:
Если позволить каждому сервису заявить произвольную схему, на одну ВМ могут упасть три несовместимых требования — и её придётся бэкапить тремя разными заданиями с тремя разными схемами retention.
Поэтому требования оформлены конечным набором (разрабатывался в координации с владельцами основных крупных сервисов; выбор ограничен этим набором). Набор разбит на группы, внутри группы требования сортируются по строгости (RPO), а GFS-сценарии составлены так, что требование из середины отсортированной группы удовлетворяет и всем требованиям ниже. Эта связь заведена в самих объектах — поле «Перекрывает требования».
Пример цепочки: 7-3-3-0 перекрывает 7-0-3-0, которое перекрывает
0-0-3-0, которое перекрывает 0-0-1-0.
Когда на ВМ собирается несколько требований, целевым считается самое «требовательное»: остальные помечаются как поглощённые и в итоговом наборе игнорируются. В результате ВМ попадает в одно задание РК с одной схемой retention, закрывающее все предъявленные требования.
graph LR
X["Сервис X<br>требует 7-0-3-0"] --> VM["ВМ"]
Y["Сервис Y<br>требует 0-0-3-0"] --> VM
Z["Сервис Z<br>требует 0-0-1-0"] --> VM
VM --> EFF["Эффективное требование:<br>7-0-3-0<br>(остальные поглощены)"]
EFF --> JOB["Одно задание РК<br>со схемой 7-0-3-0"]
7-3-3-0 → 7-0-3-0 → 0-0-3-0) —
не нужно объявлять связь от каждого требования к каждому перекрываемому.