OpenVZ је технологија виртуализације која омогућава креирање мноштва излованих инстанци виртуалних приватних сервера (VirtualPrivate Server или скраћено VPS) који заједно деле хардвер једног сервера, чиме се постиже ефикасност и централизација управљања. Containers (Контејнери), VirtualEnvironments (VE-с) су често коришћени синоними за VPS инстанце.

Наочаре за компјутер
OpenVZ виртуализација се базира на Линукс кернелу и оперативном систему, што значи да сам хост, као и guest оперативни системи морају бити Линукс орјентисани. Сваки VPS делује као самостални сервер који поседује сопствени фајл систем, кориснике, меморију, процесе, апликације, системске библиотеке конфигурационе фајлове итд. OpenVZ је open source решење. OpenVZ кернел је под GNU GPL v2 лиценцом, а кориснички алати (vzctl, vzquota и vzpkg) су лиценцирани под QPL лиценцом.

Решење је подржано и спонзорисано од стране Parallels-а и представља основу за њихов Virtuozzo Containers комерцијално решење. Наравно, Parallels не обезбеђује комерцијалну корисничку подршку за OpenVZ.

Примена

OpenVZ представља одлично решење за хостинг провајдере, јер им омогућава употребу стотине VPS инстанци на физички једном серверу. За сваког корисника њихових услуга постоји загарантован Quality of Service, као и лако и брзо пребацивање VPS-ова између сервера без икакве додатне промене конфигурације. Такође, за администратор који одржавају више Линукс наменских (dedicated) сервера OpenVZ пружа могућност централизације свих тих сервера на једном месту.

ИТ едукација је такође сфера потенцијалне примене, па тако на пример можемо сваком студенту неког универзитета омогућити његов персонални Линукс сервер. Развој, тестирање софтвера, одржавање тренинга и разне ИТ обуке су само још неке од могућих области примене.

OpenVZ технологија и њене специфичности

OpenVZ концепт је специфичан по томе што све VPS инстанце користе исти јединствени кернел хост система (хардверски нод или домаћин). Овај систем виртуализације се назива „shared kernel virtualization„, што значи да guest системи (VPS инстанце) користе дељени кернел хардверског нода (хост систем), а немају свој кернел.

Поред чињенице да сви VPS-ови користе исти дељени кернел, сваки је апсолутно независтан и не можемо га разликовати од било ког уобичајеног Линукс система. Ту независност омогућава виртуализациони слој у кернелу хост система. Занемарљив део процесора (1-2%), употребљава се на рад самог виртуализационог слоја.

OpenVZ

Сваки VPS поседује стандардне стартне скрипте, а софтвер било ког произвођача може радити унутар VPS-а. Корисници могу такође мењати конфигурацију, као и инсталирати додатне апликације. Сви VPS-ови су међусобно изоловани, што значи да сваки поседује сопствени фајл систем, процесе, IPC (Inter Process Communication), sysctl промењиве.

Процеси коришћени од стране било ког контејнера се распоређују за све присутне процесоре на серверу, тако да је CPU искоришћеност процесора максимална.

Мрежни виртуализациони слој служи да међусобно изолује VPS инстанце, а такође И VPS инстанце од хост система. Оно што је карактеристично за мрежни слој, да сваки VPS поседује IP адресу, као и да је дозвољено поседовања више IP адреса по контејнеру. На хост и guest систему постоји venet0 мрежни интерфејс немењен међусобној комуникацији путем point-to-point протокола. Мрежни саобраћај је изолован између контејнера, што значи да је онемогућен „snooping“. Унутар контејнера могуће је коришћење фајервола за рестрикцију приступа одређеним сервисима, односно апликацијама.

Темплејти (шаблони) оперативних система омогућују да у OpenVZ увеземо већ унапред припремљене популарне Линукс дистрибуције са предефинисаним пакетима са којима долазе. Обично се шаблонима испоручују дистрибуције са најосновнијим пакетима, а све што нам је потребно можемо накнадно инсталирати преко пакет менаџера дате дистрибуције.

Управљање ресурсима омогућава нам да контролишемо ресурсе које можемо изложити на располагање VPS инстанцама. Под ресурсима подразумевамо процесорску снагу, простор на диску, меморијске параметре итд. Управљање ресурсима је круцијално за OpenVZ, јер је коришћење ресурса на таквом систему знатно веће него на класичном самосталном рачунару.

openвз_лаyерс

На слици је подразумевано приказано да је за OpenVZ резервисано више физичких сервера у мрежи. У ствари неопходан је само један сервер, а уколико их је више потребно је да буду сродне архитектуре. Користећи OpenVZ терминологију, такви сервери се називају хардверски нодови (Hardware Nodes). На њихов хардвер се инсталира оперативни систем. Званично су подржане Ред Хат-ове дистрибуције Федора, ЦентОС и Ред Хат Ентерпрајз Линукс.

После инсталације потребно је при процесу бутовања сервера изабрати новоинсталирани кернел са OpenVZ подршком. Дакле VPS-ови деле сам хардверски нод и кернел хоста којег смо управо изабрали приликом бутовања система. Да би креирали и стартовали први VPS потребно је инсталирати бар један OS темплејт (шаблон) или направити свој.

Инсталација и системска захтевност

Пошто на харверском ноду (хост систем) треба да ради истовремено много VPS инстанци, што значи много критичних сервиса, треба доста пажње обратити на избор харвера (више се мисли на квалитет, него на захтевност).

Зато у корисничком упутству постоје неке смернице:

  • Користити увек RAID и то по могућности хардверски. Софтверски узети у разматрање, једино ако хардверски није остварива солуција
  • Не користити никакве сервисе/апликације на хардверском ноду сем SSH, а све потребне сервисе (BIND, FTP, httpd, итд.) инсталирати на VPS-овима
  • Не креирати кориснике на хардверском ноду

Уз ово треба напоменути да хардверски нод мора да задовољи и Ред Хат хардверске захтеве (Ред Хат Ентерпрајз Линукс, Федора, ЦентОС OS захтевности). Намена сервера је битан фактор приликом избора сервера.

Треба имати следеће смернице приликом планирања:

  • Што више VPS истовремених инстанци планирате да користите то вам треба више процесора.
  • Што више меморије имате, утолико више VPS инстанци можете истовремено стартовати.

Наравно, много тога зависи од природе сервиса/апликација које ће бити активне на VPS-овима, али препоручен је минимум 1 GB RAM меморије за 20 до 30 виртуалних приватних сервера Неки основни темплејт оперативног система са apache веб сервером заузима 400-600 MB простора, тако да вам по једном VPS-у треба најмање толико простора. Наравно све помножите са бројем VPS-ова које планирате.

Процес инсталације није превише компликован. Потребно је преузети кернел са адресе http://wiki.openvz.org/Download/kernel и ручно га инсталирати или једноставније омогућити openвз репозиторију софтвера. Помоћу yum-a (пакет менаџер), а узимајући у обзир архитектуру сервера, инсталирамо одговарајућу верзију OpenVZ кернела (vzkernel пакет).

Потребно је инсталирати и пакете vzctl, vzpkg и vzquota и проверити, да ли је у boot манаџеру додат новоинсталирани кернел. Провера садржаја и евентуално неке измена фајлова /etc/sysctl.conf и /etc/vz/vz.conf и можемо поново покренти систем и при бутовању изабрати опцију OpenVZ кернела. Ако је све прошло без иједне грешке, потребно је још инсталирати први темплејт, а најлакше је преузети неки од предефинисаних шаблона популарних дистрибуција са адресе http://wiki.openvz.org/Download/template/precreated и прекопирати га у /vz/template/cache директоријум.

GUI надоградња

OpenVZ долази са сетом наредби које се извршавају коришћењем командне линије (shell-а). Креирање нове инстанце, додељивање ресурса, разна конфигурисања, стартовање, заустављање, брисање, листање постојећих инстанци, стартовање команди на VPS инстанцама, све ово обавља се коришћењем командне линије, а процедуре су добро пропраћене кроз расположиву документацију. За оне који се слабије сналазе са конзолом или их овај начин рада успорава, постоје вебконтрол панели других произвођача. Parellels Plesk Panel је препоручено комерцијално решење, а OVZ Web panel бесплатно.

Контрола ресурса

Контрола ресурса додељених виртуалним приватним серверима се остварује помоћу ресурсних параметара. Ти параметри се дефинишу на глобалном нивоу, а могуће је за сваку инстанцу дефинисати посебна ограничења. Промене се врше едитовањем текст фајлова, употребом OpenVZ команди или евентуално помоћу вебконтролног панела. Ресурсна ограничења могу се категорисати на мрежна, процесорска, уопштено системска и ограничења која се односе на капацитет диска.

Укратко, можемо ограничити простор на диску који је резервисан за један VPS, а можемо плус поставити ограничења према корисницима и групама унутар самог контејнера. На пример VPS је ограничен на 4 GB, сваки корисник сме да искористи 300 MB простора за себе, а корисник који припада одређеној групи нема ограничења.

Процесорска ограничења се састоје у постављању параметара који дефинишу колико ће процесорског времена бити загарантовано хардверском ноду (препоручено 5-10%), колико загарантованог процесорског времена добија свака VPS понаособ , да ли и до које мере може да надвиси ову вредност, уколико процесор није оптерећен.

Можемо детерминисати максималан број процеса и тридова по контејнеру, број остваривих TCP конекција, количину загарантоване меморије као и кернелске меморије, број отворених/креираних фајлова од стране свих VPS инстанци, број ssh, screen и xterm сесија (псеудо-терминал сесије) и још много тога.

Ограничења и још занимљивих функционалности

Лимитације постоје када је у питању IPsec VPN технологија која није подржана унутар контејнера, али то можемо надоместити употребом TUN/TAP VPN решења као што су OpenVPN и VirtualTUNel. Ово ограничење не постоји код Parallels комерцијалног решења. Ограничење саме технологије је да и хардверски нод и све VPS инстанце морају користити Линукс оперативни систем (VPS инстанце истина могу користити разне Линукс дистрибуције). Ово ограничење се зато донекле компезује одличним перформансама, које су само 1 до 3% лошије у поређењу са класичним (standalone) серверима.

Такође неке функционалности морамо експлицитно омогућити. Да би, на пример, iptables модул био доступан свим VPS инстанцама, мора бити учитан на хардверском ноду. Такође експлицитно треба дозволити одређеним VPS инстанцама директан приступ мрежном адаптеру хардверског нода, као и директан приступ његовим дисковима.

Текст је преузет са угашеног блога ИТ модул и оригинални аутор овог текста је Владимир Благојевић. Компјутераш ИТ блог објављује текстове са тог блога како ризница знања са те локације не би отишла у заборав.