
В предишните статии започнахме да разказваме какво е Proxmox VE и как работи. Днес ще обсъдим как да използваме възможността за клъстериране и ще покажем какви предимства дава това.
Какво е клъстер и защо е нужен? Клъстер (от англ. cluster) — това е група сървъри, свързани с бързи комуникационни канали, работещи и представящи се на потребителя като единно цяло. Съществуват няколко основни сценария на използване на клъстера:
- Осигуряване на отказоустойчивост (High-availability).
- Балансировка на натоварването (Load Balancing).
- Увеличаване на производителността (High Performance).
- Изпълнение на разпределени изчисления (Distributed computing).
Всеки сценарий поставя свои собствени изисквания към компонентите на клъстера. Например, за клъстер, който изпълнява разпределени изчисления, основното изискване е висока скорост на изпълнение на операции с плаваща запетая и ниска латентност на мрежата. Подобни клъстери често се използват за научноизследователски цели.
Тъй като засегнахме темата за разпределените изчисления, е важно да се отбележи, че съществува и понятието грид-система (от англ. grid — решетка, мрежа). Въпреки общата прилика, не бива да се бърка грид-системата с клъстера. Гридът не е клъстер в традиционния смисъл. За разлика от клъстера, узлите в грида често са хетерогенни и имат ниска достъпност. Този подход опростява решаването на задачи за разпределени изчисления, но не позволява да се създаде единно цяло от узлите.
Ясен пример за грид-система е популярната изчислителна платформа (Berkeley Open Infrastructure for Network Computing). Тази платформа първоначално е създадена за проекта (Search for Extra-Terrestrial Intelligence at Home), който се занимава с проблема за търсенето на извънземен разум чрез анализ на радиосигнали.
Как работиОгромен масив от данни, получени от радиотелескопи, се разделя на множество малки парчета, които се изпращат на узлите на грид-системата (в проекта SETI@home ролята на такива узли играят компютри на доброволци). Данните се обработват на узлите и след завършване на обработката се изпращат на централния сървър на проекта SETI. По този начин проектът решава сложна глобална задача, без да разполага с необходимите изчислителни мощности.
Сега, когато имаме ясно разбиране за това какво представлява клъстер, предлагаме да разгледаме как можем да го създадем и активираме. Ще използваме система за виртуализация с отворен код. .
Особено важно е преди да започнем създаването на клъстера, да разберем ограниченията и системните изисквания на Proxmox, а именно:
- максимален брой възли в клъстера — 32;
- всички възли трябва да имат еднаква версия на Proxmox (има изключения, но те не се препоръчват за продукционни среди);
- ако планирате в бъдеще да използвате функционалността High Availability, то в клъстера трябва да има поне 3 възела;
- за взаимовръзка между възлите трябва да са отворени портовете UDP/5404, UDP/5405 за corosync и TCP/22 за SSH;
- забавянето в мрежата между възлите не трябва да надвишава 2 мс.
Създаване на клъстер
Важно! По-долу посочената конфигурация е тестова. Не забравяйте да се консултирате с Proxmox VE.
За да стартираме тестов клъстер, взехме три сървъра с инсталиран хипервизор Proxmox с еднаква конфигурация (2 ядра, 2 Гб оперативна памет).
Ако искате да разберете как да инсталирате Proxmox, ви препоръчваме да прочетете нашата предишна статия — .
Първоначално, след инсталиране на ОС, единичният сървър работи в Standalone-mode.

Създайте клъстер, като натиснете бутона Create Cluster в съответния раздел.

Задаваме име на бъдещия клъстер и избираме активно мрежово свързване.

Натискаме бутона Create. Сървърът ще генерира 2048-битов ключ и ще го запише заедно с параметрите на новия клъстер в конфигурационните файлове.

Надписът TASK OK свидетелства за успешно изпълнение на операцията. Сега, ако погледнем общата информация за системата, ще видим, че сървърът е преминал в режим на клъстер. Засега клъстерът се състои само от един възел, т.е. той все още няма онези възможности, за които е необходим клъстер.

Присъединяване към клъстера
Преди да се свържем с създадения клъстер, е необходимо да получим информация за свързването. За целта влизаме в раздела Cluster и натискаме бутона Join Information.

В отворилия се прозорец ни интересува съдържанието на едноименното поле. Трябва да го копираме.

Тук са кодирани всички необходими параметри за свързване: адрес на сървъра за свързване и цифров отпечатък. Преминаваме към сървъра, който трябва да бъде включен в клъстера. Натискаме бутона Присъединяване към клъстера и в отворилото се прозорче поставяме копираното съдържание.

Полета Адрес на партньора и Цифров отпечатък ще се попълнят автоматично. Въвеждаме паролата root за възел номер 1, избираме мрежовото свързване и натискаме бутона Присъединяване.

По време на присъединяването към клъстера уеб страницата на GUI може да спре да се обновява. Това е нормално, просто презаредете страницата. По същия начин добавяме още един възел и в крайна сметка получаваме напълно функциониращ клъстер от 3 работещи възела.

Сега можем да контролираме всички възли на клъстера от един GUI.

Организация на Висока наличност
Proxmox „извън кутията“ поддържа функционалността за организиране на HA както за виртуални машини, така и за LXC контейнери. Утилитата ha-manager открива и решава грешки и откази, изпълнявайки аварийно превключване от отказалия възел на работещия. За да работи механизма правилно, е необходимо виртуалните машини и контейнерите да имат общо файлово хранилище.
След активиране на функционалността за Висока наличност, софтуерният стек ha-manager ще започне непрекъснато да следи състоянието на работа на виртуалната машина или контейнера и асинхронно да взаимодействува с другите възли на клъстера.
Присъединяване на общото хранилище
За примера разгръщаме малко файлово хранилище NFS на адрес 192.168.88.18. За да могат всички възли на клъстера да го използват, трябва да се извършат следните манипулации.
Избираме в менюто на уеб интерфейса Datacenter — Storage — Add — NFS.

Попълваме полетата ID и Сървър. В падащото меню Експорт избираме желаната директория от наличните и в списъка Съдържание — необходимите видове данни. След натискане на бутона Добави хранилището ще бъде свързано към всички възли на клъстера.

При създаването на виртуални машини и контейнери на който и да е от възлите указваме нашето storage като хранилище.
Настройване на HA
За примера ще създадем контейнер с Ubuntu 18.04 и ще настроим Висока наличност за него. След създаването и стартирането на контейнера, влизаме в раздела Datacenter — HA — Add. В отворилото се поле указваме ID на виртуалната машина/контейнера и максималния брой опити за рестартиране и преместване между възлите.
Ако това количество бъде надвишено, хипервизорът ще маркира VM като неуспешна и ще я преведе в състояние на грешка, след което ще спре да извършва каквито и да е действия с нея.

След натискане на бутона Добави инструмент ha-manager ще уведоми всички възли в клъстера, че сега VM с посочен ID се контролира и в случай на падане, тя трябва да бъде рестартирана на друг възел.

Нека предизвикаме неуспех
За да видим как точно работи механизмът за превключване, неочаквано ще изключим node1 от захранването. Наблюдаваме от друг възел какво се случва с клъстера. Виждаме, че системата е регистрирала неуспех.

Работата на механизма за висока наличност (HA) не означава непрекъсната работа на VM. След като възелът 'падне', работата на VM временно спира, докато не бъде автоматично рестартирана на друг възел.
И тук започва 'магията' — клъстерът автоматично преназначи възел за изпълнение на нашата VM и в рамките на 120 секунди работата беше автоматично възстановена.

Изключваме node2 от захранването. Нека видим дали клъстерът ще се справи и дали VM ще се върне в работно състояние автоматично.

За съжаление, как виждаме, имаме проблем — на единствения оставен активен възел вече няма кворум, което автоматично отключва работата на HA. Даваме команда от конзолата за принудителна настройка на кворума.
pvecm очаква 1 
След 2 минути механизмът HA заработи коректно и не намери node2, а стартира нашата VM на node3.

След като включихме отново node1 и node2, работата на клъстера беше напълно възстановена. Обърнете внимание, че VM не мигрира сама обратно на node1, но това може да се направи ръчно.
Обобщение
Разказахме ви как е устроен механизмът за клъстеризация в Proxmox, а също така показахме как се настройва HA за виртуални машини и контейнери. Правилното използване на клъстеризацията и HA значително повишава надеждността на инфраструктурата и осигурява възстановяване след неуспехи.
Преди да създадете клъстер, трябва веднага да планирате за какви цели ще бъде използван и колко ще трябва да бъде мащабиран в бъдеще. Трябва също така да проверите мрежовата инфраструктура за готовност за работа с минимални забавяния, за да може бъдещият клъстер да работи без неуспехи.
Разкажете ни — използвате ли възможностите за клъстеризация в Proxmox? Очакваме вашите коментари.
Предишни статии на тема хипервизора Proxmox VE:
Източник: habr.com
