Что делать если в Ваш Amazon EC2 instance ударила молния?

    Как многим известно, недавно в Ирландии был обесточен один из датацентров Amazon. Об этом уже рассказывали. Как я понял из общения со своими коллегами, большинство пользователей Amazon EC2 получили разве что downtime, но вот мне не повезло больше — у меня не только инстансы остановились, но один из моих volume-ов перешел в состояние error.

    Все бы ничего (ведь есть snapshot-ы), но вот незадача: отключать (detach) EBS volume-ы нельзя, если они подключены как root к какому либо инстансу. Во всяком случае через web.



    И так, у вас есть instance в состоянии stopped. К нему подключен volume со статусом error. Так же должно прийти письмо с извинениями и примитивными инструкциями по типу «не беспокойтесь, просто подключите восстановленный из snapshot-a volume». Но как оказалось не все так просто. Приведу список шагов, которые мне пришлось сделать, чтоб восстановить свой instance.

    Небольшое замечание: Возможно для тех, кто активно работают с Amazon EC2 это не выглядит проблемой. Но для меня, который к EC2 относился «работает? круто!», было не так просто разобраться как и что делать. По этому, инструкция скорее для тех, кто попал в такое же положение, и не хочет создавать новый инстанс просто удалив старый.

    В support я написал, но они кроме сочувсвующих советов использовать Amazon AMI/API Tools ничего не смогли подсказать.

    Даже если сейчас «молния ударила» мимо вашего сервера, это еще не значит что в следующий раз тоже «пронесет».

    Итак, что я делал:

    1. Восстановление из Recoverty snapshot


    Первое что нужно сделать, это зайти в AWS Management Console, Elastic Block Storage -> Snapshots. Там должен быть snapshot с описанием «Recovery snapshot for vol-XXXXXXX». С него надо создать восстановленную копию volume-a.

    2. Попытаться отсоеденить поломанный volume


    А вдруг повезет? Процетирую то, что мне отписали в суппорте:

    You can select «Detach Volume» from within the AWS Management Console to detach this volume from your instance. You may need to execute multiple force-detaches if this hangs in a «detaching» state.

    If you are unable to do either command or both are appearing to fail, you would need to launch a new instance and attach your newly recovered volume to this new instance.

    Вы можете выбрать «Detach Volume» из AWS Management Console для того, чтоб отсоеденить volume от вашего инстанса. Возможно Вам надо будет выполнить несколько операций по отключению с включенной опцией «force» если оно подвисает в состоянии «detaching».

    Если у вас не получилось какую либо комманду, вам прийдется создать новый инстанс и подключить восстановленный volume к инстансу.


    К сожалению у меня не вышло — на все операции выдавало «Unable to ...»

    3. Воспользоватся AMI Tools



    Итак, единственное решение в данной ситуации — использовать Amazon AMI Tools.
    Загрузить можно вот вот отсюда.

    Так, как у меня Ubuntu, мне достаточно было:
    sudo apt-get install ec2-ami-tools
    sudo apt-get install ec2-api-tools
    


    Под Windows должно быть не намного сложнее.

    Далее нужно создать ключи доступа. Это немного другое, чем «Key pairs» в Network/Security в Management Console.

    Для того, чтоб создать пару ключ-сертификат доступа, необходимо зайти на aws.amazon.com, там выбрать Account -> Security Credentials. Там перейти на закладку x.509 Certificates. Там нажать на «Create a new Certificate» и сохранить два файла — один сертификат (назовем условно ec2-cert.pem) и приватный ключик (ec2-key.pem).

    Важно: не перепутайте местами ключ и сертификат. Они имеют одинаковые расширения (.pem) но если из поменять местами, тулзы будут выпадать с java.security.cert.CertificateParsingException.

    Далее лучше (хотя не обязательно — можно через параметры) установить переменные окружения:
    export EC2_CERT=~/путь-к-файлам/ec2_cert.pem
    export EC2_PRIVATE_KEY=~/путь-к-файлам/ec2-key.pem
    


    После этого можно проверить все ли нормально подхватилось:
    $ ec2-describe-regions 
    REGION	eu-west-1	ec2.eu-west-1.amazonaws.com
    REGION	us-east-1	ec2.us-east-1.amazonaws.com
    REGION	ap-northeast-1	ec2.ap-northeast-1.amazonaws.com
    REGION	us-west-1	ec2.us-west-1.amazonaws.com
    REGION	ap-southeast-1	ec2.ap-southeast-1.amazonaws.com
    


    Вот в регионе eu-west-1 и произошла проблема, а у меня там хостилса инстанс. Смотрим наши инстансы:
    $ ec2-describe-instances
    RESERVATION	....
    INSTANCE	...(тут много ненужной инфы)
    BLOCKDEVICE	/dev/sda1	vol-20155a49	2011-05-20T14:14:54.000Z	
    ...
    

    Вот BLOCKDEVICE нам и нужен (а за одно, запомните /dev/sda1 — он еще понадобится). А именно «vol-20155a49» (у вас, конечно же, будет другой). Проверяем в консоли — действительно ли этот тот самый volume который не хочет отключатся? Если да, то нам остался последний шаг:
    $ ec2-detach-volume --region eu-west-1 vol_2055a49 --force
    

    После этого заходим в консоль управления и спокойно подключаем volume, восстановленный из снепшота. Кстати, вот тут и надо вспомнить что было сразу после BLOCKDEVICE — у меня это было "/dev/sda1".

    Готово! Теперь можете стартовать инстанс :)

    Как резюме могу сказать, что Amazon AMI/API Tools не так сложны как кажется (205 утилит в суме), и их вполне можно использовать тогда, когда web-консоль управления пасует.

    Ни грозы, ни пожаров вашим серверам!

    Полезные ссылки:
    * Инструкция по настройке утилит
    * Как использовать ключи и сертификаты
    * Загрузить утилиты: AMI/API
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 11

      –1
      Спасибо, узнал много нового для себя ) Сейчас затестим.
        0
        Вообще «молния два раза в одно и тоже место не бьет». Я думаю это весьма редкий случай, и соответственно, весьма редкий опыт. И кстати, данные тулзы в основном можно использовать для автоматизации использования инстансов с помощью, например, простейших shell скриптов.
          0
          Тут скорее был опыт установки и настройки этих самых тулзов. Некоторые пункты были не такие уж понятные — те же сертификаты/ключи — я для начала пытался подсунуть ключи из Key Pairs, на что выдавался совершенно непонятный exception.

          Так что, думаю, опыт может пригодится еще для других целей.
          +1
          Статью надо было назвать 'Как сделать force detach'.
            +1
            На самом деле "--force" не обязательно указывать. Так что скорее «как сделать детач с помощью тулзов», но, как я уже писал, мне сложнее было разобраться как именно их использовать, чем сделать в конце сам detach.

            Мне кажется, что статья как мини-инструкция по настройки тулзов «с нуля» может быть полезна.
          • НЛО прилетело и опубликовало эту надпись здесь
              0
              Ну тогда большой "+" Амазону что они смогли такую удобную веб-консольку сделать (кстати, GWT если не ошибаюсь) — это первый раз за примерно год юзания ЕС2 когда понадобилось использовать тулзы.

              И, надеюсь, последний :)
              0
              > отключать (detach) EBS volume-ы нельзя, если они подключены как root к какому либо инстансу

              Есть ощущение, что проблема у Вас была не в этом, а в целом была связана с проблемами Амазона.

              В штатном режиме работы Root Device прекрасно detach'ится, если предварительно остановить instance.

              Но в любом случае, Amazon AMI Tools — полезнейшая штука. Бэкапы по крону и т.п. — делаем именно с их помощью.
                +1
                Так и есть — проблема была именно в том, что volume, на котором был root device был в состоянии 'error', и детач не проходил.

                Мне кажется что проблема именно в веб-консоле, так как из тулзы спокойно детачнулось даже без форса.
                0
                И что, recovery snapshot был полностью рабочий и потерь данных не было?

                А почему бы не сделать проще — запустить НОВЫЙ инстанс и подменить ему sda1?
                  0
                  Мне почему-то кажется, что оно бы не дало удалить рутовый вольюм в новом инстансе

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое