
Për ofrimin e shërbimit IaaS (Qendra e të Dhënave Virtuale), ne në përdorim orkestratorin komercial (FCO). Ky zgjidhje ka një arkitekturë mjaft unike, që e ndan atë nga platforma të njohura si Openstack dhe CloudStack.
Si hypervisors për nodet compute mbështeten KVM, VmWare, Xen, Virtuozzo6/7, si dhe kontejnerët e të njëjtit Virtuozzo. Nga ruajtjet e mbështetura, janë lokale, NFS, Ceph dhe Virtuozzo Storage.
FCO mbështet krijimin e disa klasterëve dhe menaxhimin e tyre nga një ndërfaqe e vetme. Pra, është e mundur të menaxhohet një klaster Virtuozzo dhe një klaster KVM + Ceph duke kaluar ndërmjet tyre me një klik të miut.
Në thelb, FCO është një zgjidhje e plotë për ofruesit e cloud, e cila përveç orkestrimit përfshin edhe faturimin, me të gjitha konfigurimet, shtesat për pagesa, faturat, njoftimet, risellet, tarifat dhe kështu me radhë. Megjithatë, pjesa e faturimit nuk është në gjendje të pokrijë të gjitha nuancat ruse, prandaj ne u dorëzuam nga përdorimi i saj në favor të një zgjidhjeje tjetër.
Na gëzon shumë sistemi fleksibël i shpërndarjes së të drejtave për të gjitha burimet e cloud-it: imazhet, diskët, produktet, serverët, firewall-at – të gjitha këto mund të 'ndahen' dhe të jepen të drejta midis përdoruesve, madje edhe midis përdoruesve të klientëve të ndryshëm. Çdo klient mund të krijojë në cloud-in e tij disa qendra të dhënash të pavarura dhe t'i menaxhojë ato nga një panel i vetëm.

Arkitekturorisht, FCO përbëhet nga disa pjesë, secila prej të cilave ka kodin e saj të pavarur, dhe disa edhe bazën e të dhënave të saj.
Skyline – ndërfaqja administrative dhe për përdoruesit
Jade – logjika biznesore, faturimi, menaxhimi i detyrave
Tigerlily – koordinator i shërbimit, menaxhon dhe koordon informacionin midis logjikës biznesore dhe klasterëve.
XVPManager – menaxhimi i elementeve të klasterit: nodet, ruajtja, rrjeti dhe makinat virtuale.
XVPAgent – agenti që instalohet në nodet për të bashkëpunuar me XVPManager

Një rrëfim i detajuar mbi arkitekturën e çdo komponente planifikojmë ta përfshijmë në një cikël artikujsh, nëse sigurisht, tema do të tërheqë interes.
Avantazhi kryesor i FCO rrjedh nga "paketizimi" i tij. Ju ofrohet thjeshtësia dhe minimalizmi. Një makinë virtuale në Ubuntu i dedikohet nodës menaxhuese, ku instalohen të gjitha paketat e nevojshme. Të gjitha konfigurimet vendosen në skedarët e 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 modifikohet fillimisht në të shpallurat, pastaj aktivizohet gjeneruesi
#build-config который сформирует файл vars и даст команду сервисам перечитать конфиг. Пользовательский интерфейс приятный и может быть легко забрендирован.

Siç shihet, interfejsi përbëhet nga widget-e, menaxhimi i të cilëve është i qasshëm për përdoruesin. Ai mund të shtojë/hiqet lehtësisht widget-e nga faqja, duke formuar kështu dashboard-in e tij të dëshiruar.
Pavarësisht nga mbyllja e tij, FCO është një sistem shumë i personalizueshëm. Ai ka një numër të madh konfigurimesh dhe pikash hyrëse për të ndryshuar rrjedhën e punës:
- Përkrahjen e plugin-eve të personalizuara, për shembull, mund të shkruani një metodë të vetë-bilancit ose një burim të jashtëm për t'i ofruar përdoruesit
- Përkrahjen e trigger-eve të personalizuara për ngjarje të caktuara, për shembull, shtimi i makinës virtuale të parë për klientin gjatë krijimit të tij
- Përkrahjen e widget-eve të personalizuara në interfejs, për shembull, për të integruar një video 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 e dini Lua-n, nuk do keni asnjë problem me FDL.
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ë që një përdorues të mos mund të krijojë një imazh keqdashës për përdoruesit e 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 e FCO. Ai do të kthejë emrin e funksionit që duhet të thirret. Parametri “p” i këtij funksioni ruan kontekstin e thirrjes, dhe gjatë thirrjes së parë ai do të jetë bosh (nil). Kjo do të na lejojë të regjistrojmë trigger-in tonë. Në triggerType tregonim se trigger-i thirret PARA operacionit të publikimit dhe përhapet vetëm për përdoruesit. Administratorët e sistemit, natyrisht, lejohet t'i publikojnë të gjitha. Në triggerOptions ne detajojmë operacionet për të cilat trigger-i do të aktivizohet.
Dhe më kryesorja – return {exitState = “CANCEL”}, për të cilin trigger-i u zhvillua. Ai do të kthejë dështim kur një përdorues përpiqet të ndajë imazhin e tij në panelin e menaxhimit.
Në arkitekturën FCO – çdo objekt (disku, serveri, imazhi, rrjeti, adapteri rrjetit, etj.) paraqitet në formën e një entiteti Resource, i cili ka parametrat e përbashkët:
- UUID i burimit
- emri i burimit
- tipi i burimit
- UUID i pronarit të burimit
- statusi i burimit (aktiv, joaktiv)
- metadatata e burimit
- çelësat e burimit
- UUID i produktit, të cilit i përket burimi
- VDC i burimit
Kjo është shumë e përshtatshme kur punoni me API, kur me të gjitha burimet puna bëhet sipas një principi. Produktet konfigurohen nga ofruesi, ndërsa i kërkon klienti. Duke qenë se faturimi ynë është nga jashtë, klienti mund të porosisë çdo produkt nga paneli pa pagesë. Ai do të llogaritet më vonë në faturim. Produkti mund të jetë – adresa ip për orë, një GB shtesë disku për orë ose thjesht serveri.
Çelësat mund të shënojnë burime të caktuara për të ndryshuar logjikën e punës me to. Për shembull, ne mund të shënojmë tri node fizike me çelësin Weight dhe të shënojmë disa klientë me këtë çelës të njëjtë, duke i veçuar këto node për këta klientë. Ky mekanizëm ne e përdorim për klientët VIP, të cilët nuk duan fqinjë afër VM-ve të tyre. Funksionaliteti mund të aplikohet shumë më gjerë.
Modeli i licencimit parashikon pagesën për çdo bërthamë procesori të nodit fizik. Gjithashtu, çmimi ndikohen nga numri i tipave të klasterëve. Nëse planifikohet të përdoren bashkë, 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 përshkrimin e detajuar të funksionimit të pjesës rrjetore.
Pas disa vitesh punë me këtë orkestrator, mund të theksojmë se është shumë i besueshëm. Fatkeqësisht, produkti nuk është i liruar nga të metat:
- na ka ndodhur të optimizojmë DB-në, pasi kërkesat filluan të ngadalësohen me rritjen e numrit të të dhënave në to;
- pas një aksidenti për shkak të një defekti, mekanizmi i rikuperimit nuk funksionoi, dhe na duhej të ngjallnim makinat e klientëve të pafat me një grup skriptesh;
- mekanizmi i detektimit të papashtyrshmërisë së nodit është i koduar dhe nuk mund të personalizohet. Pra, ne nuk mund të krijojmë politikat tona për përcaktimin e papashtyrshmërisë së nodit.
- Dërgimi i skedarëve nuk është gjithmonë i detajuar. Ndonjëherë, kur duhet të zbresim në një nivel shumë të ulët për të analizuar një problem të caktuar, mungojnë kodet burimore të disa komponentëve për të kuptuar arsyet;
TOTAL: Në përgjithësi, përshtypjet për produktin janë të mira. Jemi në kontakt të vazhdueshëm me zhvilluesit e orkestratorit. Djemtë janë të hapur për bashkëpunim konstruktiv.
Pavarësisht thjeshtësisë së FCO, ka funksionalitete të gjera. Në artikujt e ardhshme planifikojmë të thellohemi në temat e mëposhtme:
- organizimi i rrjetit në FCO
- sigurimi i rikuperimit të menjëhershëm dhe protokollit FQP
- shkrimi i plug-in-eve dhe widget-eve të vetat
- lidha shërbime të tjera, si Load Balancer dhe Acronis
- kopje rezervë
- mekanizmi i unifikuar për konfigurimin dhe përshtatjen e nodave
- përpunimi i metadatas së makinave virtuale
P.S. Shkruani në komente nëse jeni të interesuar për aspekte të tjera. Qëndroni të lidhur!
Burimi: habr.com
