Сьогоднi в комп'ютерній підтримці системи освіти спостерігаються проблеми з актуальністю і ефективністю програмного забезпечення. Програмні продукти, використовувані для забезпечення адміністративної діяльності університетів, продукти, якими оснащуються лабораторії - усі вони багато в чому застаріли і мають несправності. Усе це призводить до того, що автоматизація не працює належним чином, віднімаючи час у обслуговуючого персоналу і знижуючи ефективність навчання. Ці чинники вже неодноразово ставали об'єктом досліджень в магістерських роботах[1][2], проте, в моїй роботі пропонується не концепції конкретних продуктів, замінюючих існуючі, а пропонується нова платформа, яка зробить розробку, впровадження і модернізацію будь-якого ПЗ легшою в довгостроковій перспективі.
Тема є актуальною для ДонНТУ - використовувана АСУ "Деканат" не справляється з навантаженням і вимагає постійного ручного втручання обслуговуючого персоналу. Багато серверів ДонНТУ також застаріли і мають труднощі з оновленням, в лабораторіях часто використовуються сторонні утиліти, що мають недоліки, проте вони не можуть бути виправлені, оскільки ДонНТУ не має початкових текстів цих програм, при цьому варіант власної розробки є занадто важким для одного окремого Внз. Ці проблеми існують не лише в ДонНТУ[3], і можливість поєднання багатьох внз під єдиною системою розробки і розгортування є актуальною темою для дослідження, тим більше такі практики застосовуються і зараз, але в інших областях спiльної розробки[4]
Завданням дослідження є створення концепції модульної віртуалізованої системи, а також реалізація базової системи в ДонНТУ. Базова система включатиме ПЗ для управління віртуальними машинами(старт, зупинка, створення і видалення), вмістом віртуальних машин.
В даний момент один з серверів ДонНТУ побудований за принципом модульної віртуалізованої системи.
Двопроцесорна система розділена на декілька віртуальних машин. Dom0 - тобто сама хост машина, не обслуговує ніяких сервісів, окрім віртуальних машин, і служить лише як тонка оболонка між віртуальними машинами і зовнішнім світом. Машині відводиться малий об'єм оперативної пам'яті(менше 300MB), що залишився, який займається в основному ОС і внутрішніми демонами. Усі з'єднання, що входять на порт 80, ця машина перенаправляє на адміністративну віртуальну машину за допомогою правил iptables :
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
Також існує опциональное перенаправлення інших портів, наприклад для прямого SSH доступу до віртуальних машин:
-A PREROUTING -d ip -p tcp -m tcp --dport 22221 -j DNAT --to-destination 10.0.0.1:22
В першу чергу повинно бути сказано, чому використовується окрема адміністративна віртуальна машина, а не хост-машина dom0. Зроблено це з міркувань безпеки, оскільки перехоплення dom0 приведе до повного контролю над усіма віртуальними машинами системи і їх вмістом(паролі і БД), а перехоплення адміністративної машини дасть можливість тільки перехоплювати\блокувати HTTP з'єднання з іншими віртуальними машинами і не відкриє можливості відкрито проглянути вміст файлової системи інших віртуальних машин.
Адміністративна віртуальна машина побудована на тій же основі, що і хост-машина і інші віртуальні машини - ОС Debian GNU/Linux stable. Головний виконавчий механізм цієї машини - сервіс Squid, працюючий в режимі зворотного проксі, який розподіляє HTTP запити залежно від домена і кешує результати, щоб підвищити продуктивність web- сервера.
Схема роботи Dom0 зображена на рисунку 1.
Рисунок 1 - Схема роботи серверiв усередині Dom0.
Як видно з схеми, Squid отримує абсолютно усі запити, які поступають на 80 порт сервера, після чого сам вирішує, яка з віртуальних машин обробить ці запити. Файл /etc/squid/squid.conf містить правила роботи сервісу, нові правила варто додавати по існуючих прикладах, обов'язково вказуючи внутрішній IP виртуальной-машины обробника і домен, який має бути оброблений.
Віртуальна машина, мета якої - обслуговування одного або декількох веб-ресурсів. Через невисокі вимоги до продуктивності сервера тут використовується Apache без яких-небудь додаткових оптимізацій(це не означає, що їх не можна застосувати). Прискорювачем роботи Apache служить адміністративна віртуальна машина з кэширующим зворотним проксі Squid. Apache працює з тими запитами, які були спрямовані йому адміністративною віртуальною машиною.
Для надання повноцінного виділеного сервера користувачі мають можливість підключатися до сервера по SSH(займаючи один з вільних портів хост-машины, наприклад 22222, і перенаправляючи на 22 порт віртуальної машини). Це дає можливість переносити свої файли через протокол SSH - утилітою SCP(у Windows використовується клієнтська утиліта WinSCP з графічним інтерфейсом). Ще один спосіб передання файлів на сервер - сервіс WebDAV, який обслуговується Apache[6].
Спрощена і розширена версія управління сервером в даний момент знаходиться у стадії розробки у рамках магістерської роботи. Вона маніпулюватиме стандартними інструментами управління сервером через графічний інтерфейс. Нижче представлений опис стандартних інструментів управління і архітектури.
Xen запускається на спеціально підготовленій хост-машині і оперує конфігураційними файлами віртуальних машин. Кожна віртуальна машина складається з трьох компонентів - конфігураційного файлу, що описує віртуальну машину(к-ть ядер, що виділяються, і RAM), файлу, що містить файлову систему машини(тобто /boot /etc /usr /var і так далі) і файлу, який служитиме розділом підкочування для віртуальної машини. Це базова схема, файлова система може бути представлена декількома файлами, так само як і мати декілька файлів підкочування(наприклад на RAID масивах).
Розташування файлів :
Linux має велику гнучкість і його можна легко копіювати. На цьому і побудована концепція модульності - створивши один раз образ, наповнивши його вмістом, його можна копіювати, вносити мінімальні зміни і отримувати копію існуючої віртуальної машини.
Можна зробити висновки, що Xen надає гнучку систему впровадження віртуальних машин з передвстановлених образів, дозволяючи розгортати необхідні ресурси в найкоротші терміни, маючи досвід роботи з UNIX.
Гнучкість модульної віртуалізованої системи служить основою для нового виду розробки, яка може істотно оптимізувати комп'ютерну підтримку учбового процесу в цілому. Співтовариства розробників по всьому світу можуть створювати образи віртуальних машин, які можна методом копіювання перенести на будь-яку хост-машину, і які відразу ж почнуть виконувати свої функції, - служити веб-сервером, поштовим серверів, базою даних, обслуговувати деканат і так далі.
На жаль, в даний момент, впровадження кожної віртуальної машини має свої труднощі і вимагає ручного втручання. Моєю наступною роботою буде розробка утиліти, яка дозволить істотно спростити процес впровадження віртуальної машини з образу на сервер. Створення такої утиліти спростить процес впровадження модулей-виртуальных машин і відкриє можливості для спільних проектів, що оптимізують багато існуючих рішень, використовуваних для забезпечення автоматизації у внз.