Мария Сысойкина
maria@inion.ru

В последнее десятилетие децентрализованный подход к управлению производством вкупе с удешевлением техники и достаточно крупными капиталовложениями в индустрию high-tech привели к стремительному развитию ИТ-отделов крупных компаний. Но при этом зачастую используется принцип "новая задача - новый сервер". В итоге многие ИТ-отделы оказываются привязанными к тяжелой, неповоротливой структуре и утрачивают одно из главных преимуществ горизонтального роста - малое время реагирования на рыночные изменения.

Возникающие проблемы управления и сопровождения частично решаются путем унификации решений, использования единого ПО для управления рабочими станциями и т. п. Однако если управлять, допустим, несколькими тысячами рабочих станций с единым ПО еще реально, то обслуживать тысячу разнотипных серверов, выполняющих абсолютно разные задачи, практически невозможно. Рано или поздно руководители крупных ИТ-отделов оказываются перед выбором новой стратегии, которая позволила бы если не сократить число серверов, то хотя бы минимизировать затраты на их сопровождение.

Подходы к консолидации серверов

Предположим, существует некий отдел, имеющий N серверов, которые обслуживают соответственно N бизнес-приложений. Для простоты будем считать, что все они работают под управлением одной ОС. Как в этом случае сократить расходы на сопровождение серверов и приложений и повысить надежность всей системы? Существует несколько стандартных подходов, позволяющих в той или иной степени решить такую задачу.

Во-первых, можно провести реинжиниринг отдела. В результате окажется, что для ряда приложений можно использовать унифицированное ПО, - за счет этого число серверов несколько сократится, однако полностью это решение не снимет проблемы сопровождения серверов и приложений.

Во-вторых, можно использовать подход логической централизации: сами серверы размещаются там, где это удобно, а управление ими осуществляется из единого центра. Но и в этом случае решается только часть задачи. Управление серверами делается проще и надежнее, однако меньше их от этого не становится, а следовательно, не сокращаются затраты на сопровождение.

В-третьих, можно физически разместить все серверы в одном центре и управлять ими на месте. За последнее время практически все ведущие производители серверов выпустили линейки машин, ориентированных на физическую консолидацию - концентрацию их парка в одном месте. Такие ультратонкие серверы формата 1U, с пониженными габаритами и уменьшенным энергопотреблением, позволяют значительно повысить эффективность использования физического пространства, что тоже немаловажно. Однако и концентрация серверов на общей территории не решает материальных проблем их сопровождения и внедрения: установка нового сервера по-прежнему требует физического доступа в машинный зал, коммутации кабельных систем, выделения места в зале и других подобных операций практически в том же объеме, что и до физической консолидации.

Таким образом, ни один из стандартных подходов не решает в полном объеме основную задачу - минимизацию затрат на сопровождение. Очевидно, что решить ее можно, лишь сократив число самих серверов.

Разумеется, можно купить один мощный сервер и запустить на нем все приложения, используя возможности многозадачной ОС. Но в ситуации, когда один сервер обслуживает несколько пользователей или организаций (например, Web-хостинг или хостинг приложений), использование многозадачной ОС зачастую не обеспечивает достаточной независимости установок (для каждого пользователя и приложения) или устойчивости системы при частой перезагрузке приложений.

Чтобы добиться независимости и безопасности работы многих пользователей на одном сервере, можно создать несколько разделов с копиями одной и той же ОС. В этом случае мы добьемся независимости в установках и управлении приложениями, а кроме того, каждая задача будет гарантированно иметь нужное количество ресурсов (память, процессор, дисковое пространство). Однако разбивка сервера на разделы предполагает жесткое разделение ресурсов, что часто приводит к неэффективному их использованию. Это означает, что ресурсы не разделяются между пользователями: даже если какое-то приложение или задача не использует всей выделенной ей памяти или диска, эти неиспользуемые ресурсы не будут доступны другим разделам. К тому же на одном сервере можно выделить лишь ограниченное число разделов с учетом того, что у каждого пользователя должно быть достаточно памяти, места на диске и ресурсов процессора. Скажем, если у нас есть 16-процессорный сервер, то на нем можно создать только 16 разделов, гарантированно обеспеченных ресурсами одного процессора. Таким образом, использование разделов хотя и гарантирует достаточное количество ресурсов каждому приложению и обеспечивает гибкость управления системой, но остается слишком дорогостоящим методом.

При использовании метода выделения разделов весьма полезной была бы возможность виртуально тиражировать имеющиеся ресурсы, не ограничиваясь физическими ресурсами. Кроме того, желательно иметь средство, позволяющее управлять количеством ресурсов, выделяемых каждому пользователю (приложению, задаче, разделу), в каждый конкретный момент работы, и выделять ему столько, сколько требуется.

Технологии виртуализации

Тиражирование физических устройств (прежде всего памяти) для параллельно работающих приложений было известно еще со времен многозадачных операционных систем. Сервер, имеющий реально только 1 Гбайт физической памяти, мог обеспечивать сотни гигабайт виртуальной памяти для работающих на нем приложений, при условии, что не вся память потребуется приложениям одновременно. Впоследствии развитие технологии виртуализации позволило тиражировать целые компьютеры и обеспечило одновременную работу нескольких ОС на одном физическом оборудовании.

Однако существует и другой подход к решению задачи виртуального тиражирования - виртуализация ОС и API. Для серверов Intel-архитектуры применяются два способа виртуализации - виртуальная машина и виртуальный сервер.

Корпорация IBM реализовала концепцию виртуальной машины еще в 1970-е годы - на мэйнфреймах 360/370. Эта разработка позволяла каждому пользователю работать на одной ЭВМ с нужным вариантом ОС. Наиболее известные современные реализации концепции "виртуальной машины" - пакет VMware, выпущенный одноименной компанией (http://www.vmware.com), и Virtual Server производства Connectix (http://www.connectix.com). И VMware, и Virtual Server позволяют запускать на одном компьютере несколько физических копий одной ОС, однако такой подход недостаточно гибок и слишком требователен к ресурсам компьютера. Технология VMware, например, использует идею физического выделения разделов без совместного их использования запущенными копиями эмулятора. Выигрыш здесь лишь в том, что каждый раздел работает с собственной копией ОС, т. е. имеет собственный набор файлов, обеспечивающих функционирование ОС.

Да и изначальное предназначение "виртуальных машин" несколько не отвечает требованиям консолидации: VMware и продукты Connectix предназначены для тестирования и решения исследовательских задач, а не для централизации управления ИТ-отделом.

Альтернативный подход - "виртуальные выделенные серверы" (VPS) - реализован в продукте Virtuozzo компании SWsoft (http://www.swsoft.ru). Virtuozzo предназначен для управления ресурсами серверов на базе 64-разрядных и 32-разрядных серверов архитектуры Intel. Заложенная в основe этого продукта концепция предлагает более эффективное использование ресурсов компьютера: на базе единственной копии ОС создаются независимые виртуальные серверы.

Между архитектурами виртуальной машины и виртуального выделенного сервера есть качественное различие - Virtuozzo превосходит VMware и по гибкости, и по масштабируемости, и по эффективности использования ресурсов компьютера. В отличие от VMware, продукт SWsoft не эмулирует аппаратную часть компьютера, а потому накладные расходы не превышают нескольких процентов от ресурсов компьютера.

Virtuozzo

Virtuozzo позволяет реализовать на компьютерах класса x86 те же базовые концепции управления, что были заложены еще 30 лет назад на мэйнфреймах. Благодаря централизованному управлению сотнями разделов (виртуальных серверов), расположенных на нескольких физических серверах, резко снижается стоимость обслуживания серверной инфраструктуры.

Одно из ключевых достоинств Virtuozzo - возможность управления сотнями VPS одновременно. Например, в один и тот же момент можно сразу на нескольких VPS выполнять такие операции, как обновление системы безопасности и установка новых приложений.

Благодаря применяемой в Virtuozzo технологии разделения ресурсов каждый создаваемый раздел может при необходимости использовать практически все возможности физического сервера. Кроме того, каждый из сотен VPS, создаваемых на сервере, обладает полной функциональностью отдельного сервера, включая возможности администрирования (root-доступ), перезагрузки, установки любых приложений, изменений в файлах и т. д. При этом мониторинг, контроль над аппаратной частью и прочие подобные операции позволяют управлять не только ресурсами процессора, дисковым пространством и сетевыми ресурсами, но и памятью, включая буфер диска и кэш ядра. Таким образом, каждый виртуальный сервер оказывается полностью изолированным, имея гарантированный минимум и максимум предоставляемых ресурсов.

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

На сегодня доступны версии Virtuozzo для ОС Linux (несколько дистрибутивов) и FreeBSD. Отсутствие версии для Windows объясняется изначальным недостатком спроса на нее: традиционно основные потребители технологии виртуализации - это хостинг-провайдеры, а подавляющее большинство из них работает на серверах Unix и Linux. Кроме того, существуют и отдельные технические сложности, связанные с отсутствием открытых исходных текстов Microsoft Windows.

Поскольку Virtuozzo существует в версиях для Linux и FreeBSD, то вполне закономерен вопрос о возможности одновременно использовать обе этих ОС для управления серверами. Что касается VPS на базе различных дистрибутивов Linux, то все их можно использовать внутри одной машины одновременно (на одной машине можно запустить сразу несколько VPS под управлением разных дистрибутивов Linux).

Но иметь виртуальные выделенные серверы под управлением Linux и FreeBSD в рамках одного физического сервера невозможно. Естественно, управлять двумя и более физическими серверами с Linux и FreeBSD можно с одного компьютера. При переносе VPS между машинами на обоих физических серверах должна быть установлена одна и та же версия шаблона ОС. Добавить шаблон можно без проблем на любую установку Virtuozzo за пару минут (если его нет, то система откажется выполнять операцию). Соответственно нельзя переносить VPS напрямую с FreeBSD в Linux и наоборот.

Виртуальный выделенный сервер ведет себя как самостоятельный изолированный физический сервер. При этом выполняются следующие условия:

  • сервер имеет свои собственные процессы, пользователей, файлы и root-доступ;
  • каждому VPS приписаны свои IP-адреса, порты и т. д.;
  • каждый VPS имеет свои конфигурационные файлы как для системы в целом, так и для отдельных приложений;
  • каждый VPS может иметь собственные версии системных библиотек или даже изменять существующие;
  • пользователь VPS имеет право удалять, добавлять и менять любые файлы, включая файлы в папке root, и устанавливать собственные приложения или конфигурировать и менять приложения root-пользователя.

Виртуальные выделенные серверы Virtuozzo

Систему виртуальных серверов, существующих под управлением Virtuozzo, можно представить в виде нескольких уровней (рис. 1). Нижние, физические уровни обеспечивают аппаратную часть любого сервера. Физический сервер именуется Hardware Node. Одновременно можно управлять несколькими такими серверами, на которых могут быть установлены различные ОС.

Fig.1
Рис. 1. Реализация виртуальных выделенных серверов.

На следующем уровне представлена операционная система сервера, так называемая корневая ОС (Root OS). Это та самая ОС, в которой будут функционировать создаваемые виртуальные среды (VE). Как было сказано выше, при использовании Linux на одном физическом сервере можно работать с несколькими различными дистрибутивами этой ОС. После установки ОС на сервере устанавливается сам пакет Virtuozzo, а также прикладное ПО сервера (Root Application Software). Прикладное ПО сервера - это файлы ОС, обслуживающие сервер Virtuozzo в целом (host OS в терминах VMware). Затем на сервере определяются шаблоны приложений для будущих VPS.

Каждый виртуальный выделенный сервер имеет набор параметров, гарантирующих определенное качество сервиса (Quality of Service, QoS) и задаваемых при создании VPS. В числе таких настроек можно задать:

  • квоты ресурсов процессора, диска и сети;
  • объемы доступной памяти (кэш ядра, физическая и виртуальная память);
  • параметры ввода-вывода.

Собственно говоря, Virtuozzo состоит из ядра, панели управления и набора шаблонов. Ядро - это сама система, основные механизмы и функции. Что касается панели управления, то здесь возможен выбор. Для различных целей можно использовать разные панели, например, Confixx или Plesk. В комплекте с Virtuozzo поставляется и своя, "родная", панель - VZMC (Virtuozzo Management Console).

Шаблоны, важнейшая часть Virtuozzo, представляют собой операционные системы или наборы приложений, используемые многими VPS. Шаблон как таковой необходим для создания новых виртуальных серверов. Соответственно в Virtuozzo различают шаблоны ОС и шаблоны приложений. Первые определяют набор системных файлов ОС, доступных тем VPS, которые созданы на основе шаблона. Иначе говоря, разные VPS совместно обращаются к одним и тем же файлам, используемым в одном шаблоне. Нынешняя версия Virtuozzo для Linux поддерживает шаблоны для таких дистрибутивов, как RedHat (7.1, 7.2, 7.3, 8.0, 9.0), Suse (8.0, 8.1, 8.2), Debian 3.0, ASPLinux (7.1, 7.3, 9.0).

Шаблоны приложений определяют набор типовых приложений, обеспечивающих решение стандартных задач на множестве одинаковых VPS. Например, если на базе Virtuozzo реализуются VPS для поддержки множественных Web-серверов, имеет смысл создавать эти виртуальные серверы по одному шаблону, определяя в нем все те специфические для Web-сервера приложения, которые будут использоваться на каждом отдельном виртуальном сервере. В этом случае значительно упрощается и процесс создания нового VPS, и, естественно, процесс поддержки: имея несколько однотипных VPS, администратор может обновлять все ПО или отдельные библиотеки сразу на всех этих виртуальных серверах.

Virtuozzo Management Console

Все управление виртуальными серверами осуществляется из панели управления. Как упоминалось выше, в пакет Virtuozzo входит "родная" панель - GUI-интерфейс VZMC.

Управление традиционными серверами зачастую требует физического присутствия администратора даже для выполнения несложных операций, таких, как перезапуск сервера, обновление системы или установка приложений. VZMC позволяет выполнять все эти и многие другие операции удаленно и сразу на многих серверах.

Панель VZMC была разработана для того, чтобы упростить выполнение общих задач администрирования. С ее помощью можно управлять сотнями и тысячами VPS на десятках физических серверов. Средства консоли управления позволяют создавать, запускать и останавливать сразу множество VPS, переносить любое число виртуальных серверов на другие физические серверы, проводить мониторинг систем и т. д.

На рис. 2 показана сама Virtuozzo Managment Console. На левой панели отображаются в виде дерева доступные физические серверы (Hardware Node), а на правой - все доступные VPS на одном из серверов. Как видно, некоторые физические серверы работают под ОС Linux, другие - под ОС FreeBSD.

Fig.2
Рис. 2. Virtuozzo Management Console: управление физическими серверами.

В состав VZMC входят специальные Мастера (wizards), позволяющие создавать VPS для выполнения ряда стандартных задач, например, для создания DNS-сервера, Web-сервера, сервера БД и т. п. (рис. 3). Мастера также позволяют настраивать параметры QоS и сохранять их для дальнейшего использования при создании новых виртуальных выделенных серверов.

Fig.3
Рис. 3. Мастер создания нового VPS.

Что касается управления отдельными виртуальными серверами, VZMC позволяет модифицировать практически все параметры настройки Virtuozzo. В частности, предусмотрены такие операции, как установка квот на использование дискового пространства отдельного VPS; отслеживание использования сетевых ресурсов каждого VPS; задание местонахождения журналов Virtuozzo и системных каталогов, например, для шаблонов.

Очевидно, что ни многозадачная ОС, ни организация разделов не предоставляют таких возможностей настройки среды и управления ресурсами, которые доступны VPS. В Virtuozzo для каждого отдельного виртуального выделенного сервера можно настраивать практически все аспекты функционирования. На рис. 4 показан основной экран конфигурации виртуального сервера.

Fig.4
Рис. 4. Основной экран настройки VPS.

Virtuozzo позволяет настраивать следующие параметры функционирования каждого VPS:

  • монтирование CD-ROM или фрагментов файловой иерархии физического сервера в VPS;
  • управление пропускной способностью сети (можно ограничивать пропускную способность для каждого конкретного VPS или же установить определенные ограничения для всех VPS разом);
  • учет сетевого трафика - если установить эту возможность, то можно будет отслеживать, какой объем данных передается по сети каждому VPS;
  • использование сетевого экрана для каждого отдельного VPS - позволяет контролировать доступ к VPS по сети.

Помимо настройки параметров работы отдельных серверов VZMC имеет ряд функций, обеспечивающих мониторинг системы и сбор статистики. Во-первых, можно устанавливать специальные оповещения (alerts), соответствующие каким-либо событиям. Так, VZMC позволяет определить, какое действие выполняется, если конкретный VPS достигает лимита одного или нескольких параметров QoS.

Во-вторых, VZMC предоставляет гибкую систему настройки протоколирования событий. Журналы можно просматривать в режиме реального времени или сохранять в отчетах. По умолчанию Virtuozzo заносит в протокол такие события, как создание, старт и остановка VPS, однако можно настроить систему на протоколирование всех выполняемых команд.

Информация о текущем состоянии VPS графически отображается специальной утилитой - монитором VZMC. Монитор отслеживает все параметры QoS, счетчики использования процессора, диска и сети и т. д.

Безопасность в Virtuozzo

Virtuozzo предоставляет весьма серьезные средства безопасности как всей системы в целом, так и каждого виртуального выделенного сервера. Прежде всего из таких средств следует упомянуть возможность настройки сетевых экранов - можно настроить брандмауэр, предотвращающий нежелательный доступ к физическому серверу в целом, или же отдельные экраны для выбранных VPS.

Для ряда критически важных сервисов (например, для DNS-сервера) настройки сетевых экранов автоматически входят в шаблоны приложений. Предусмотрена возможность организации виртуального выделенного сервера для выполнения одного-единственного приложения. Например, если в системе безопасности обнаруживается брешь, то потенциально опасное приложение изолируется в отдельный виртуальный сервер, но целостность всего остального сервера при этом не затрагивается.

Что касается обновлений системы безопасности, то, как было сказано выше, такие операции можно проводить сразу на нескольких сотнях работающих VPS. Эту возможность обеспечивают шаблоны приложений.

Консолидация серверов

Проект консолидации серверов может быть начат на работающей системе в любой момент, он абсолютно не требует изменения существующих приложений и переобучения персонала. Virtuozzo способен выполнять все стандартные приложения Linux и BSD без изменений. Что касается программных комплексов (SQL-баз данных, Web-сайтов, почтовых и файловых серверов и т. д.), то их можно перенести на виртуальный сервер с минимумом затрат. Кроме того, приложения, разработанные на платформах Windows или Unix для серверов приложений, например, BEA Weblogic, Oracle IAS или IBM WebSphere, также в большинстве своем работают под Virtuozzo без изменений.

Имеющиеся в Virtuozzo возможности переноса VPS на другой сервер значительно уменьшают время простоя системы в случае обновлений оборудования. Достаточно лишь подключить новый физический сервер и перенести на него все VPS. Система при этом отключается лишь на несколько секунд.

На сегодняшний день в России Virtuozzo в большей степени используется как основа для пакета HSPсomplete, предназначенного для компаний, обеспечивающих предоставление ресурсов и хостинг. Однако в последнее время пакет приобретает известность и как инструмент серверной консолидации. В качестве примера упомянем договор, заключенный компаниями SWsoft и "АСофт" (один из ведущих отечественных производителей ПО для банков) и предусматривающий поставку и установку системы безналичных расчетов на основе международных банковских карт. Система функционирует на платформе Virtuozzo в АКБ "Русь-Банк". География продаж Virtuozzo не ограничена только Россией - технология очень успешно продается по всему миру. Офисы продаж компании в России, Европе, Америке и Сингапуре предоставляют клиентам необходимое техническое обслуживание.

В скором времени планируется выход в свет версии Virtuozzo для Windows. По словам разработчиков, несмотря на кардинальные различия во внутреннем устройстве ОС Windows и Linux/FreeBSD, общие принципы реализации не изменятся, и функциональность с точки зрения потребителя останется в Windows-версии на том же уровне, что и в версиях для Linux/FreeBSD. В Windows-версии точно так же будет поддерживаться возможность быстрой миграции виртуальных серверов, высокий уровень масштабируемости (сотни VPS на одном физическом сервере), возможность практически полностью задействовать все аппаратные ресурсы системы (процессоры, физическую память и т. д.) внутри одного виртуального выделенного сервера и другие характерные для Virtuozzo средства разделения данных и управления кластерами компьютеров.