Proxmox VE. Кластер из 2-х Proxmox-хостов

Статья была написана 16 апреля 2011 г. Перенесена из старого блога.

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

Установка

Установить Proxmox на голое железо проще чем установить Windows:)
Загружаемся с диска, соглашаемся с лицензионным соглашением, указываем регион, пароль суперпользователя, настраиваем сеть и запускаем установку. Через минут 10-15 подтверждаем установку кнопочкой Reboot и наблюдаем за быстрой загрузкой свежеустановленного Proxmox’a. После успешной загрузки на экране, чуть выше приглашения на вход появится адресная строка типа: http://<указанныйПриУстановке-ip>. По этому адресу мы попадаем в административный WEB-интерфейс, указав в качестве логина root и пароль, что ввели при установке.
Если хочется потестить Proxmox на виртуалке тогда вам стоит взглянуть на это.

Подготовка хостов

Идеальным вариантом будет объединение в кластер хостов со свеже установленным Proxmox, пока еще не настроено общее хранилище и не созданы ВМ. Так же проблем не будет если новый Proxmox-хост добавляется в существующий кластер. В таком случае все настройки кластера будут синхронизированы и новый хост будет доступен в списке хостов кластера. Если же несколько хостов изначально работали по отдельности и тащили на себе различные ВМ, то объединение таких хостов будет немного проблематично. Во первых конфигурация хранилищ на добовляемом в кластер хосте будет заменена на конфигурацию хранилищ кластера а ВМ имеющие одинаковый ID с ВМ в кластере не смогут быть мигрированны на другой хост из одинаковых ID!
Поэтому, лучше снести все ВМ с добавляемого хоста перед включением его в кластер. После добавления хоста в кластер, удаленные ВМ могут быть добавлены на новый/старый хост с консоли главного-master сервера.

Технические детали

В качестве платформы для построения кластера из нескольких хостов выступает Proxmox VE 1.8. В качестве общего хранилища может использоваться iSCSI или NFS. В моем случае в качестве общего хранилища используется OpenFiler 2.3 в роли iSCSI target сервера настроенного по этой статье.
В идеале на каждом из хостов должно быть установлено по два сетевых контроллера. Один контроллер для подключения клиентов к ВМ а другой для внутренней синхронизации хостов клстера и работы с общим хранилищем.
К сожалению, Proxmox позволяет поднять кластер при наличии всего одного интерфейса на каждом хосте. В моем случае работало именно так)

Конфигурация сети:
master:192.168.0.10
node1:192.168.0.20

Создаем мастера(master)

Мастер сервер может быть только один в приделах одного кластера! На мастере содержится вся служебная информация кластера. Все настройки кластера, доступны для изменения только с консоли мастера. Создание ВМ как на самом мастере так и на любой другом хосте кластера(node) также доступно только с консоли мастера. После изменения настроек на мастере(например добавление нового хранилища) настройки автоматически передаются всем членам кластера.
Для создания мастер-сервера необходимо зайти на выбранный для этой роли сервер по SSH или локально через консоль, после чего выполнить:

# pveca -с
делает текущий сервер мастером кластера

#pveca -l
CID—-IPADDRESS—-ROLE-STATE———UPTIME—LOAD—-MEM—DISK
1 :        192.168.0.10         M         A                    02:40          0.01         20%    25%
выводит текущее состояние кластера в удобной и понятной форме

После того как мастер создан осталось добавить  остальных членов кластера.
Для добавления хоста(node) в созданный кластер необходимо зайти на выбранный для этого хост по SSH или локально через консоль, после чего выполнить:

#pveca -a -h 192.168.0.10
добавляем(-a) текущий хост в кластер указав мастера(-h) (в моем случае это 192.168.0.10)

Буквально через секунду после выполнения указанной выше команды, будет задан вопрос о добавления нового хоста(192.168.0.10) в спиок доверенных. Необходимо ответить утвердительное yes. После этого в файл /root/.ssh/known_hosts будет добавлен секретный ключ для без парольного взаимодействия хостов по SSH. Вводим пароль root’a на мастере и все готово. Хост добавлен.

#pveca -l
CID—-IPADDRESS—-ROLE-STATE———UPTIME—LOAD—-MEM—DISK
1 :         192.168.0.10        M         A                    02:40         0.01          20%    25%
2 :         192.168.0.20        N          A                    02:40         0.12          17%    25%
теперь состояние кластера изменилось. В колонке ROLE видно кто является мастером(M) а кто рядовым сервером(N).

После этого в консоли любого из членов кластера(в разделе Cluster) можно увидеть все доступные хосты кластера и удобно управлять любым из них(если консоль мастера ). Рис №1
Рис №1 . Список хостов кластера.

В разделе Virtual Machines появляется удобный для управления список всех хостов кластера с расположенными на борту ВМ . Рис №2
Рис №2. Список доступных на хостах ВМ

В моем случае можно заметить, что ID двух ВМ на разных хостах совпадают) Это не есть хорошо, но это сделано ради эксперимента. В таком случае, попытка живой миграции показанная на Рис. №3 будет не удачной.
Рис. №3. Запуск живой миграции между хостами кластера

Управлять хостави можно только с консоли мастер сервера. Даже открыть VNC-консоль запущенной ВМ можно только с мастера. С консолей остальных членов кластера, можно только посмотреть состояние.