
Për ofrimin e shërbimit IaaS (Qendër virtuale të të dhënave), ne në përdorim orkestra komerciale (FCO). Ky zgjidhje ka një arkitekturë mjaft unike që e ndan atë nga Openstack dhe CloudStack, të njohura për publikun.
Si hipervizorë për nodat compute mbështeten KVM, VmWare, Xen, Virtuozzo6/7, si dhe kontejnerët nga i njëjti Virtuozzo. Nga ruajtjet e mbështetura – lokale, NFS, Ceph dhe Virtuozzo Storage.
FCO mbështet krijimin e klasterëve të shumtë dhe menaxhimin e tyre nga një ndërfaqe. Domethënë, mund të menaxhoni një klaster Virtuozzo dhe një klaster KVM + Ceph duke kaluar mes tyre me një klik të mice.
FCO, në thelb, është një zgjidhje komplekse për ofruesit e cloud-it, e cila përveç orkestrimit përfshin edhe faturimin, me të gjitha konfigurimet, pluginët për pagesa, faturat, njoftimet, rimaqet, tarifat dhe kështu me radhë. Megjithatë, pjesa e faturimit nuk është në gjendje të mbulojë të gjitha nuancat ruse, prandaj ne u rindamë nga përdorimi i saj në favor të një zgjidhjeje tjetër.
Na gëzon një sistem fleksibël për shpërndarjen e të drejtave mbi të gjitha burimet e cloud-it: imazhe, disqe, produkte, servera, firewalls – gjithçka mund të "ndahen" dhe të jepen të drejta midis përdoruesve, dhe madje edhe midis përdoruesve të klientëve të ndryshëm. Çdo klient mund të krijojë në cloud-in e tij disa qendra të të dhënave të pavarura dhe t'i menaxhojë ato nga një panel të vetëm.

Arkitektonikisht, FCO përbëhet nga disa pjesë, çdo njëra ka kodin e saj të pavarur, dhe disa madje edhe databazën e vet.
Skyline – ndërfaqja administrative dhe ajo e përdoruesit
Jade – logjika e biznesit, faturimi, menaxhimi i detyrave
Tigerlily – koordinatori i shërbimeve, menaxhon dhe koordinon shkëmbimin e informacionit mes logjikës së biznesit dhe klasterëve.
XVPManager – menaxhimi i elementeve të klasterit: nodat, ruajtja, rrjeti dhe makinat virtuale.
XVPAgent – agjenti që vendoset në nodat për të bashkëpunuar me XVPManager

Një tregim të detajuar mbi arkitekturën e çdo komponente ne planifikojmë ta vendosim në një cikël artikujsh, nëse, natyrisht, tema do të shprehë interes.
Avantazhi kryesor i FCO-së del nga "paketimi" i tij. Ju keni në dispozicion thjeshtësinë dhe minimalizmin. Për nodën menaxhuese ndarja një makinë virtuale në Ubuntu, në të cilën instalohen të gjitha paketat e nevojshme. Të gjitha konfigurimet i jepen skedarëve të konfigurimit në formën variabël-vlerë:
# cat /etc/extility/config/vars
…
export LIMIT_MAX_LIST_ADMIN_DEFAULT="30000"
export LIMIT_MAX_LIST_USER_DEFAULT="200"
export LOGDIR="/var/log/extility"
export LOG_FILE="misc.log"
export LOG_FILE_LOG4JHOSTBILLMODULE="hostbillmodule.log"
export LOG_FILE_LOG4JJADE="jade.log"
export LOG_FILE_LOG4JTL="tigerlily.log"
export LOG_FILE_LOG4JXVP="xvpmanager.log"
export LOG_FILE_VARS="misc.log"
…
E gjithë konfigurimi rregullohet fillimisht në shabllonët, më pas aktivizohet gjeneratori
#build-config который сформирует файл vars и даст команду сервисам перечитать конфиг. Пользовательский интерфейс приятный и может быть легко забрендирован.

Siç duket, ndërfaqja përbëhet nga widget-e, menaxhimi i të cilave është i disponueshëm për përdoruesin. Ai mund të shtojë/fshini lehtësisht widget-e nga faqja, duke formuar kështu dashboard-in që dëshiron.
Pavarësisht mbylljes së saj, FCO është një sistem shumë i personalizueshëm. Ajo ka një numër të madh konfigurimesh dhe pikash hyrëse për ndryshimin e workflow-it:
- Mbështeten pluginë të personalizuar, për shembull, ju mund të shkruani një metodë faturimi të vetëshkruar ose një burim të jashtëm për ofrimin e më të mirës për përdoruesin
- Mbështeten trigger të personalizuar për ngjarje të caktuara, për shembull, shtimi i makinës virtuale të parë për klientin gjatë krijimit të tij
- Mbështeten widget-e të personalizuar në ndërfaqe, për shembull, integrimi i një videoje nga youtube direkt në ndërfaqen e përdoruesit.
E gjithë personalizimi shkruhet në gjuhën FDL, e cila është e bazuar në Lua. Nëse njihni Lua-n, me FDL nuk do të keni probleme.
Ja një shembull i një prej trigger-eve më të thjeshta që ne përdorim. Ky trigger nuk lejon përdoruesit të ndajnë imazhet e tyre me klientë të tjerë. Ne e bëjmë këtë për të siguruar që një përdorues të mos krijojë imazhe përcjellëse për përdorues të tjerë.
function register()
return {"pre_user_api_publish"}
end
function pre_user_api_publish(p)
if(p==nil) then
return{
ref = "cancelPublishImage",
name = "Cancel publishing",
description = "Cancel all user’s images publishing",
triggerType = "PRE_USER_API_CALL",
triggerOptions = {"publishResource", "publishImage"},
api = "TRIGGER",
version = 1,
}
end
-- Turn publishing off
return {exitState = "CANCEL"}
end
Funksioni register do të thirret nga bërthama FCO. Ai do të kthejë emrin e funksionit që duhet të thirret. Parametri “p” i këtij funksioni mban kontekstin e thirrjes, dhe në thirrjen e parë ai do të jetë i zbrazët (nil). Kjo do të na lejojë të regjistrojmë trigger-in tonë. Në triggerType ne tregojmë se trigger-i thirret PARA operacionit të publikimit, dhe përhapet vetëm për përdoruesit. Sigurisht, ne lejojmë administratorët e sistemit të publikojnë gjithçka. Në triggerOptions ne detajojmë operacionet për të cilat trigger-i do të zbatohet.
Dhe më e rëndësishmja – return {exitState = “CANCEL”}, për atë për të cilin trigger-i është zhvilluar. Ai do të kthejë dështim, kur përdoruesi përpiqet të ndajë imazhin e tij në panelin e menaxhimit.
Në arkitekturën e FCO – çdo objekt (disk, server, imazh, rrjet, adaptori i rrjetit etj.) përfaqësohen në formën e një entiteti Resource, i cili ka parametra të përbashkët:
- UUID i burimit
- emri i burimit
- tipi i burimit
- UUID i pronarit të burimit
- statusi i burimit (aktiv, joaktiv)
- metadatet e burimit
- çelësat e burimit
- UUID i produktit, të cilit i përket burimi
- VDC i burimit
Kjo është shumë praktike kur punoni me API, kur të gjitha burimet trajtohen në një mënyrë të njëjtë. Produktet konfigurohen nga ofruesi, ndërsa ato porositen nga klienti. Duke marrë parasysh se faturimi ynë është në anë, klienti mund të porosisë lirisht dhe pa pagesë çdo produkt nga paneli. Ai do të llogaritet më vonë në faturim. Një produkt mund të jetë – një adresë IP për orë, një GB shtesë disku për orë, ose thjesht një server.
Çelësat mund të përdoren për të shënjuar burime të caktuara për të ndryshuar logjikën e punës me to. Për shembull, ne mund të shënjojmë tre nodet fizike me çelësin Pesha, dhe të shënjojmë disa klientë me të njëjtin çelës, duke i rezervuar këto nodet në mënyrë personale për këta klientë. Ky mekanizëm përdoret për klientët VIP, të cilët nuk preferojnë fqinjë të afërt me VM e tyre. Funksionaliteti mund të aplikohet edhe më gjerë.
Modeli i licencimit parashikon pagesën për çdo bërthamë të procesorit të nodit fizik. Po ashtu, numri i llojeve të klasterëve ndikon në çmimin. Nëse planifikoni të përdorni së bashku, për shembull, KVM dhe VMware, atëherë çmimi i licencës do të rritet.
FCO është një produkt i plotë, funksionaliteti i tij është shumë i pasur, prandaj ne planifikojmë të përgatisim disa artikuj me një përshkrim të detajuar të funksionimit të pjesës rrjetore.
Pas një periudhe disa vjeçare me këtë orkestrator, mund të theksojmë se është shumë i mirë. Fatkeqësisht, produkti nuk është pa defekte:
- na ka ndodhur të optimizojmë bazën e të dhënave, pasi kërkesat filluan të ngadalësohen me rritjen e numrit të të dhënave në to;
- pas një ngjarjeje fatkeqe për shkak të një bugu, mekanizmi i rikuperimit nuk funksionoi, dhe me ndihmën e skriptëve tanë u desh të ngriheshin makinat e klientëve që kishin pësuar;
- mekanizmi për të detektuar papërshtatshmërinë e nodit është i integruar në kod dhe nuk i nënshtrohet personalizimit. Pra, ne nuk mund të krijojmë politika të veta për përcaktimin e papërshtatshmërisë së nodit.
- logimi nuk është gjithmonë i detajuar. Ndonjëherë, kur është e nevojshme të zbresim në një nivel shumë të ulët për të zgjidhur një problem të caktuar, na mungojnë kodet burimore të disa komponentëve për të kuptuar shkaqet;
PËRMBLEDHJE: në përgjithësi, përshtypjet për produktin janë pozitive. Ne jemi në kontakt të vazhdueshëm me zhvilluesit e orkestratorit. Djemtë janë të gatshëm për bashkëpunim të konstruktiv.
Pavarësisht thjeshtësisë së tij, FCO ofron një funksionalitet të gjerë. Në artikujt e ardhshëm ne planifikojmë të thellojmë në temat e mëposhtme:
- organizimi i rrjetit në FCO
- sigurimi i rikuperimit në kohë reale dhe protokollit FQP
- shkrimi i plug-in-eve dhe widget-eve të vetat
- lidhja e shërbimeve shtesë, si Load Balancer dhe Acronis
- backup
- mekanizmi i unifikuar për konfigurimin dhe vendosjen e nodëve
- trajtim i metadatat e makinave virtuale
P.S. Shkruani në komentet nëse jeni të interesuar për aspekte të tjera. Qëndroni të informuar!
Burimi: habr.com
