Содержание статьи
- 1. Что такое Virtuozzo
- 2. Как это работает
- 3. Системные требования и ограничения
- 4. Установка Virtuozzo
- 5. Выбор шаблона
- 6. Создание и настройка контейнера
- 7. Управление ресурсами контейнера
- 8. Управление контейнерами
- 9. Запуск команд и вход в гостевую операционную систему
- 10. Делаем работу с Virtuozzo удобнее
1. Что такое Virtuozzo
Parallels Virtuozzo Containers, или просто Virtuozzo, — уникальное решение, объединяющее гипервизор KVM и виртуализацию на базе контейнеров, продукт компании Virtuozzo, Inc. В отличие от других подобных решений, Virtuozzo устанавливается на голое железо и представляет собой отдельный дистрибутив Linux (Virtuozzo Linux), который уже оптимизирован для задач виртуализации и хостинга. Все, что нужно, — взять и установить его на машину, которая будет сервером виртуализации. При этом не требуется устанавливать или компилировать ядро, бороться со всевозможными глюками, и никто не ограничивает тебя возможностями ядра 2.6 — Virtuozzo использует ядро 3.10 с долгосрочной технической поддержкой.
2. Как это работает
Virtuozzo Linux устанавливает будущий сервер виртуализации, далее администратор создает, настраивает и запускает контейнеры или виртуальные машины — каждая из которых превратится в виртуальный сервер (Virtual Private Server).
Дальше все зависит от поставленных задач — например, можно превратить виртуальные серверы в веб-серверы и продавать их (типичное решение для VPS-провайдера). Виртуальные серверы могут работать под управлением различных дистрибутивов Linux (а внутри виртуальной машины можно запустить вообще любую ОС, даже Windows Server 2012 R2) — ты можешь выбрать из предустановленных шаблонов тот, который больше нравится. После того как виртуальный сервер запущен, уже никто не ограничивает администратора в установке и настройке программного обеспечения. В виртуальные серверы дистрибутивы Linux устанавливаются как полноценные, а не как урезанные копии.
Схема виртуализации изображена на рис. 1. Сам рисунок позаимствован из документации по Virtuozzo. Так, у нас есть железо сервера, есть уровень виртуализации и есть контейнеры.
Контейнеры выглядят как независимые серверы под управлением Linux. Контейнеры не применяют для виртуализации эмуляцию аппаратуры, а эффективно разделяют общее ядро и его ресурсы между всеми контейнерами и самим физическим сервером.
Каждый контейнер может распоряжаться ресурсами всего физического сервера, также можно эффективно ограничивать использование им памяти, процессорного времени, операций ввода-вывода и сетевого трафика.
Технология контейнерной виртуализации предоставляет наивысшую плотность среди других решений виртуализации. Можно создать и запустить сотни контейнеров на стандартном физическом production-решении. В каждом контейнере может быть только одна операционная система, что упрощает обслуживание и обновление контейнеров.
3. Системные требования и ограничения
Системные требования для автономных установок выглядят так:
- платформа x86-64 с аппаратной поддержкой виртуализации Intel VT-x (с «неограниченным гостем»);
- минимум четырехъядерный 64-битный процессор;
- минимум 4 Гбайт оперативной памяти;
- минимум 64 Гбайт на жестком диске, желательно SSD;
- сетевой адаптер Ethernet с подключением к сети и корректным IP-адресом.
Проверить, поддерживает ли твой Intel-процессор «неограниченного гостя», можно с помощью этого сценария. Запусти его так:
python vmxcap.py | grep -i unrest
Результат должен быть yes.
Системные требования для размещения серверов в Virtuozzo Storage Cluster:
- Virtuozzo 7;
- 1 Гбайт оперативной памяти на каждые 100 Тбайт хранилища;
- 10 Гбайт или более дискового пространства;
- 1 Ethernet-адаптер 1 Гбит/с, статический IP-адрес для каждого адаптера.
Ограничения:
- максимальный объем оперативки (сертифицированный) — 256 Гбайт, теоретический максимум — 64 Тбайт;
- максимальный размер HDD — 16 Тбайт.
4. Установка Virtuozzo
Установка Virtuozzo аналогична установке дистрибутива Fedora — инсталлятор Anaconda абсолютно такой же (рис. 2). Для установки Virtuozzo нужно выполнить следующие действия:
- Загрузиться с инсталляционного диска.
- Нажать кнопку «Installation destination».
- Если устанавливаешь на новый сервер, где нет операционной системы, выбери «Automatically configure a partitioning» и нажми кнопку «Done» (рис. 3).
- Если операционная система уже установлена и есть желание ее сохранить, тогда нужно выбрать «I will configure partitioning» и настроить разделы вручную.
- Нажать кнопку «Begin installation» (рис. 4).
- Во время установки системы нужно установить пароль root и создать одного обычного пользователя (рекомендуется из соображений безопасности), см. рис. 5.
После перезагрузки появится возможность войти в систему (рис. 6).
5. Выбор шаблона
Перед созданием контейнера необходимо выбрать шаблон операционной системы (OS EZ Template), проще говоря — операционную систему, которая будет в контейнере.
Для просмотра всех шаблонов введи команду
vzpkg list --with-summary | less
Дистрибутивы доступны на любой вкус, как RH-совместимые, так и богатый выбор дистрибутивов Debian/Ubuntu. Посмотреть, есть ли какой-то определенный дистрибутив, удобнее при помощи команды grep
:
vzpkg list --with-summary | grep centos
6. Создание и настройка контейнера
Создать контейнер на базе определенного шаблона можно так:
prlctl create MyCT --vmtype ct --ostemplate centos-6-x86_64
Создать контейнер на базе шаблона по умолчанию позволяет команда
prlctl create MyCT --vmtype ct
Шаблон по умолчанию указывается в /etc/vz/vz.conf
. Кстати, по умолчанию используется шаблон centos-7.
Все содержимое контейнеров хранится в приватной области контейнера. Чтобы выяснить, где она находится, используется команда prlctl list
:
prlctl list MyCT -i | grep "Home"
Home: /vz/private/26bc47f6-353f-444b-bc35-b634a88dbbcc
При желании эту область можно перенести на другой жесткий диск — более быстрый или там, где есть больше свободного пространства.
7. Управление ресурсами контейнера
После создания контейнера его конфигурация хранится в файле /etc/vz/conf/<ID контейнера>.conf
. По умолчанию создается контейнер с 64 Мбайт оперативной памяти, 10 Гбайт дискового пространства, 1000 единиц CPU. Пример конфигурационного файла приведен на рис. 10.
Очень важен параметр ONBOOT
— если он включен (значение yes), то контейнер будет загружаться при запуске сервера виртуализации.
Единственное, к чему придется привыкнуть, — это неудобные идентификаторы контейнеров. Вывести список доступных контейнеров можно командой
prlctl list -a
Поле STATUS показывает состояние контейнера или виртуальной машины, IP-ADDR — IP-адрес контейнера, T — это тип объекта, может быть или CT (контейнер), или VM (виртуальная машина), NAME — это имя контейнера/машины, заданное при создании (в нашем случае MyCT). Конечно же, UUID содержит уникальный идентификатор контейнера/машины.
Рассмотрим несколько примеров управления ресурсами контейнера (подробная информация есть в мануале). Начнем с изменения производительности процессора. По умолчанию задается 1000 процессорных единиц (CPU Units). При желании можно повысить производительность процессора и отдать больше процессорных единиц:
prlctl set MyCT --cpuunits 2000
Процессорные единицы — немного абстрактное понятие, но Virtuozzo позволяет задавать конкретные значения. Так, в следующем примере контейнер не может расходовать более 25% от физического процессорного времени:
prlctl set MyCT --cpulimit 25
Можно задать частоту процессора контейнера (750 МГц):
prlctl set MyCT --cpulimit 750m
Или ограничить количество ядер:
prlctl set MyCT --cpus 1
Теперь о памяти. Задать размер оперативки и свопа можно так:
prlctl set MyCT --memsize 1G --swappages 512M
Можно также отредактировать файл конфигурации контейнера (разумеется, при остановленном контейнере):
PHYSPAGES="65536:65536"
SWAPPAGES="65536"
Изменить размер виртуального диска позволяет команда prl_disk_tool
:
prl_disk_tool resize --hdd /vz/private/b0ba4e74-44d9-49c9-9587-49de1b2377cd/root.hdd/root.hds --size 80G
Перед изменением размера нужно остановить контейнер / виртуальную машину, а также удалить любые снапшоты, если они были созданы.
Параметры сети задаются так:
prlctl set MyCT --hostname myct.example.com
prlctl set MyCT --ipadd 192.168.52.101
Первая команда определяет имя узла, вторая — его IP-адрес. Процесс настройки контейнера изображен на рис. 12.
8. Управление контейнерами
Что ж, после настройки контейнера самое время его запустить. Для этого используется команда
# prlctl start MyCT
После этого сразу вводим команду просмотра состояния prlctl list -a
и видим, что наш контейнер запущен (статус running) и ему присвоен IP-адрес 192.168.52.101. Попробуем его пропинговать. Результат всех этих действий приведен на рис. 13. Как видишь, контейнер полностью функционирует — он запущен, и к нему идет ping.
Для остановки и перезапуска контейнера используются команды stop
и restart
соответственно:
prlctl stop MyCT
prlctl restart MyCT
Для удаления контейнера его нужно сначала остановить, а потом удалить:
prlctl stop MyCT
prlctl delete MyCT
9. Запуск команд и вход в гостевую операционную систему
Для выполнения произвольных команд используется команда exec
. Первым делом изменим пароль root:
prlctl exec MyCT passwd
Теперь попробуем подключиться по SSH к гостевой ОС:
ssh 192.168.52.101
Служба sshd на гостевой ОС уже запущена, что упрощает управление гостевой операционкой. Вообще, можно вводить команды и через exec, но по SSH, думаю, будет удобнее. На рис. 15 показано подключение к гостевой операционке, показана разметка диска контейнера, а также использование памяти.
После установки SSH-подключения можно вводить команды без префикса prlctl exec, что гораздо удобнее.
Вот, собственно, и все! Виртуальный сервер создан и работает, далее, используя SSH, можно приступить к установке программного обеспечения и к его настройке. Дополнительная информация по настройке и управлению контейнерами Virtuozzo будет в официальном мануале. Список мануалов доступен по адресу http://docs.virtuozzo.com/master/index.html.
10. Делаем работу с Virtuozzo удобнее
Virtuozzo Linux — это обычный дистрибутив, а не какая-то урезанная его версия. Дистрибутив RH-совместим, что позволяет устанавливать RPM-пакеты. К счастью, вручную устанавливать ничего не придется, так как Virtuozzo Linux содержит довольно богатые репозитории, из которых ты можешь установить свой любимый софт. Я, например, установил mc:
yum install mc
На этом все. Дополнительную информацию, в том числе и о совместимости с родственной OpenVZ, можно найти в блоге разработчика.