Клъстеризация в 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 (има изключения, но не се препоръчват за продукция);
  • ако впоследствие се планира да се използва функционалността за висока наличност, то в клъстъра трябва да има поне 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
При създаване на виртуални машини и контейнери на който и да е възел, указваме нашето хранилище като хранилище.

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

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

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

Клъстеризация в 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, работата на клъстера беше напълно възстановена. Обърнете внимание, че обратно на node1 VM не мигрира автоматично, но това може да се направи ръчно.

Обобщаваме

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

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

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

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

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

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