Вводная: у нас был арендован сервер на hosting.ua на котором крутился добрый десяток сайтов наших клиентов (общая посещаемость десятки тысяч), в т.ч. магазины с приличными оборотами, хостился баг-трекер, джира, ДНС.
Говорят, что все люди делятся на 2 типа: 1-делают бекапы, 2- уже делают. Мы были где-то посередине.
За историю нашей работы у нас уже сыпались винчестеры, горели материнские платы и летела файловая система. Поэтому была настроена система ежедневного бекапа на винчестер на том же сервере, и, изредка, делалась копия на другой сервер в этом же датацентре. При такой системе потеря боевого винчестера – неприятность, но явление довольно редкое, а что бы пропали и бекапы на двух севрах одновременно, должно случиться (как мне тогда казалось) что-то невероятное.
Во всех статьях рекомендациях по резервному копированию пишут, бекапы нужно хранить физически в разных местах. «На случай пожара» действий властей или других стихийных бедствий, звучит, согласитесь, смешно…
Суббота. Вечер.
В 21.30 я получил первое сообщение от системы мониторинга доступности сервера, попробовал выяснить что случилось – оказалось лежит датацентр полностью. Ни сайт хостера, ни мой сервер не пинговались. Я решил, что это проблемы с каналом (что уже не раз бывало) и спокойно отправился на «выходные» в Россию (ну что может случиться, пожар что-ли?).
Воскресенье. Утро.
Прибыв на первый перевалочный пункт заполночь, я заметил, что система мониторинга не умолкала, и я просто отключил оповещения о СМСках. Проснувшись утром уже деревне недалеко от границы, я был неприятно удивлен количеству СМС о том, что сервер до сих пор не доступен. Набрал администратору, не смотря на ранее утро, и попросил выяснить, что же там такое.
Через 10 минут я получил сообщение, содержавшее одно слово из шести букв «обозначающее полный крах всех надежд». Я сруза же перезвонил и после разговора стало понятно, что это слово очень точно характеризует произошедшее. По слухам(!) в датацентре произошел пожар, система автоматического пожаратушения не сработала, и то, что уцелело после огня, было обильно полито водой пожарными… Официальной информации нет, саппорт не отвечает.
Воскресенье. День.
Дальше все как на войне
1. Заказали новый сервер с «мгновенной» активацией, не особо важно какой, важно быстро
2. Оповестили ключевых клиентов о произошедшем, нашем плане действий и возможных последствиях
3. Вызвали в офис «спец. наз» администратора и ключевых разработчиков
4. Начали попытки связаться с хостером что бы узнать что произошло из официальных источников и в каком состоянии наш сервер
5. На новом сервере подняли ДНС и перевели все подконтрольные домены на него
6. Подняли записи почты своего домена, что бы не потерять переписку
7. В качестве ответа на все запросы стали отдавать страницу с 50
8. Сели за написание граббера кеша яндекса, что бы спасти проиндексированный контент в случае потери всей информации. И не допустить недоступности сайта для поисковиков на период восстановительных работ
Благодаря слаженной работе офиса – мне не пришлось возвращаться в срочном порядке, хотя на телефоне пришлось провисеть довольно много.
Понедельник.
К середине понедельника у нас были сграблены ключевые сайты, и, наконец, удалось связаться с хостером, который нам сказал что наша стойка (С) от огня особо не пострадала и есть шанс что данные уцелели. Когда мне это передали – я первый раз выдохнул.
Вторник.
Во вторник я уже был в офисе, и с самого утра мы принялись поднимать «фанерный вариант» главного сайта. К обеду посетители уже видели контент в приличном оформлении и могли ходить по ссылкам, при попытке заказать что-либо получали сообщение об аварии и просьбе звонить прямо в магазин.
Параллельно с этим продолжались попытки получить доступ к информации, которая лежала в датацентре. Проблема осложнялась расстоянием (мы в Минске, ДЦ в Одессе), и тем что биллинг хостера был уничтожен, и они, строго говоря, не знали где чей сервер (при том что с момента аварии прошло уже 2.5 суток). Нас спасло то, что еще в понедельник нам удалось договориться по горячим следам, что нам отдадут наш винчестер в обмен на залог и заявление.
Времени терять было нельзя и начались поиска человека который мог бы на месте решить жти вопросы. Как оказалось, у нас было несколько вариантов, но все варианты упорно не отвечали. Владелец самого большого магазина уже заказал билеты для своего помошника что бы тот вылетал в Одессу, я просто спрашивал у всех кого видел: «нет ли у вас надежных линуксойдов в Одессе?». Таким странным образом был найден человек (назовем его Админ), который взялся нам помочь.
Первый заход в ДЦ закончился неудачно, ответили, что никому никаких винчестеров не отдадут. После чего нам пришлось снова созваниваться и напоминать про обещания. Со второго заезда (ближе к вечеру) винчестер забрали. В том виде, что его получили, включать его было нельзя поэтому он сразу отправился в мастерскую на срочный ремонт.
Среда.
Спустя 15 часов и 250 $ он вернулся к Админу, который, восстановив файловую систему, поставил заливаться данные к нам на сервер.
В этот момент выдохнули все. Ночью флагманский сайт уже работал и вечером, наконец, появилось первое официальное сообщение от hosting.ua на их сайте (что произошел пожар, и тут будет публиковаться информация). К концу четверга была поднята большая часть сайтов, и постепенно заканчиваем восстановительные работы на остальных.
Чему мы научились?
1. Открытость очень сильно помогает. То что мы смогли относительно быстро сообщить о ЧП и наших действиях сэкономило кучу нервов и нам и клиентам. Если бы мы отмалчивались так же как и hosting.ua – мы бы потеряли почти всех своих клиентов.
2. Хранить бэкапы в физически разных местах очень важно. Второй раз мы такой ошибки не допустим, бекапы будут на разных континентах (на случай войны). Страховка стоит около 40 $/мес., потери от 3-х дневного простоя стоили больше чем 2 года «страховки».
3. Нужно иметь планы на случай ЧП. Что бы все знали заранее, кто и что делает. В нашем случае повезло, что я был на связи, и у меня был с собой ноут со всеми паролями для управления доменами. Если бы нам не «повезло» в этой части – последствия были куда более драматичные
4. Грабберы это хорошо =)
Надеюсь этот опыт поможет кому-то научиться на наших ошибках и перейти в категорию делающих бекапы без серьезных потрясений