Культ High Availability и Fault Tolerance

28.12.2012 | Ганус Сергей
Want create site? Find Free WordPress Themes and plugins.

Виртуализация позволяет не только повысить уровень использования ресурсов физических серверов, но и предоставляет средства для обеспечения высокой готовности. Думаю, у всех, кто вращается в этой сфере, на слуху термины High Availability и Fault Tolerance. А для тех, кто об этих технологиях еще не слышал, сделаю несколько пояснений.

Если виртуальная машина работает в режиме High Availability, то специальный процесс на гипервизоре следит за состоянием физического сервера, а также (опционально) за состоянием гостевой операционной системы. В случае если физический сервер выходит из строя или операционная система перестает отвечать на heartbeat, гипервизор перезапускает виртуальную машину на другом физическом сервере.

Режим Fault-Tolerance задумывался своими создателями как еще более сильный аргумент для обеспечения высокой готовности. Если виртуальная машина находится под защитой FT, то на другом физическом сервере параллельно с ней запускается точная ее копия. На этой копии повторяются все операции ввода-вывода, чем и достигается идентичность в реальном времени. В случае выхода из строя физического сервера основной виртуальной машины клон берет на себя всю работу, и приложение продолжает работать. Очевидно, что в этом случае, в отличие от HA, перерыва в сервисе нет — и данный режим обеспечивает более “качественную” защиту.

Однако, на мой взгляд, многие администраторы в силу, как бы это помягче выразиться, природной лени что ли, сильно переоценивают возможности этих двух технологий и считают, что раз у них в ЦОД есть HA или FT, то ни о чем больше заботиться не нужно — приложения защищены от любых отказов. Давайте попробуем разобраться, так ли это на самом деле. Подчеркиваю, что я совсем не хочу убедить вас в том, что эти режимы бесполезны, ни в коем разе. Они очень даже полезны, когда применяются правильно и по месту. Я просто призываю вас глубже интересоваться нюансами происходящих в среде виртуализации процессов и делать из этого верные выводы.

Начнем с HA. Как я уже говорил в пояснении к этому режиму работы, он предусматривает перезапуск виртуальной машины на резервном физическом сервере, в случае если с основным сервером что-то случилось. Естественно, слово перезапуск означает остановку всех процессов, которые работали в виртуальной машине, и если ваше приложение не терпит даже минутного простоя, то режим HA — скорее всего не для вас. Почему? Потому что время простоя будет складываться из времени детектирования (для ESXi по умолчанию — 15 секунд, для Redhat KVM — 60 секунд) и времени запуска OS + приложений внутри OS, что в общем случае может составлять несколько минут. Однако, в реальной жизни, наверное, требования к времени простоя не настолько жесткие, и большинство отказов может быть вполне хорошо обработано средствами механизма High Availability.

Допустим, что у вас в ЦОД живет приложение, для которого простой даже в полминуты недопустим, ибо Вселенная рухнет  это потребует значительных усилий по восстановлению или может привести к недовольству клиентов, потере денег и т.д. Для такого рода приложений как раз и задумывалась Fault Tolerance.  C инженерной точки зрения — действительно очень интересная технология, ведь зеркалирование всех операций ввода-вывода между двумя операционными системами без заметной потери производительности — задача далеко не тривиальная. И здесь действительно стоит отдать должное компании VMWare — они эту задачу решили очень даже хорошо. Почему я упомянул VMWare и не упомянул других производителей? Дело в том, что собственных разработок у других производителей нет, они работают совместно с т.н. third party продуктами (вроде Marathon или Stratus). Этот факт может наталкивать на мысль, что остальные игроки рынка виртуализации не озаботились собственным решением по FT по той причине, что практическое применение этой технологии в боевых условиях ЦОД имеет подводные камни и не решает всех задач, которые на него планировали погрузить. Что это за подводные камни?

Если говорить о FT в исполнении VMWare, то там до сих пор, к сожалению, действует ограничение — 1 vCPU на одну виртуальную машину (фактически, это одно ядро одного физического CPU). Думаю, что если приложение критическое для бизнес-процессов, то ему может оказаться недостаточно этого ресурса. Но, каждый случай индивидуален и ситуация всегда конкретна, поэтому дальше остается только гадать — является ли это ограничение значительным при внедрении FT на практике.
Однако, на самом деле это все отвлечение от нашей главной темы — обеспечение высокой готовности с помощью FT. Так вот, допустим, администратор установил и настроил приложение, перевел виртуальную машину в режим Fault Tolerance и вздохнул спокойно — теперь никакие катастрофы не страшны. Однако, как показывают исследования (Gartner, “ Top Seven Considerations for Configuration Management for Virtual and Cloud Infrastructures ”,  Ronni J. Colville and George Spafford), в 80% случаев к отказу приводит программный, а не аппаратный сбой. Следовательно, даже при использовании FT, если на основной виртуальной машине мы наблюдаем Blue Screen of Death — на резервной машине будет ровно то же самое и того же цвета. К чему все эти рассуждения? К тому, что Fault Tolerance и High Availability не являются волшебной палочкой, которая защитит вас от любых катастроф. И если ваше приложение действительно требует степень готовности 100% (да, согласен, 100% некорректно звучит, напишем 99.999%) и действительно является очень важным, то здесь скорее стоит задуматься о наличии нескольких копий этого приложения и балансировке нагрузки между ними.

В качестве резюме, еще раз хотелось бы повторить — ни FT ни HA не смогут обеспечить время простоя близкое к нулю в случае программного отказа внутри гостевой операционной системы или собственно вашего приложения. Для подтверждения этого высказывания можете попробовать запустить виртуальную машину в режиме FT, открыть у себя на экране консоль основной и резервной машин, а после этого — принудительно вызвать BSOD на основной машине (удивительно, но Microsoft предусмотрели даже такую возможность — как это сделать написано, к примеру, здесь).

Did you find apk for android? You can find new Free Android Games and apps.
Комментариев пока нет
Добавить комментарий