Кластеризація в 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. Таким чином, проект вирішує найскладніше глобальне завдання, не маючи у своєму розпорядженні необхідних обчислювальних потужностей.

Тепер, коли у нас є чітке розуміння того, що таке кластер, пропонуємо розглянути, яким чином його можна створити та задіяти. Будемо використовувати систему віртуалізації з відкритим вихідним кодом Проксмокс VE.

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

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

Створення кластера

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

Для того, щоб запустити тестовий кластер, ми взяли три сервери із встановленим гіпервізором Proxmox однакової конфігурації (2 ядра, 2 Гб оперативної пам'яті).

Якщо ви хочете дізнатися, яким чином можна встановити Proxmox, то рекомендуємо прочитати нашу попередню статтю. Магія віртуалізації: вступний курс в Proxmox VE.

Спочатку, після установки ОС, одиничний сервер працює в Standalone-mode.

Кластеризація в Proxmox VE
Створимо кластер, натиснувши кнопку Створити кластер у відповідному розділі.

Кластеризація в Proxmox VE
Задаємо ім'я майбутньому кластеру та вибираємо активне мережне з'єднання.

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

Кластеризація в Proxmox VE
Напис TASK OK свідчить про успішне виконання операції. Тепер, глянувши на загальну інформацію про систему, видно, що сервер перейшов у режим кластера. Поки що кластер складається лише з однієї ноди, тобто поки він не має тих можливостей, заради яких необхідний кластер.

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

Приєднання до кластера

Перш ніж підключатися до створеного кластера, нам необхідно отримати інформацію для виконання підключення. Для цього заходимо до розділу кластер і нажимаем кнопку Інформація про приєднання.

Кластеризація в Proxmox VE
У вікні нас цікавить вміст однойменного поля. Його потрібно буде скопіювати.

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

Кластеризація в Proxmox VE
Поля Однорангова адреса и відбиток пальця будуть заповнені автоматично. Вводимо пароль root від ноди номер 1, вибираємо мережне підключення та натискаємо кнопку Приєднайся до.

Кластеризація в Proxmox VE
Під час приєднання до кластера веб-сторінка GUI може перестати оновлюватися. Це нормально, просто перезавантажуємо сторінку. Так само додаємо ще одну ноду і в результаті отримуємо повноцінний кластер з 3-х працюючих вузлів.

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

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

Організація High Availability

Proxmox "з коробки" підтримує функціонал організації HA як для віртуальних машин, так і для LXC-контейнерів. Утиліта ha-manager виявляє і відпрацьовує помилки і відмови, виконуючи аварійне перемикання з ноди, що відмовила на робочу. Щоб механізм працював коректно, необхідно, щоб віртуальні машини і контейнери мали спільне файлове сховище.

Після активації функціоналу High Availability програмний стек ha-manager почне безперервно відстежувати стан роботи віртуальної машини або контейнера та асинхронно взаємодіяти з іншими нодами кластера.

Приєднуємо спільне сховище

Наприклад, ми розгорнули невелике файлове сховище NFS за адресою 192.168.88.18. Щоб усі ноди кластера могли його використовувати, потрібно зробити наступні маніпуляції.

Вибираємо в меню веб-інтерфейсу Datacenter - Storage - Add - NFS.

Кластеризація в Proxmox VE
Заповнюємо поля ID и сервер. У списку, що випадає Експорт вибираємо потрібну директорію з доступних та у списку зміст - Необхідні типи даних. Після натискання кнопки додавати сховище буде підключено до всіх нодів кластера.

Кластеризація в Proxmox VE
При створенні віртуальних машин і контейнерів на будь-якому вузлі вказуємо наш зберігання як сховища.

Налаштовуємо HA

Наприклад створимо контейнер з Ubuntu 18.04 і налаштуємо для нього High Availability. Після створення та запуску контейнера заходимо у розділ 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 expected 1

Кластеризація в Proxmox VE
Через 2 хвилини механізм HA відпрацював коректно і не знайшовши node2, запустив нашу VM на node3.

Кластеризація в Proxmox VE
Як тільки ми включили назад node1 та node2, робота кластера була повністю відновлена. Зауважте, що назад на node1 VM самостійно не мігрує, але це можна зробити вручну.

Підводимо підсумки

Ми розповіли вам про те, як влаштований механізм кластеризації у Proxmox, а також показали, як налаштовується HA для віртуальних машин та контейнерів. Грамотне використання кластеризації та HA значно підвищує надійність інфраструктури, а також забезпечує відновлення після збоїв.

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

Розкажіть нам, чи використовуєте ви можливості кластеризації в Proxmox? Чекаємо на вас у коментарях.

Попередні статті на тему гіпервізора Proxmox VE:

Джерело: habr.com

Додати коментар або відгук