Сервер виртуализации на Ubuntu под VirtualBox 3.2 и phpvirtualbox

Сервер виртуальных машин – один из наиболее важных компонентов любой команды разработчиков. Использование виртуальных машин – способ намного быстрее решать задачи по вычислениям. Однако при необходимости «поднять» такой сервер возникает довольно много неопределенностей и вопросов, которые я сегодня и постараюсь разъяснить.

Да, именно о том, как создать сервер виртуализации, я буду рассказывать в этой статье. Для удобства сформулируем задачу – так будет и проще, и понятнее. Итак, нам необходим сервер виртуализации на команду девелоперов около восьми штук :). Исходя из этого будем составлять конфигурацию. Так как не все поголовно будут использовать виртуальные машины, но запас прочности серверу все же понадобится – возникает вопрос по поводу места сборки сервера.

Можно приобрести «коробочный» вариант, который потянет на кругленькую сумму и будет иметь n-ную мощность, однако намного дешевле, проще и надежнее, в некотором роде, собрать сервер самому. Многие скептически отнесутся к сборке сервера на комплектующих для стационарных компьютеров, а я скажу, что наша группа разработчиков не ощутит никакой разницы, тем более, что стационарные комплектующие уже давным-давно вышли из разряда «хлипких домашних железок» и вполне вытянут круглосуточную нагрузку – главное, не бюджетные варианты железа использовать.

Комплектующие

Если хорошенько посерфить по Сети, можно без проблем найти все необходимое. В первую очередь стоит обратить внимание на корпус. Тут все упирается в то, где конкретно размещаются серверы в офисе. Если руководитель позаботился о приобретении серверной стойки – то нас интересует так называемый «юнитовый» корпус, с горизонтальным размещением и стандартной шириной в 19 дюймов. Чтобы стационарное железо без проблем разместилось в таком корпусе, необходим размер от 3U в высоту, у нас на рынке в рознице имеется такой корпус, по довольно символической стоимости около $120 (посмотрев цены на другие варианты, вы поймете всю символичность:) ). Производитель сего чуда – компания Chieftec. Если же юнитовый корпус негде разместить, то рассмотрите корпуса той же компании-производителя, только форм-фактора full tower, они довольно высоки по сравнению с обычными ATX-корпусами, но и места для толкового проточного охлаждения там на порядок больше.

Что касается железа, то для примера могу привести неплохой конфиг, который я уже использовал для создания чего-то подобного:

. CPU AMD Phenom II x6 Black Edition 1090T;

. MB ASUS M4A79XTD EVO/USB3 Socket AM3 AMD790X;

. DDR III 2x 4 Gb;

. 4 x 500 Gb HDD Seagate Barracuda 7200.12 (ST3500418AS) 7200rpm 16mb SATA II.

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

Материнская плата имеет аппаратную поддержку RAID-массивов пятого уровня, который является наиболее привлекательным среди всех остальных. Рэйд – очень важная вещь в вопросах отказоустойчивости и надежности. RAID 5 использует симметричный массив дисков с чередованием, и хотя у него ниже скорость чтения/записи по сравнению с RAID 1, тем не менее он наиболее удобен и подходит для практически любых задач, будь то сервер виртуализации или домашний мультимедиа-центр.

Так как многие из читателей могли не сталкиваться с массивами дисков, то на пальцах объясню, чем же будет удобен такой массив в работе. Допустим, у нас работает сервер, на нем скапливается довольно важная для команды информация. Вдруг один из дисков рэйда перестает функционировать. В обычной ситуации восстановить информацию с данного диска можно было бы только в специальном центре восстановления, и то все зависело бы от конкретной поломки. При использовании RAID информация, аналогичная записанной на «полетевшем» харде, хранится и на других дисках, так как запись в массив производится с чередованием. В общем, при обычном использовании мы бы просто развели руками и думали, как бы восстановить информацию, а в ситуации с массивом мы достаем вылетевший диск (вот зачем мобильные шасси), скорость чтения/записи падает, потом вставляем новый, за несколько минут информация в массиве перераспределяется, и мы получаем исходный блок дисков без потерь данных – вот в чем самый большой плюс. Да и скорость чтения/записи на порядок выше, чем при обычном использовании, как я уже упоминал.

Кроме всего прочего, я советовал бы приобрести и подключить еще одну гигабитную сетевую карту, что будет полезно и для отказоустойчивости, и для управления, и для расширения сетевого канала до 2 Гб/с – что больше пригодится.

Система

Естественно, для сервера виртуализации стоит использовать *nix систему, ибо Windows будет потреблять больше ресурсов, и она довольно капризна. Следуя традиции, многие захотят поднять подобный сервер на CentOS, все-таки это бесплатная версия энтерпрайза от RedHat, но я отказался от центоса, поскольку всем известно о его проблемах при работе (даже инсталляции) на RAID. Материнская плата у нас новая, ПО, прошитое для аппаратной поддержки массива, — свежее, в общем, при попытке поставить CentOS, надеясь на чудо и админские заклинания, ничего не вышло. Альтернативы долго искать не стоит, лучше сразу взяться за Ubuntu Server 10.10, она легкая и не требует DVD для записи iso. При установке у меня не возникло вообще никаких проблем, правда, стоит заметить, что разметка дисков в текстовом режиме далеко не так удобна, как в анаконде CentOS’а :).

Кроме того, при инсталляции Ubuntu намного удобнее решен вопрос использования proxy в сети компании, для контроля трафика – если у системы не получается подключиться к Интернету, она просто выводит окно и предлагает ввести параметры прокси-сервера, в CentOS необходимо шаманить в конфигах нетворка.

Итак, после установки стоит сразу же позаботиться об обновлении, потому открываем консоль и вводим туда команду:

# sudo apt-get upgrade

И пока сервер качает и инсталлирует пакеты, мы думаем, что делать дальше.

Панель управления сервером

У многих пользователей системы, которые являются unix based, вызывают страх перед консолью, что, смею заверить, безосновательно. Тем не менее, удобнее и быстрее администрировать, когда перед глазами есть что-то хоть немного графическое. Для этого совершенно не стоит устанавливать GNOME, или KDE, или Xface и т.п. Все, что необходимо – поставить панель webmin и администрировать все через web-интерфейс. Учитывается и то, что мы не будем постоянно подбегать к стойке с серверами и подключать монитор и клавиатуру :).

Итак, установка webmin проста до не могу. Итак, нам понадобятся права root’а, потому получаем их сразу, чтобы было проще:

# sudo –i

Едем дальше, теперь нам необходимо добавить репозиторий webmin:

#nano /etc/apt/sources.repo

В консоли откроется документ, который представляет собой список репозиториев. Перемещаем курсор в самый конец списка и добавляем туда:
deb http://download.webmin.com/download/repository sarge contrib

Прекрасно, теперь жмем Ctrl+O для сохранения, далее Enter и на Ctrl+X закрываем редактирование. Теперь надо добавить публичный ключ, чтобы наш установщик пакетов не ругался.

# cd /root > //переходим в папку root

# wget http://www.webmin.com/jcameron-key.asc > //качаем файл с ключом

# apt-key add jcameron-key.asc > //устанавливаем ключ.

Далее все предельно просто:

# apt-get update > //обновляем списки пакетов на репозиториях

# apt-get install webmin > //устанавливаем сам webmin.

После всех этих процедур устанавливаем сервер в стойку, идем к своему рабочему компьютеру и вводим в адресную строку браузера
https://ip_сервера:10000, далее логин и пароль, все это от пользователя root. Вместо IP-адреса можно использовать имя хоста (сервера) в сети.
Установка VirtualBox

Едем дальше, теперь нам надо установить виновника всего этого безобразия, т.к. Virtual Box пропущено что-то?. Не буду засорять вам мозг и рассказывать об установке через компилирование, а просто воспользуемся инсталляцией из репозитория. Снова открываем список репозиториев (учитывая, что права root все еще у нас):

#nano /etc/apt/sources.repo

Вписываем в конец списка репозиторий:

deb http://download.virtualbox.org/virtualbox/debian maverick non-free

Заметьте, что значение «maverick» - это название дистрибутива Ubuntu 10.10. Теперь необходимо добавить публичный ключ для нового репозитория:
#cd /tmp

# wget http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc

# sudo apt-key add oracle_vbox.asc

После этого обновляем списки пакетов командой:

# apt-get update

Нам необходимо поставить пакет dkms, который относится к ядру Virtual Box, для этого делаем следующее:

# apt-get install dkms

И сразу же ставим виртуал-бокс:

# apt-get install virtualbox-3.2

Готово, Virtual Box установлен, перезагружаем сервер командой:

# reboot

После перезагрузки заходим в webmin, добавляем нашего рабочего пользователя в группу vboxusers и конфигурируем драйвер виртуал-бокса командой:
# sudo /etc/init.d/vboxdrv setup

Установка phpvirtualbox

Естественно, мало кому хочется создавать виртуальные машины через консоль :), именно для таких людей и создали веб-интерфейс для Virtual Box. Написан он на ajax, и для его работы нам понадобится установить Apache и php. Идем в консоль и вводим команды:

#sudo –I > //получаем права рута;

# apt-get install apache2 > //устанавливаем Апач;

# apt-get install php5 > // устанавливаем php;

# apt-get install libapache2-mod-php5 > //устанавливаем мод Apache для взаимодействия с php;

# apt-get install php-gd > //устанавливаем либу для изображений.

Готово. По умолчанию папка веб-сервера /var/www. Теперь идем сюда: http://code.google.com/p/phpvirtualbox/downloads/list и скачиваем архив с phpvirtualbox, вместе со скриптом запуска веб-драйвера vboxwebsrv. В архиве имеется папка phpvirtualbox, ее (заметьте, не ее содержимое, а ее) закачиваем в /var/www. После этого открываем там config.php и вписываем логин/пароль нашего рабочего пользователя. Сохраняем и закрываем. Скачанный файл vboxwebsrv заливаем в /etc/init.d/ и ставим на автозапуск в webmin. После этого, без ребута, вводим в консоли команду:
# /usr/bin/vboxwebsrv -b --logfile /dev/null >/dev/null

Открываем браузер на своем компьютере и пишем в адресной строке http://имя_сервера/phpvirtualbox

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

Евгений Кучук SASecurity Group


Компьютерная газета. Статья была опубликована в номере 40 за 2010 год в рубрике soft

©1997-2024 Компьютерная газета