- PVSM.RU - https://www.pvsm.ru -
[1]
Даже во время катастрофы всегда есть время на чашку чая
DRP (disaster recovery plan) — это штука, которая в идеале никогда не понадобится. Но если вдруг мигрирующие в брачный период бобры перегрызут магистральное оптоволокно или джуниор-админ дропнет продуктивную базу, вы точно хотите быть уверены, что у вас будет заранее составленный план, что с этим всем безобразием делать.
Пока клиенты в панике начинают обрывать телефоны техподдержки, джуниор ищет цианиды, вы с мудрым видом вскрываете красный конверт и начинаете приводить все в порядок.
В этом посте я хочу поделиться рекомендациями, как надо писать DRP и что он должен содержать. А еще мы рассмотрим следующие штуки:
Очень сложно провести границу, когда IT-подразделение начинает нуждаться в подобных вещах. Я бы сказал что DRP вам гарантированно нужно, если:
Когда IT-отдел месяцами выпрашивает хотя бы пару HDD в старенький сервер для бэкапов, у вас вряд ли получится организовать полноценный переезд упавшего сервиса на резервные мощности. Хотя и тут документация лишней не будет.
Начните с документации. Допустим, что ваш сервис работает на базе скрипта на Perl, который был написан три поколения админов назад, а как он работает, никто не знает. Накопленный технический долг и отсутствие документации неизбежно вам прострелит не только колено, но и другие конечности, это скорее вопрос времени.
После того, как у вас на руках есть хорошее описание компонентов сервиса, поднимите статистику по авариям. Почти наверняка они будут совершенно типовые. Например, у вас время от времени переполняется диск, что приводит к отказу ноды до ее ручной очистки. Или становится недоступен клиентский сервис из-за того, что кто-то опять забыл продлить сертификат, а Let's Encrypt настроить не смог или не захотел.
Самая сложная часть находится в прогнозировании тех аварий, которых еще ни разу не было, но которые потенциально могут уложить ваш сервис полностью. Тут мы обычно с коллегами играем в злодеев. Берете много кофе и чего-нибудь вкусного и запираетесь в переговорке. Только убедитесь, что в этой же переговорке вы заперли тех инженеров, которые сами поднимали целевой сервис или регулярно с ним работают. Дальше либо на доске, либо на бумаге начинаете рисовать все возможные ужасы, которые могут произойти с вашим сервисом. Не обязательно детализировать вплоть до конкретной уборщицы и выдергивания кабелей, достаточно рассмотреть сценарий «Нарушения целостности локальной сети».
Обычно, большинство типовых аварийных ситуаций укладывается в следующие виды:
Просто идете по каждому виду и смотрите, что применимо к вашему сервису. Например, может упасть и не подняться демон Nginx — это к отказам со стороны ОС. Редкая ситуация, которая загоняет ваше веб-приложение в нерабочее состояние — отказ ПО. Во время проработки этого этапа важно проработать диагностику проблемы. Как отличить зависший интерфейс на виртуализации от упавшей циски и аварии на сети, например. Это важно, чтобы быстро найти ответственных и начать дергать их за хвост, пока авария не будет устранена.
После того, как типовые проблемы записаны, наливаем еще кофе и начинаем рассматривать самые странные сценарии, когда какие-то параметры начинают сильно выходить за пределы нормы. Например:
На этом этапе очень помогает подход от обратного. Берете самого упоротого члена команды с больной фантазией и даете ему задачу в кратчайшие сроки устроить диверсию, которая положит сервис. Если ее будет сложно диагностировать — еще лучше. Не поверите, какие странные и крутые идеи высказывают инженеры, если дать им идею что-нибудь сломать. А уже если пообещать им для этого тестовый стенд — совсем хорошо.
Итак вы определили модель угроз. Учли и местных жителей, которые режут оптоволоконные кабели в поисках меди, и военный радар, который роняет радиорелейную линию строго по пятницам в 16:46. Теперь надо понять, что с этим всем делать.
Ваша задача написать те самые красные конверты, которые будут вскрываться в аварийной ситуации. Сразу рассчитывайте, что когда (не если!) все навернется, рядом окажется только самый неопытный стажер, у которого будут сильно трястись руки от ужаса происходящего. Посмотрите, как реализованы аварийные таблички в медицинских кабинетах. Например, что делать при анафилактическом шоке. Медицинский персонал наизусть знает все протоколы, но когда рядом человек начинает умирать, очень часто все беспомощно хватаются за все подряд. Для этого на стене висит четкая инструкция с пунктами вида «открыть упаковку того-то» и «ввести внутривенно столько-то единиц препарата».
В аварийной ситуации думать сложно! Должны быть простые инструкции для парсинга спинным .
Хороший DRP состоит из нескольких простых блоков:
Помните, что DRP начинается тогда, когда сервис полностью отказал и завершается восстановленим работоспособности, даже со сниженной эффективностью. Просто потеря резервирования не должно активировать DRP. А еще можете прописать в DRP чашку чая. Серьезно. По статистике, очень многие аварии из неприятных становятся катастрофическими из-за того, что персонал в панике кидается что-то чинить, попутно убивая единственную живую ноду с данными или окончательно добивая кластер. Как правило 5 минут на чашку чая дадут вам немного времени успокоиться и проанализировать происходящее.
Не надо путать DRP и паспорт системы! Не перегружайте его излишними данными. Просто дайте возможность быстро и удобно по гиперссылкам перейти в нужный раздел документации и почитать в расширенном формате о нужных участках архитектуры сервиса. А в самом DRP только прямые указания куда и как подключаться с конкретными командами для копипасты.
Убедитесь, что любой ответственный сотрудник в состоянии выполнить все пункты. В самый ответственный момент может оказаться, что у инженера нет прав на доступ в нужную систему, отсутствуют пароли от нужной учетки или он понятия не имеет, что значит «Подключитесь к консоли управления сервисом через прокси в головном офисе». Каждый пункт должен быть предельно прост.
Неправильно — «Зайдите на виртуализацию и ребутните мертвую ноду»
Правильно — «Подключитесь через веб-интерфейс к virt.example.com, в разделе ноды выполните перезагрузку ноды, которая вызывает ошибку».
Не допускайте двусмысленностей. Помните про испуганного стажера.
Обязательно тестируйте DRP. Это не просто план для галочки — это то, что позволит вам и вашим клиентам быстро выйти из критической ситуации. Оптимально сделать это несколько раз:

Автор: oldadmin
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/357952
Ссылки в тексте:
[1] Image: https://habr.com/ru/company/ruvds/blog/523004/
[2] мозгом: http://www.braintools.ru
[3] Image: http://ruvds.com/ru-rub?utm_source=habr&utm_medium=article&utm_campaign=meklon&utm_content=plan_po_likvidacii_posledstvij_katastrofy#order
[4] Источник: https://habr.com/ru/post/523570/?utm_source=habrahabr&utm_medium=rss&utm_campaign=523570
Нажмите здесь для печати.