Зачем же нужна виртуализация?
Слово «виртуализация» в последнее время стало какой-то «модой» в ИТ-среде. Все вендоры железа и ПО, все ИТ-компании в один голос кричат, что виртуализация – это круто, современно, и нужно всем. Но, давайте, вместо того, чтобы идти на поводу у маркетинговых лозунгов (а иногда бывают такими, что сам Геббельс умер бы от зависти), попытаемся посмотреть на это модное слово с точки зрения простых «технарей» и решить, нужно нам это или нет.
Типы виртуализации
Итак, начнем с того, что виртуализация делится на три типа:
- Виртуализация представлений
- Виртуализация приложений
- Виртуализация серверов
С виртуализацией представлений знакомы многие из вас: самый яркий пример – это терминальные службы Windows Server. Терминальный сервер предоставляет свои вычислительные ресурсы клиентам, и клиентское приложение выполняется на сервере, клиент же получает только «картинку», то бишь представление. Такая модель доступа позволяет, во-первых – снизить требования к программно-аппаратному обеспечению на стороне клиента, во-вторых – снижает требования к пропускной способности сети, в-третьих – позволяет повысить безопасность. Что касается оборудования – то в качестве терминальных клиентов могут использоваться даже смартфоны или старые компьютеры вплоть до Pentium 166, не говоря уже о специализированных тонких клиентах. Существуют, к примеру, тонкие клиенты в форм-факторе розетки Legrand, монтируемые в короб. На клиентских рабочих местах достаточно установить только монитор, клавиатуру и мышь – и можно работать. Для работы с терминальным сервером не обязательно иметь высокоскоростное подключение к локальной сети, вполне достаточно даже низкоскоростного подключения с пропускной способностью 15-20 кбит/с, поэтому терминальные решения очень подходят фирмам, имеющим сильно распределенную структуру (к примеру – сети небольших магазинов). Кроме того, при использовании тонких клиентов значительно повышается безопасность, потому что пользователям можно разрешить запускать только ограниченный набор приложений, и запретить устанавливать свои собственные приложения. В принципе, то же самое можно сделать и с полноценными клиентскими рабочими станциями, но с использованием терминальных служб это будет сделать гораздо проще, особенно – не предоставляя доступ целиком к рабочему столу, а лишь публикуя отдельные приложения (возможно в Citrix Metaframe/PS, а так же в Windows Server 2008 и выше). Более того, никакую информацию нельзя будет скопировать на и с внешнего носителя, если это явно не разрешено в настройках терминальных служб. То есть проблема «вирусов на флэшках» отпадает автоматически. Еще одно неоспоримое достоинство – снижение сложности администрирования: упрощается обновление приложений (достаточно обновить их на сервере), и упрощается работа служб поддержки: к терминальной сессии любого пользователя можно подключиться удаленно без установки дополнительного ПО.
Недостатков у таких систем два: во-первых – необходимость покупки более мощных серверов (хотя это может быть дешевле, чем множество клиентских рабочих станций с ТТХ, достаточными для запуска приложений локально), во-вторых – появление единой точки отказа в виде терминального сервера. Эта проблема решается за счет использования кластеров, или ферм серверов, но это приводит к еще большему удорожанию системы.
Виртуализация приложений – достаточно интересное, и относительно новое направление. Рассказывать здесь подробно о нем я не буду, поскольку это тема для целой отдельной статьи. Коротко говоря, виртуализация приложений позволяет запускать отдельное приложение в своей собственной изолированной среде (иногда называется «песочница», sandbox). Такой способ помогает решить множество проблем. Во-первых – опять же безопасность: приложение, запущенное в изолированной среде – не способно нанести вред ОС и другим приложениям. Во-вторых – все виртуализированные приложения можно обновлять централизованно из одного источника. В-третьих – виртуализация приложений позволяет запускать на одном физическом ПК несколько разных приложений, конфликтующих друг с другом, или даже несколько разных версий одного и того же приложения. Более подробно о виртуализации приложений можно посмотреть, к примеру, в этом вебкасте: www.techdays.ru/videos/1325.html Возможно, однажды я даже напишу статью на эту тему.
И, наконец, перейдем к виртуализации серверов и остановимся на ней подробно.
Виртуализация серверов – это программная имитация с помощью специального ПО аппаратного обеспечения компьютера: процессор, память, жесткий диск, и т.д. Далее, на такой виртуальный компьютер можно установить операционную систему, и она будет на нем работать точно так же, как и на простом, «железном» компьютере. Самое интересное достоинство этой технологии – это возможность запуска нескольких виртуальных компьютеров внутри одного «железного», при этом все виртуальные компьютеры могут работать независимо друг от друга. Для чего это можно применять?
Первое, что приходит в голову – виртуализацию серверов можно использовать в целях обучения и в тестовых целях. К примеру, новые приложения или ОС можно протестировать перед запуском в промышленную эксплуатацию в виртуальной среде, не покупая специально для этого «железо» и не рискуя парализовать работу ИТ-инфраструктуры, если что-то пойдет не так.
Но кроме этого, виртуализация серверов может использоваться и в продакшн-среде. Причин тому много.
Виртуализация позволяет сократить количество серверов благодаря консолидации, то есть там, где раньше требовалось несколько серверов – теперь можно поставить один сервер, и запустить нужное число гостевых ОС в виртуальной среде. Это позволит сэкономить на стоимости приобретения оборудования, а так же снизить энергопотребление, а значит и тепловыделение системы – и, следовательно, можно использовать менее мощные, и, соответственно – более дешевые системы охлаждения. Но у этой медали есть и обратная сторона, и не одна. Дело в том, что при внедрении решений на базе виртуализации, скорее всего придется покупать новые сервера. Дело в том, что виртуальные сервера используют аппаратные ресурсы физического сервера, и, соответственно – понадобятся более мощные процессоры, большие объемы оперативной памяти, а так же более скоростная дисковая подсистема, и, скорее всего – большего объема. Кроме того, некоторые системы виртуализации (в частности – MS Hyper-V) требуют поддержки процессором аппаратных технологий виртуализации (Intel VT или AMD-V) и некоторых других функций процессора. Многие процессоры, которые выпускались до недавнего времени, в частности – все x86_32bit – этим требованиям не удовлетворяют, и поэтому от старых, хотя и вполне рабочих серверов придется отказаться. Однако же, один более мощный сервер скорее всего будет стоить намного дешевле нескольких менее мощных, да и старые сервера, скорее всего давно пора менять из-за морального устаревания.
Есть еще один очень важный момент: виртуализация северов позволяет до предела упростить администрирование инфраструктуры. Главное преимущество, которое оценят все сисадмины – это возможность удаленного доступа к консоли виртуальных серверов на «аппаратном», точнее – «вирутально-аппаратном» уровне, независимо от установленной гостевой ОС и ее состояния. Так, чтобы перезагрузить «зависший» сервер, теперь не нужно бежать в серверную, или покупать дорогостоящее оборудование типа IP-KVM-переключателей, достаточно просто зайти в консоль виртуального сервера и нажать кнопку «Reset». Помимо этого, виртуальные сервера поддерживают технологию моментальных снимков (о ней см. мою предыдущую статью), а так же бэкап и восстановление виртуальных систем намного легче.
Еще одно неоспоримое преимущество – ОС, запущенная внутри виртуальной машины (гостевая ОС) понятия не имеет, какое оборудование установлено на физическом сервере, внутри которого она работает (хост). Поэтому, при замене железа, при апгрейде или даже переезде на новый сервер необходимо обновить драйверы только на ОС самого хоста (хостовой ОС). Гостевые ОС по будут работать как и раньше, поскольку «видят» только виртуальные устройства.
Так же, хочется напомнить, что в виртуальной среде могут действовать особые правила лицензирования ПО (в частности, покупка лицензии на Microsoft Windows Server 2008 Enterprise позволяет использовать бесплатно четыре копии ОС в качестве гостевой, а Microsoft Windows Server 2008 Datacenter вообще разрешает использовать неограниченное число гостевых ОС при условии полного лицензирования по процессорам).
Еще нельзя не упомянуть о технологиях отказоустойчивости. Физические сервера, на которых запускаются виртуальные машины, могут быть объединены в кластер, и в случае отказа одного из серверов – автоматически «переезжать» на другой. Полной отказоустойчивости добиться не всегда возможно (в частности, в MS Hyper-V такой «внезапный переезд» будет выглядеть так же, и иметь такие же возможные последствия, как внезапное обесточивание сервера), но возможные простои сильно сократятся: «переезд» занимает несколько минут, тогда как ремонт или замена самого сервера может занять часы, а то и дни. Если же «переезд» виртуальных машин происходит в штатном режиме, то он может пройти совершенно незаметно для пользователей. Такие технологии у разных вендоров называются по-разному, к примеру у MS она называется «Live Migration», у VMware – Vmotion. Использование таких технологий позволит проводить работы, связанные с выключением сервера (к примеру – замену некоторых аппаратных компонент, или перезагрузку ОС после установки критических обновлений) в рабочее время и не выгоняя пользователей из их любимых приложений. Кроме этого, если инфраструктура построена соответствующим образом – запущенные виртуальные машины могут автоматически перемещаться на менее нагруженные сервера, или же наоборот «разгружать» наиболее загруженные. В инфраструктуре на базе технологий Microsoft для этого используются System Center Virtual Machine Manager и Operations Manager.
В заключение темы по виртуализации серверов — отмечу, что виртуализация не всегда одинаково полезна. В частности, не всегда будет хорошей идеей переносить в виртуальную среду высоконагруженные сервера, а особенно — высоконагруженные по дисковой подсистеме — это «тяжелые» СУБД, Exchange Server, особенно — роль Mailbox Server, и прочие высоконагруженные приложения. А вот сервера с меньшей нагрузкой (контроллеры доменов AD, WSUS, всевозможные System Center * Manager, веб-сервера) виртуализировать можно и даже нужно. Замечу, кстати, что именно с контроллерами доменов — очень желательно, чтобы хотя бы один из контроллеров был «железным», то есть не виртуальным. Нужно это потому, что для корректной работы всей инфраструктуры желательно, чтобы при запуске всех остальных серверов хотя бы один КД уже был доступен в сети.
Резюме
Итак, давайте подведем итоги: какая именно виртуализация когда может пригодиться, и какие у нее есть плюсы и минусы.
Если у вас есть много пользователей, работающих с одинаковым набором ПО, и система сильно распределена территориально – то стоит подумать об использовании виртуализации представлений, сиречь – терминальных службах.
Достоинства такой системы:
- Снижение требований к «железу» на стороне клиентов
- Снижение требований к пропускной способности сети
- Повышение безопасности
- Значительное упрощение администрирования и поддержки
Недостатки:
- Повышения требований к серверам, как по производительности, так и по надежности
- Возможная единая точка отказа
Если у вас существует множество приложений, которые некорректно работают в новой ОС, либо же конфликтуют между собой, или необходимо запускать на одном компьютере несколько версий одной и той же программы – то нужна виртуализация на уровне приложений.
Достоинства:
- Безопасность
- Простота администрирования — централизованное обновление и разграничение прав на доступ к приложениям
Недостатки:
- Некоторая сложность в понимании технологий и в практическом внедрении.
Если же вам нужно освободить место в стойке, снизить энергопотребление систем, избавиться от «серверного зоопарка» — то ваше решение – виртуализация серверов.
Достоинства такого решения:
- Экономия места в стойках
- Снижение энергопотребления и тепловыделения
- Упрощение администрирования
- Широкие возможности по автоматизации развертывания и управления серверами
- Снижение вынужденных и запланированных простоев системы за счет failover-кластеров и live migration
- Позволяет (при использовании ОС Microsoft Windows Server) сэкономить на лицензиях на гостевые ОС
Недостатки – в принципе, те же, что и у терминальных решений:
- Повышение требований к аппаратному обеспечению серверов
- Возможная единая точка отказа – физический хост и хостовая ОС
Надеюсь, моя статья окажется для кого-то полезной. Благодарность и конструктивную критику, как всегда, можно высказать в комментариях.