Клъстеризация в Proxmox VE

Клъстеризация в Proxmox VE

В предишните статии започнахме да разказваме какво е Proxmox VE и как работи. Днес ще обсъдим как да използваме възможността за клъстериране и ще покажем какви предимства дава това.

Какво е клъстер и защо е нужен? Клъстер (от англ. cluster) — това е група сървъри, свързани с бързи комуникационни канали, работещи и представящи се на потребителя като единно цяло. Съществуват няколко основни сценария на използване на клъстера:

  • Осигуряване на отказоустойчивост (High-availability).
  • Балансировка на натоварването (Load Balancing).
  • Увеличаване на производителността (High Performance).
  • Изпълнение на разпределени изчисления (Distributed computing).

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

Тъй като засегнахме темата за разпределените изчисления, е важно да се отбележи, че съществува и понятието грид-система (от англ. grid — решетка, мрежа). Въпреки общата прилика, не бива да се бърка грид-системата с клъстера. Гридът не е клъстер в традиционния смисъл. За разлика от клъстера, узлите в грида често са хетерогенни и имат ниска достъпност. Този подход опростява решаването на задачи за разпределени изчисления, но не позволява да се създаде единно цяло от узлите.

Ясен пример за грид-система е популярната изчислителна платформа BOINC (Berkeley Open Infrastructure for Network Computing). Тази платформа първоначално е създадена за проекта SETI@home (Search for Extra-Terrestrial Intelligence at Home), който се занимава с проблема за търсенето на извънземен разум чрез анализ на радиосигнали.

Как работиОгромен масив от данни, получени от радиотелескопи, се разделя на множество малки парчета, които се изпращат на узлите на грид-системата (в проекта SETI@home ролята на такива узли играят компютри на доброволци). Данните се обработват на узлите и след завършване на обработката се изпращат на централния сървър на проекта SETI. По този начин проектът решава сложна глобална задача, без да разполага с необходимите изчислителни мощности.

Сега, когато имаме ясно разбиране за това какво представлява клъстер, предлагаме да разгледаме как можем да го създадем и активираме. Ще използваме система за виртуализация с отворен код. Proxmox VE.

Особено важно е преди да започнем създаването на клъстера, да разберем ограниченията и системните изисквания на Proxmox, а именно:

  • максимален брой възли в клъстера — 32;
  • всички възли трябва да имат еднаква версия на Proxmox (има изключения, но те не се препоръчват за продукционни среди);
  • ако планирате в бъдеще да използвате функционалността High Availability, то в клъстера трябва да има поне 3 възела;
  • за взаимовръзка между възлите трябва да са отворени портовете UDP/5404, UDP/5405 за corosync и TCP/22 за SSH;
  • забавянето в мрежата между възлите не трябва да надвишава 2 мс.

Създаване на клъстер

Важно! По-долу посочената конфигурация е тестова. Не забравяйте да се консултирате с официалната документация Proxmox VE.

За да стартираме тестов клъстер, взехме три сървъра с инсталиран хипервизор Proxmox с еднаква конфигурация (2 ядра, 2 Гб оперативна памет).

Ако искате да разберете как да инсталирате Proxmox, ви препоръчваме да прочетете нашата предишна статия — Магията на виртуализацията: въведене в Proxmox VE.

Първоначално, след инсталиране на ОС, единичният сървър работи в Standalone-mode.

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

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

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

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

Клъстеризация в Proxmox VE

Присъединяване към клъстера

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

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

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

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

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

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

Клъстеризация в Proxmox VE

Организация на Висока наличност

Proxmox „извън кутията“ поддържа функционалността за организиране на HA както за виртуални машини, така и за LXC контейнери. Утилитата ha-manager открива и решава грешки и откази, изпълнявайки аварийно превключване от отказалия възел на работещия. За да работи механизма правилно, е необходимо виртуалните машини и контейнерите да имат общо файлово хранилище.

След активиране на функционалността за Висока наличност, софтуерният стек ha-manager ще започне непрекъснато да следи състоянието на работа на виртуалната машина или контейнера и асинхронно да взаимодействува с другите възли на клъстера.

Присъединяване на общото хранилище

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

Избираме в менюто на уеб интерфейса Datacenter — Storage — Add — NFS.

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

Клъстеризация в Proxmox VE
При създаването на виртуални машини и контейнери на който и да е от възлите указваме нашето storage като хранилище.

Настройване на HA

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

Ако това количество бъде надвишено, хипервизорът ще маркира VM като неуспешна и ще я преведе в състояние на грешка, след което ще спре да извършва каквито и да е действия с нея.

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

Клъстеризация в Proxmox VE

Нека предизвикаме неуспех

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

Клъстеризация в Proxmox VE

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

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

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

Клъстеризация в Proxmox VE
За съжаление, как виждаме, имаме проблем — на единствения оставен активен възел вече няма кворум, което автоматично отключва работата на HA. Даваме команда от конзолата за принудителна настройка на кворума.

pvecm очаква 1

Клъстеризация в Proxmox VE
След 2 минути механизмът HA заработи коректно и не намери node2, а стартира нашата VM на node3.

Клъстеризация в Proxmox VE
След като включихме отново node1 и node2, работата на клъстера беше напълно възстановена. Обърнете внимание, че VM не мигрира сама обратно на node1, но това може да се направи ръчно.

Обобщение

Разказахме ви как е устроен механизмът за клъстеризация в Proxmox, а също така показахме как се настройва HA за виртуални машини и контейнери. Правилното използване на клъстеризацията и HA значително повишава надеждността на инфраструктурата и осигурява възстановяване след неуспехи.

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

Разкажете ни — използвате ли възможностите за клъстеризация в Proxmox? Очакваме вашите коментари.

Предишни статии на тема хипервизора Proxmox VE:

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster