
IaaS teenuse (Virtuaalne andmekeskus) osutamiseks kasutame me kommertslikku orkestratsiooni (FCO). Selle lahenduse ainulaadne arhitektuur eristab seda tuntud Openstackist ja CloudStackist.
Compute node'idena toetatakse KVM, VmWare, Xen, Virtuozzo6/7 hüperviisoreid ning ka Virtuozzo konteinerit. Toetatud salvestustena on kohaliku, NFS, Ceph ja Virtuozzo Storage.
FCO toetab mitme klastri loomist ja haldamist ühest liidest. See tähendab, et Virtuozzo klastri ja KVM + Ceph klastri juhtimiseks saab vahetada lihtsalt hiireklõpsu.
Sisuliselt on FCO pilveteenuse pakkujatele terviklik lahendus, mis koosneb lisaks orkestratsioonile ka arveldamisest, koos kõigi seadete, maksepluginate, arvetega, teavitustega, edasimüüjatega, hindadega ja nii edasi. Siiski ei suuda arveldamise osa katta kõiki Venemaa spetsiifikas, mistõttu loobusime selle kasutamisest teise lahenduse kasuks.
Meeldiv on paindlik õiguste jaotamise süsteem kõigile pilve ressurssidele: pildid, kettad, tooted, serverid, tulemüürid – kõiki neid saab "jagada" ja õigusi jagada kasutajate, isegi erinevate klientide kasutajate vahel. Iga klient saab oma pilves luua mitu sõltumatut andmekeskust ja hallata neid ühest juhtpaneelist.

Arhitektuuriliselt koosneb FCO mitmest osast, millest igaühel on oma iseseisev kood ja mõnedel oma andmebaas.
Skyline – administraatori ja kasutajaliides
Jade – äriloogika, arveldamine, ülesannete haldamine
Tigerlily – teenuse koordinaator, kes haldab ja koordineerib teabevahetust äri loogika ja klastrite vahel.
XVPManager – klastrielementide haldamine: node'id, salvestus, võrk ja virtuaalsed masinad.
XVPAgent – agent, mis installitakse node'idesse, et suhelda XVPManageriga

Kavandame iga komponendi arhitektuuri üksikasjaliku ülevaate esitamist artiklite seerias, kui teema loomulikult huvi äratab.
FCO peamine eelis tuleneb selle "kastilisusest". Teie käsutuses on lihtsus ja minimalism. Juhtimismooduli jaoks määratakse üks virtuaalmasin Ubuntu, kuhu installitakse kõik vajalikud pakid. Kõik seadistused viiakse konfigureerimisfailidesse vormis muutujad-väärtused:
# 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"
…
Kogu konfiguratsioon muudetakse algselt šabloonides, seejärel käivitatakse generaator
#build-config который сформирует файл vars и даст команду сервисам перечитать конфиг. Пользовательский интерфейс приятный и может быть легко забрендирован.

Nagu nähtav, koosneb liides vidinatest, mille haldamine on kasutajale kättesaadav. Ta saab hõlpsasti lisada/koo vidinaid lehelt, kujundades seeläbi endale sobiva armatuurlaua.
Vaatamata oma suletusele on FCO väga kohandatav süsteem. Sellel on tohutult palju seadistusi ja sisenemispunkte töövoo muutmiseks:
- Kohandatud pluginate tugi, näiteks saate kirjutada oma arveldamismeetodi või oma välist ressursi kasutajale pakkumiseks
- Kohandatud käivitajad teatud sündmustele, näiteks esimese virtuaalmasina lisamine kliendile tema loomisel
- Kohandatud vidinad liideses, näiteks YouTube'i video integreerimine otse kasutajaliidesesse.
Kogu kohandamine on kirjutatud FDL keeles, mis põhineb Luadel. Kui te tunnete Lua, ei tohiks FDL-iga probleeme olla.
Siin on näide ühest kõige lihtsamast käivitajast, mida me kasutame. See käivitaja ei luba kasutajatel jagada oma pilte teiste klientidega. Teeme seda, et üks kasutaja ei saaks luua pahatahtlikku pilti teistele kasutajatele.
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
Funktsioon register kutsutakse esile FCO tuuma poolt. See tagastab funktsiooni nime, mida tuleb kutsuda. Selle funktsiooni parameeter “p” sisaldab kutse konteksti ja esimesel kutsumisel on see tühi (nil). See võimaldab meil registreerida oma käivitaja. triggerType-s näitame, et käivitajat kutsutakse enne avaldamisoperatsiooni ja see laieneb ainult kasutajatele. Süsteemi administraatoritele lubame loomulikult avaldada kõike. triggerOptions-s täpsustame operatsioonid, mille jaoks käivitaja käivitub.
Ja mis kõige tähtsam – return {exitState = “CANCEL”}, mille jaoks käivitaja on välja töötatud. See tagastab ebaõnnestumise, kui kasutaja proovib oma pilti juhtpaneelis jagada.
FCO arhitektuuris esindatakse iga objekt (ketas, server, pilt, võrk, võrguadapter jne) Ressursina, millel on ühised parameetrid:
- Ressursi UUID
- Ressursi nimi
- Ressursi tüüp
- Ressursi omanik UUID
- Ressursi staatus (aktiivne, mitteaktiivne)
- Ressursi metaandmed
- Ressursi võtmed
- Toote UUID, millele ressurs kuulub
- Ressursi VDC
See on väga mugav API kaudu töötamisel, kui kõikide ressurssidega tegeletakse ühe põhimõtte järgi. Tooteid seadistab teenusepakkuja ja tellib klient. Kuna meie arvelduse süsteem on eraldi, saab klient vabalt ja tasuta tellida mistahes toodet paneelist. See arvestatakse hiljem arveldamisse. Toode võib olla - IP-aadress tunnis, täiendav GB ketast tunnis või lihtsalt server.
Võtmete abil saab määrata teatud ressursse, et muuta nende kasutamise loogikat. Näiteks võime kolm füüsilist nodi määrata võtmega Weight ja mõningaid kliente sama võtmega, eristades seeläbi neid nodis eraldi. Sellist mehhanismi kasutame VIP-klientide jaoks, kes ei soovi oma VMide kõrval naabreid. Funktsionaalsust saab siiski rakendada palju laiemalt.
Litsentsimudeli kohaselt tasutakse iga füüsilise nodi protsessorituuma eest. Samuti mõjutab hinda klastrite tüüpide arv. Kui on plaanis kasutada koos näiteks KVM-i ja VMware'i, siis litsentsihind tõuseb.
FCO on täisväärtuslik toode, mille funktsionaalsus on väga rikkalik, seetõttu plaanime valmistada kohe mitu artiklit võrguosa detailsest kirjeldusega.
Oleme selles orkestris töödelda mitu aastat ja võime märkida, et see on väga kvaliteetne. Kahjuks ei ole toode ilma puudusteta:
- me oleme pidanud optimeerima andmebaasi, kuna päringud hakkasid andmete hulga suurenedes aeglustuma;
- pärast üht tõrget, mis oli tingitud veast, ei töötanud taastamismehhanism ja pidime käivitama õnnetute klientide masinad oma skriptiseeritud komplektiga;
- node’i kättesaamatuse tuvastamise mehhanism on koodi sisse kirjutatud ja ei ole kohandatav. See tähendab, et me ei saa luua oma poliitikaid node’i kättesaamatuse määratlemiseks.
- Logimine ei ole alati väga detailsed. Mõnikord, kui on vaja minna väga madalale tasemele teatud probleemi analüüsimiseks, puudu teeb mõnede komponentide lähtekood, et mõista põhjuseid;
KOKKUVÕTE: Kokkuvõttes on toote muljed head. Oleme pidevas kontaktis orkestreerija arendajatega. Poisid on avatud konstruktiivseks koostööks.
Hoolimata oma lihtsusest, omab FCO suurt funktsionaalsust. Tulevastes artiklites kavatseme süveneda järgmistes teemades:
- võrgu korraldamine FCO-s
- live-recovery ja FQP protokolli tagamine
- enda pluginate ja vidinate kirjutamine
- lisateenuste, nagu Load Balancer ja Acronis, ühendamine
- backup
- ühtne mehhanism nodede konfigureerimiseks ja seadistamiseks
- virtuaalmasinate metaandmete töötlemine
P.S. Kirjutage kommentaarides, kui huvitavad ka teised aspektid. Jälgige meid!
Allikas: habr.com
