Виртуализация, облачные вычисления — без этих тем на сегодня не обходится ни одна конференция. Сегодня речь пойдет о применении современных технологий организации обработки данных, с которыми автор на практике работал в течение последних нескольких лет.
В моем понимании виртуализация означает возможность запустить на N аппаратных единиц серверов M операционных систем (M больше или равно N) с работающими на них приложениями самого разного рода, осуществлять мониторинг и управлять работой этой среды.
Рынок систем виртуализации я бы разделил на две группы. Первая группа (далее мы будем говорить о ней) — это решения, работающие на базе систем x86: Microsoft (Hyper-V), VMware (ESX Server), Red Hat, Oracle/SUN, Parallels и ряд других. Эти компании предлагают платформонезависимое (на практике — условно платформонезависимое) ПО, хотя при этом есть жесткие матрицы совместимости с оборудованием, о чем мы расскажем далее. Вторая группа — это IBM AIX и HP-UX, которые предлагают масштабируемые в широком диапазоне программно-аппаратные решения на базе коммерческих версий *NIX. Это отдельный рынок со своей спецификой, и его мы в данной статье не обсуждаем.
Какие плюсы можно ожидать от реализации такой парадигмы виртуалиазции? Во-первых, масштабирование — если потребуется, мы бесшовно вводим в среду виртуализации новые вычислительные единицы (серверы) и перераспределяем задачи без остановки сервиса (или с минимальной по срокам остановкой). Во-вторых, гибкое и оперативное управление ресурсами. В-третьих, повышение КПД использования вычислительных мощностей.
В-четвертых, отказоустойчивость — при выходе из строя одного вычислительного элемента задачи автоматически «переезжают» на другой. В-пятых — экономия на приобретении аппаратных ресурсов, их размещении, энергопотреблении и т. п. В-шестых, оперативность в перераспределении ресурсов и ускорении разворачивания новых приложений и систем. В‑седьмых, решается множество проблем, связанных с разделением ландшафта информационных систем на разработку, тестирование и продуктив. В-восьмых… Пожалуй, я остановлюсь в перечислении положительных аспектов, любой желающий легко отыщет информацию о них.
Далее мы попробуем заглянуть за кулисы театра под названием «Виртуализация» и поговорим о тех нюансах, которые обычно предпочитают не вспоминать маркетологи и продавцы.
Что лежит в основе виртуальной фермы? Это некоторое количество аппаратных серверов (нод), включающих большое количество процессоров и памяти, а также «разгонные» диски для старта ОС некоторой и запуск ПО виртуализации. После этого сервер включается в общую ферму виртуализации, и его ресурсы становятся с определенными ограничениями доступны всем работающим в этой ферме ОС виртуальных машин (серверов). Кроме того, нам необходима высокоинтеллектуальная и производительная локальная сеть, которая позволит виртуальным машинам перемещаться с одной ноды на другую, автоматически адаптируя при этом топологию локальной сети. Ну и еще SAN, так как при переезде задач с ноды на ноду данные (файловая система), с которыми работает ОС виртуальной машины, должны «переехать» вместе с нею.
Отсюда первая ахиллесова пята виртуализации — матрица совместимости используемых ОС виртуальных машин, аппаратных серверов, коммутаторов SAN и систем хранения, и сетевого оборудования. Зачастую это все напоминает детективный роман, интрига которого, увы, раскрывается только после запуска комплекса в эксплуатацию….
Другая проблема, которую сейчас пытаются решить производители ПО систем виртуализации, — работа с портами USB и ленточными накопителями. Если работа с USB уже начинает поддерживаться и есть обходные решения в виде USB over IP (то есть можно сегодня виртуализовать даже «1С» или клиент-банки), то серверы резервного копирования пока еще приходится сохранять в «первозданно-физическом» виде. Отдельные продвижения в этом вопросе уже наблюдаются, но в целом проблема пока еще не решена.
Еще один существенный момент — выделение ресурсов для виртуальных машин. Реально максимальный объем физических ресурсов (ядер процессора и памяти), выделяемых виртуальной машине, ограничен объемами ресурсов нод систем виртуализации. То есть если у вас на ноде есть 8 ядер и 32 Гб памяти, вы можете эмулировать превышающее его количество ресурсов (например, 16 ядер и 64 Гб), но работать виртуальная машина будет все равно на реальных ресурсах ноды. И при повышении нагрузки на виртуальную систему реальная производительность будет ограничена производительностью физической ноды. При планировании среды виртуализации для ресурсоемких систем этот фактор надо обязательно учитывать.
Еще один момент — риски. С одной стороны, при правильно отстроенной среде виртуализации вы снижаете риски выхода из строя физической компоненты (ноды) и можете во многом освободиться от проблем, связанных с ОС и приложениями виртуальной машины (за счет кластеризации и подобных технологий). С другой — если происходит сбой в работе среды виртуализации, он затрагивает значительное (если не все) количество виртуальных машин и построенных на них приложений. И к тому же, уйдя от «родных» рисков, связанных с ОС и приложениями, вы приобретаете взамен другие — связанные с особенностью работы ОС и приложений на виртуальной машине в среде виртуализации. Из моего личного опыта следует, что они довольно многочисленны и весьма разнообразны.
Опять же, сбой в работе системы хранения данных приведет к глобальным пробелам со всеми сервисами, что заставит вас или использовать более дорогую и надежную систему хранения, или примириться с указанным риском.
Очень и очень существенный момент — персонал и его квалификация. Для разворачивания среды виртуализации, управления ею и решения проблем, возникающих при внедрении новых систем, вам потребуются технические специалисты, обладающие соответствующими знаниями и опытом. И эти знания надо будет регулярно обновлять, то есть посылать сотрудников на обучение.
Также значительно усложнится поиск «узких мест», ограничивающих производительность систем.
Еще одни нюанс: требования сертификации. Например, в системах с повышенными требованиями к конфиденциальности виртуализацию, как правило, предлагать не стоит.
Резервное копирование систем тоже отличается от традиционного подхода. Про необходимость сохранять выделенные физические серверы для систем резервного копирования я уже упоминал. А для успешного восстановления вам будет необходимо создавать резервные копии виртуальных машин (аналог резервного копирования системных разделов физических серверов) и решать вопрос о резервном копировании системных разделов физических нод.
Что можно сказать о снижении затрат? Как минимум вам придется дополнительно затратить средства на приобретение лицензий на ПО виртуализации и контракт на его обновление и поддержку (последнее — почти необходимое условие с учетом вышесказанного). Плюс затраты на персонал и его обучение. А вот экономить на эксплуатационных затратах на аппаратные помещения может быть сложно, если у вас не возникают новые приложения или не происходит экстенсивного расширения существующих. Ну, скажем, было у вас Х серверов, например, в 16 монтажных шкафах. За счет виртуализации вы сократили объем до восьми монтажных шкафов — вы же не будете из‑за этого перепланировать вашу серверную? Другой вопрос — если вам нужно будет наращивать мощности для новых систем. В этом случае подобная экономия полезна и даст экономический эффект.
В заключение хочу сказать: автор — однозначный сторонник виртуализации. Я уверен, что в будущем применение подобных технологий будет неуклонно расширяться. Однако «дорога ложка к обеду». Применение любого инструмента надо планировать, соотнося особенности стоящих перед вами задач, а также сильных и слабых сторон инструмента.
Размер имеет значение
Руслан Заединов,
руководитель направления центров обработки данных компании КРОКПреимущества виртуализации лежат на поверхности, однако практика вносит некоторые коррективы. Ведь жизнь сложнее, чем теоретические построения. Первый и, возможно, самый главный — преимущества виртуализации видны только в определенном масштабе. Почувствовать преимущества на трех серверах трудно, а вот на десяти — это уже значительное сокращение затрат.
Второе — очень важно отметить, что автор, говоря о виртуализации, не замыкается на VMware и прочих решениях для x86, обращая внимание на Unix. Виртуализация пришла в мир Unix гораздо раньше, чем в мир x86, и там она давно является штатным средством, которое сопровождает практически любой RISC‑сервер. В сегодняшней ситуации, когда затруднены капитальные вложения, важно уметь пользоваться средствами виртуализации в мире Unix, потому что там преимущества будут видны быстрее. Ведь виртуализация x86‑сервера позволит купить один сервер вместо трех, то есть потратить 10 000 долл. вместо 30 000 долл. А виртуализация RISC‑сервера позволит потратить миллион вместо трех — «размер имеет значение». Третий момент, который хотелось бы отметить, касается систем хранения данных в виртуальных средах. Тут произошел разрыв в технологиях. Серверная виртуализация сильно пошла вперед, в то время как системы хранения данных только созревали. В результате функционал систем хранения часто не отвечает требованиям со стороны фермы виртуализованных серверов. Технологии, которые помогают решить эту проблему, полностью поддерживая виртуальный мир в серверной части, делая и СХД полностью виртуальным, «дозрели» только к 2010 г. Это означает, что полную виртуализацию ЦОД еще никто не видел. Чтобы ощутить все преимущества, необходимо виртуализовать еще и СХД, и даже сеть.
Аналогичная ситуация с системами резервного копирования. Только недавно Symanteс выпустил версии продуктов для резервного копирования, которые глубоко интегрированы со средой управления виртуальными серверами, чтобы грамотно осуществлять резервное копирование виртуальных машин. Все это открывает большой пласт задач, связанных с глубокой оптимизацией всех систем в ЦОД, чем мы уже вплотную занимаемся с нашими заказчиками.