В минали статии започнахме да говорим за това какво представлява Proxmox VE и как работи. Днес ще говорим за това как можете да използвате възможността за клъстериране и ще покажем какви предимства дава.
Какво е клъстер и защо е необходим? Клъстер (от английски cluster) е група от сървъри, обединени от високоскоростни комуникационни канали, работещи и изглеждащи на потребителя като едно цяло. Има няколко основни сценария за използване на клъстер:
Осигуряване на отказоустойчивост (висока наличност).
Балансиране на натоварването (Балансиране на натоварването).
Увеличаване на производителността (висока производителност).
Извършване на разпределени изчисления (Разпределено изчисление).
Всеки сценарий има свои собствени изисквания към членовете на клъстера. Например, за клъстер, който извършва разпределени изчисления, основното изискване е висока скорост на операции с плаваща запетая и ниска латентност на мрежата. Такива клъстери често се използват за изследователски цели.
Тъй като засегнахме темата за разпределените изчисления, бих искал да отбележа, че има и такова нещо като мрежова система (от английската мрежа - решетка, мрежа). Въпреки общото сходство, не бъркайте мрежовата система и клъстера. Grid не е клъстер в обичайния смисъл. За разлика от клъстера, възлите, включени в мрежата, най-често са разнородни и се характеризират с ниска наличност. Този подход опростява решаването на проблеми с разпределени изчисления, но не позволява създаването на едно цяло от възли.
Ярък пример за грид система е популярна изчислителна платформа БОИН (Отворена инфраструктура на Бъркли за мрежови изчисления). Тази платформа първоначално е създадена за проекта SETI @ home (Search for Extra-Terrestrial Intelligence at Home), занимаващ се с проблема за намиране на извънземен разум чрез анализиране на радиосигнали.
Как работиОгромен масив от данни, получени от радиотелескопи, се разбива на много малки парчета и те се изпращат до възлите на мрежовата система (в проекта SETI@home ролята на такива възли играят доброволни компютри). Данните се обработват в възлите и след приключване на обработката се изпращат към централния сървър на проекта SETI. Така проектът решава най-сложния глобален проблем, без да разполага с необходимата изчислителна мощност.
Сега, когато имаме ясно разбиране какво е клъстер, предлагаме да разгледаме как може да бъде създаден и използван. Ще използваме система за виртуализация с отворен код Proxmox VE.
Особено важно е ясно да разберете ограниченията и системните изисквания на Proxmox, преди да започнете да създавате клъстер, а именно:
максимален брой възли в клъстер - 32;
всички възли трябва да имат същата версия на Proxmox (има изключения, но не се препоръчват за производство);
ако в бъдеще се планира да се използва функционалността за висока наличност, тогава клъстерът трябва да има поне 3 възела;
портовете трябва да са отворени, за да могат възлите да комуникират помежду си UDP/5404, UDP/5405 за коросинхронизация и TCP/22 за SSH;
мрежовото забавяне между възлите не трябва да надвишава 2 ms.
Създайте клъстер
важно! Следната конфигурация е тестова. Не забравяйте да се консултирате с официална документация Proxmox V.E.
За да стартираме тестов клъстер, взехме три сървъра с инсталиран хипервизор Proxmox със същата конфигурация (2 ядра, 2 GB RAM).
Първоначално, след инсталиране на операционната система, работи един сървър самостоятелен режим.
Създайте клъстер, като щракнете върху бутона Създайте клъстер в съответния раздел.
Задаваме име за бъдещия клъстер и избираме активна мрежова връзка.
Щракнете върху бутона Създаване. Сървърът ще генерира 2048-битов ключ и ще го запише заедно с параметрите на новия клъстер в конфигурационните файлове.
надпис ЗАДАЧА ОК показва успешното завършване на операцията. Сега, разглеждайки общата информация за системата, може да се види, че сървърът е преминал в клъстерен режим. Засега клъстерът се състои само от един възел, тоест все още няма възможностите, за които е необходим клъстер.
Присъединяване към клъстер
Преди да се свържем със създадения клъстер, трябва да получим информация, за да завършим връзката. За да направите това, отидете в раздела Група и нажимаем бутона Информация за присъединяване.
В прозореца, който се отваря, се интересуваме от съдържанието на полето със същото име. Ще трябва да се копира.
Тук са кодирани всички необходими параметри за връзка: адресът на сървъра за връзка и цифровият пръстов отпечатък. Отиваме на сървъра, който трябва да бъде включен в клъстера. Натискаме бутона Присъединете се към клъстера и в прозореца, който се отваря, поставете копираното съдържание.
полета Адрес на партньор и Fingerprint ще се попълни автоматично. Въведете root паролата за възел номер 1, изберете мрежовата връзка и натиснете бутона Присъединете се.
По време на процеса на присъединяване към клъстер уеб страницата на GUI може да спре да се актуализира. Всичко е наред, просто презаредете страницата. По абсолютно същия начин добавяме още един възел и в резултат получаваме пълноценен клъстер от 3 работещи възела.
Сега можем да контролираме всички клъстерни възли от един GUI.
Организация с висока наличност
Proxmox извън кутията поддържа HA организационна функционалност както за виртуални машини, така и за LXC контейнери. полезност ха-мениджър открива и обработва грешки и неуспехи, като извършва преход от неуспешен възел към работещ. За да работи правилно механизмът, е необходимо виртуалните машини и контейнерите да имат общо файлово хранилище.
След активиране на функционалността за висока наличност, софтуерният стек на ha-manager непрекъснато ще наблюдава състоянието на виртуалната машина или контейнера и ще взаимодейства асинхронно с други клъстерни възли.
Прикачване на споделено хранилище
Като пример разположихме малък NFS файлов споделен адрес 192.168.88.18. За да могат всички възли на клъстера да го използват, трябва да извършите следните манипулации.
Изберете от менюто на уеб интерфейса Център за данни - Съхранение - Добавяне - NFS.
Попълнете полетата ID и Сървър. В падащия списък Износ изберете желаната директория от наличните и в списъка съдържание — необходими типове данни. След натискане на бутона Добави хранилището ще бъде свързано към всички възли на клъстера.
Когато създаваме виртуални машини и контейнери на някой от възлите, ние посочваме нашите съхранение като съхранение.
Настройване на HA
Например, нека създадем контейнер с Ubuntu 18.04 и да конфигурираме High Availability за него. След като създадете и стартирате контейнера, отидете на секцията Datacenter-HA-Add. В полето, което се отваря, посочете идентификатора на виртуалната машина/контейнера и максималния брой опити за рестартиране и преместване между възли.
Ако това число бъде надвишено, хипервайзорът ще маркира виртуалната машина като неуспешна и ще я постави в състояние на грешка, след което ще спре да извършва каквито и да е действия с нея.
След натискане на бутона Добави полезност ха-мениджър ще уведоми всички възли на клъстера, че сега VM с посочения идентификатор се контролира и в случай на срив трябва да се рестартира на друг възел.
Да направим катастрофа
За да видим как точно работи превключващият механизъм, нека изключим необичайно захранването на node1. Гледаме от друг възел какво се случва с клъстера. Виждаме, че системата е отстранила грешка.
Работата на механизма HA не означава непрекъснатост на VM. Веднага след като възелът „падне“, работата на VM временно се спира, докато автоматично се рестартира на друг възел.
И тук започва „магията“ – клъстерът автоматично преназначи възела за стартиране на нашата виртуална машина и в рамките на 120 секунди работата беше автоматично възстановена.
Гасим възел 2 на храненето. Да видим дали клъстерът ще оцелее и дали VM ще се върне автоматично в работно състояние.
Уви, както виждаме, имаме проблем с факта, че вече няма кворум на единствения оцелял възел, което автоматично деактивира HA. Даваме команда за принудително инсталиране на кворум в конзолата.
pvecm expected 1
След 2 минути механизмът на HA работи правилно и като не намери node2, стартира нашата VM на node3.
Веднага щом включихме отново node1 и node2, клъстерът беше напълно възстановен. Моля, обърнете внимание, че VM не мигрира обратно към node1 самостоятелно, но това може да се направи ръчно.
Резюмиране
Разказахме ви как работи механизмът за клъстериране на Proxmox и също така ви показахме как HA е конфигуриран за виртуални машини и контейнери. Правилното използване на клъстериране и HA значително повишава надеждността на инфраструктурата, както и осигурява възстановяване след бедствие.
Преди да създадете клъстер, трябва незабавно да планирате за какви цели ще се използва и колко ще трябва да бъде мащабиран в бъдеще. Също така трябва да проверите мрежовата инфраструктура за готовност за работа с минимални закъснения, така че бъдещият клъстер да работи без повреди.
Кажете ни - използвате ли възможностите за клъстериране на Proxmox? Очакваме ви в коментарите.