
IaaS teenuse (Virtuaalne andmekeskus) pakkumiseks kasutame kaubanduslikku orkestreerijat (FCO). Sellel lahendusel on piisavalt ainulaadne arhitektuur, mis eristab seda tuntud avatud lahendustest nagu Openstack ja CloudStack.
Compute node'ide hüperviisoriteks toetatakse KVM, VmWare, Xen, Virtuozzo6/7, samuti Virtuozzo konteinerid. Toetatud salvestuslahendustest on olemas kohalik, NFS, Ceph ja Virtuozzo Storage.
FCO toetab mitme klastrite loomist ja nende haldamist ühest liidesest. See tähendab, et saate hallata Virtuozzo klassit ja KVM + Ceph klastri vahel klõpsates.
FCO on sisuliselt terviklik lahendus pilveteenuse pakkujatele, mis lisaks orkestreerimisele sisaldab ka arveldust, koos kõigi seadistustega, maksepulgade, arvetega, teateid, edasimüüjate, hindade jms. Kuid arveldusosa ei suuda katta kõiki Vene eripärasid, seetõttu loobusime selle kasutamisest teise lahenduse kasuks.
Oleme väga rahul paindliku õiguste jaotamise süsteemiga kõigi pilveteenuste, näiteks kujutiste, ketaste, toodete, serverite ja tulemüüride osas – kõike seda saab "jagada" ja õigusi erinevate kasutajate, isegi erinevate klientide vahel jagada. Igal kliendil on võimalik luua oma pilves mitu sõltumatut andmekeskust ja hallata neid ühest juhtpaneelist.

Arhitektuuriliselt koosneb FCO mitmest osast, millest igal on oma sõltumatu kood ja mõnedel ka oma andmebaas.
Skyline – admin ja kasutajaliides
Jade – äri loogika, arveldamine, ülesannete haldamine
Tigerlily – teenuse koordinaator, kes haldab ja koordineerib teabe vahetust äri loogika ja klastrite vahel.
XVPManager – klastrielementide juhtimine: sõlmed, salvestamine, võrk ja virtuaalsed masinad.
XVPAgent – agent, mis installitakse sõlmedesse, et suhelda XVPManageriga.

Kavandame iga komponendi arhitektuuri kohta põhjalikku juttu, kui teema kindlasti huvi pakub.
FCO peamine eelis tuleneb selle „karbistruktuurist“. Teie käsutuses on lihtsus ja minimalistlikkus. Halduse sõlme jaoks eraldatakse üks virtuaalmasin Ubuntu süsteemiga, kuhu installitakse kõik vajalikud paketid. Kõik seaded paigutatakse konfigureerimisfailidesse muutuja-väärtus vormingus:
# 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 konfigureerimine toimub algselt mallides, seejärel käivitatakse generaator.
#build-config который сформирует файл vars и даст команду сервисам перечитать конфиг. Пользовательский интерфейс приятный и может быть легко забрендирован.

Nagu näha, koosneb liides vidinatest, mille haldamine on kasutajale kergesti kättesaadav. Ta saab hõlpsasti lisada/eemaldada vidinaid lehelt, moodustades oma soovitud juhtpaneeli.
Vaatamata oma suletusele on FCO väga kohandatav süsteem. Tal on tohutult palju seadistusi ja sisenemispunkte töövoo muutmiseks:
- Toetatakse kohandatud pluginaid, näiteks saate kirjutada oma arveldusmeetodi või oma välist ressursi kasutaja jaoks.
- Toetatakse kohandatud käivituspunkte teatud sündmustel, näiteks esimese virtuaalmasina lisamine kliendile selle loomisel.
- Toetatakse kohandatud vidinaid liideses, näiteks saate otse kasutaja liidese sisse embedida Youtube'i video.
Kogu kohandamine toimub FDL-keeles, mis põhineb Lua-l. Kui teate Lua-d, ei teki FDL-iga mingeid probleeme.
Siin on näide ühest lihtsaimast käivitajatest, mida me kasutame. See käivitus ei luba kasutajatel jagada oma kujutisi teistega. Teeme seda, et vältida olukordi, kus üks kasutaja võiks luua kahjuliku kujutise teistele.
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 välja FCO südamiku poolt. See tagastab funktsiooni nime, mida tuleb kutsuda. Parameeter 'p' sisaldab kutsumise konteksti ja esimesel kutsumisel on see tühi (nil). See võimaldab meil registreerida meie käivitus. triggerType näitab, et käivitus kutsutakse välja ENNE avaldamise operatsiooni ning kehtib ainult kasutajatele. Süsteemi administraatoritele lubame loomulikult avaldada kõike. triggerOptions-s täpsustame operatsioonid, mille puhul käivitus aktiveeritakse.
Ja mis kõige tähtsam – return {exitState = “CANCEL”}, milleks käivitus on loodud. See tagastab ebaõnnestumise, kui kasutaja püüab oma kujutist juhtpaneelil jagada.
FCO arhitektuuris on iga objekt (kõvaketas, server, pilt, võrk, võrkaadapter jne) esindatud Resource üksusena, millel on ühised parameetrid:
- ressursi UUID
- ressursi nimi
- ressursi tüüp
- ressursi omaniku UUID
- ressursi staatus (aktiivne, mitteaktiivne)
- ressursi metaandmed
- ressursi võtmed
- toote UUID, millele ressurss kuulub
- ressursi VDC
See on väga mugav API kaudu töötamisel, kuna kõikide ressursside haldamine käib ühe ja sama põhimõtte järgi. Tooteid seadistab teenusepakkuja ning tellib neid klient. Kuna meie arvelduse süsteem on eraldi, saab klient vabalt tellida ükskõik millist toodet paneelist. See arvestatakse hiljem arveldamisel. Toode võib olla – IP-aadress tunnis, täiendav GB ketta ruumi tunnis või lihtsalt server.
Võtmeid saab kasutada teatud ressursside märgistamiseks, et muuta nende haldamise loogikat. Näiteks võime kolme füüsilise sõlme märgistada võtmega Weight ja teatud kliente samuti selle sama võtmega, eristades seeläbi neid sõlmi nende klientide jaoks. Sellist mehhanismi kasutame VIP-klientide jaoks, kes ei soovi oma virtuaalsete masinate lähedusse naabreid. Funktsionaalsust saab rakendada ka laiemalt.
Licentsimudel eeldab tasumist iga füüsilise node protsessorituuma eest. Samuti mõjutab hinda klastrite tüüpide arv. Kui plaanitakse kasutada koos näiteks KVM-i ja VMware'i, siis litsentsi hind tõuseb.
FCO on täielik toode, mille funktsionaalsus on väga rikkalik, seetõttu plaanime ette valmistada mitu artiklit, kus kirjeldame põhjalikult võrgufunktsioone.
Oleme selle orkestratsioonitööriistaga töötanud mitu aastat ja saame öelda, et see on väga hea. Kahjuks ei ole toode ilma puudusteta:
- me pidime andmebaasi optimeerima, kuna päringud hakkasid andmete kasvu tõttu aeglustuma;
- ühe tõrke tõttu, mis oli põhjustatud veast, ei töötanud taastumise mehhanism ja pidime tõstma õnnetute klientide masinad oma skriptide kogumiga;
- node kättesaamatuse tuvastamise mehhanism on koodis sisse ehitatud ja seda ei saa kohandada. See tähendab, et me ei saa luua oma poliitikaid node ebaõnnestumise defineerimiseks.
- logimine ei ole alati detailselt kirjeldatud. Mõnikord, kui on vaja süveneda väga madalale tasemele kindla probleemi lahendamiseks, ei piisa mõne komponendi lähtekoodist põhjuse mõistmiseks;
KOKKUVÕTTEKS: Üldiselt on toote muljed head. Oleme pidevas kontaktis orkestri arendajatega. Poisid on avatud konstruktiivsele koostööle.
Vaatamata oma lihtsusele on FCO-l laialdane funktsionaalsus. Tulevastes artiklites kavatseme süveneda järgmistes teemades:
- võrgu korraldamine FCO-s
- live-recovery ja FQP protokolli tagamine
- oma pluginjate ja vidinate kirjutamine
- lisateenuste, nagu Load Balancer ja Acronis, ühendamine
- varukoopia
- ühtne mehhanism sõlmede seadistamiseks ja konfigureerimiseks
- virtuaalmasinate metadate töötlemine
P.S. Kirjuta kommentaarides, kui sind huvitavad ka teised aspektid. Jätka jälgimist!
Allikas: habr.com
