Proxmox Virtual Environment — это система, предоставляющая простой и удобный веб-интерфейс для управления виртуальными машинами (используется KVM ) и контейнерами ( LXC ) на вашем кластере физических машин. Фактически, при помощи Proxmox вы можете создать свой маленький Amazon Web Services на собственном железе. В общем и целом, система очень похожа на Parallels Virtual Automation , с которым мы знакомились ранее, только распространяется бесплатно и с открытыми исходными кодами. Также предоставляется и платная техническая поддержка. Как мы скоро убедимся, со своей задачей Proxmox справляется не хуже PVA, а в чем-то, возможно, и лучше.
Установка
Качаем ISO-образ отсюда , записываем на флешку как обычно при помощи dd:
Флешку втыкаем в будущую хост-машину. Помним, что для работы KVM требуется, чтобы CPU умел технологию Intel VT-x или AMD-V. Насколько я понимаю, все процессоры семейства Intel Core i5 и Intel Core i7 поддерживают аппаратную виртуализацию, но на всякий случай сверьтесь с информацией в BIOS и описанием вашей конкретной модели CPU на сайте производителя. Также на время установки нам понадобятся монитор и клавиатура.
Сама установка ничем не примечательна, по сути просто жмем Next → Next → Next. После перезагрузки вводим в веб-браузере https://192.168.0.105:8006
, где 192.168.0.105 нужно заменить на IP вашего сервера. Обратите внимание, что нужно обязательно ввести http s ! Для входа используем имя пользователя root и пароль, указанный при установке.
Важно! Примите во внимание что по умолчанию на сервер также можно зайти пользователем root по SSH, используя тот же пароль.
Использование
Админка выглядит приблизительно таким образом:
Для создания виртуалки сначала нужно залить установочный ISO-образ системы. Я лично экспериментировал на FreeBSD. В дереве слева выбираем Datacenter → proxmox → local, открываем вкладку Content, жмем Upload. Затем в правом верхнем углу жмем Create VM. Диалог создания новой виртуальной машины ничем не примечателен, все просто и понятно. После создания говорим виртуалке Start. Затем жмем Console → noVNC. В результате подключаемся к виртуалке по VNC прямо через браузер. Все это работает в самом обычном Chromium без Flash’а и Java-апплетов. Крутяк!
Чтобы создать контейнер, идем в Datacenter → proxmox → local, во вкладке Content жмем Templates. Скачиваем интересующие нас шаблоны. Я лично выбрал Ubuntu 14.04. Затем жмем Create CT, и там в диалоге по сути просто говорим Next → Next → Next. Чтобы зайти в контейнер, заходим по SSH на хост-систему , говорим pct list
, смотрим id контейнера. У меня он был равен 101. Затем говорим pct enter 101
. Там можно создать пользователя, добавить его в sudoers и вот это все:
usermod -a -G sudo eax
Теперь под только что созданным пользователем можно зайти напрямую в контейнер по SSH, sshd в контейнере уже был поднят.
Proxmox VE поддерживает клонирование виртуальных машин. Клонирование контейнеров, насколько я смог разобраться, пока почему-то не реализовано. В дереве справа жмем ПКМ по виртуалке, говорим Convert to Template. Снова жмем ПКМ, жмем Clone. В результате получаем кучу копий одной и той же виртуальной машины, удобно.
Для создания бэкапов нам понадобится настроить NFS сервер . В принципе, ничто не мешает поднять его прямо на одной из виртуалок. Затем в дереве слева кликаем на Datacenter, открываем вкладку Storage, жмем Add → NFS. В поле Server вводим IP-адрес NFS-сервера, в выпадающем списке Export выбираем экспортируемый им каталог. В выпадающем списке Content кликаем по очереди на все пункты, чтобы они добавились к списку. Нигде больше не видел такого нестандартного элемента управления!
Теперь проверяем, что резервное копирование и восстановление из резервных копий работает как для виртуальных машин, так и для контейнеров. Заметьте, что можно настроить автоматическое создание резервных копий по расписанию. Помимо резервного копирования для KVM также есть механизм снапшотов, позволяющий запоминать состояние виратуалок и откатываться к ранее запомненному состоянию. Очень интересно выглядит в действии, обязательно попробуйте.
Проверить работу Proxmox VE с несколькими хост-машинами я, за неимением такого количества лишних машин, к сожалению, не смог. Однако согласно этой статье в официальной wiki , объединение машин в кластер производится одной командой, после чего все работает точно так же. Правда, остается открытым вопрос, не разваливается ли все при сетевых проблемах. Надеюсь, кто-то из читателей, активно использующих Proxmox, сможет пролить свет на этот вопрос в комментариях.
Заключение
Напоследок хочется отметить несколько вещей, которые мне не очень понравились в Proxmox:
- Через веб-интерфейс не видно, какие IP имеют виртуальные машины. Впрочем, в реальной системе вы, скорее всего, все равно захотите использовать Consul или какое-то иное service discovery решение. Так что, пожалуй, это не такая уж большая проблема;
- Для NFS не поддерживается авторизация . Доступ к NFS-серверу можно ограничить только по IP;
- Нельзя так просто взять и переименовать шаблон виртуалки. Нужно создать новый шаблон с другими именем, потом удалить старый. К счастью, это вполне работает, даже если у шаблона были linked (то есть, не full) клоны;
Несмотря на озвученные проблемы, я все равно решительно одобряю Proxmox. Помня боль и унижение при использовании AWS , сейчас я бы предпочел ему (как и Google Cloud, как и Azure, потому что по многочисленным отзывам там все те же проблемы) арендовать физические машины и сделать на них собственный IaaS при помощи Proxmox.
Дополнение: Управление VirtualBox из консоли с помощью vboxmanage