
Za pružanje IaaS usluge (Virtualni podatkovni centar) koristimo komercijalni orkestrator (FCO). Ovo rješenje ima dovoljno jedinstvenu arhitekturu koja ga izdvaja od poznatih Openstack i CloudStack.
Kao hipervizori za compute čvorove podržani su KVM, VmWare, Xen, Virtuozzo6/7, kao i kontejneri iz Virtuozzo-a. Od podržanih spremišta – lokalno, NFS, Ceph i Virtuozzo Storage.
FCO podržava kreiranje više klastera i upravljanje njima iz jednog sučelja. To jest, moguće je upravljati Virtuozzo klasterom i KVM + Ceph klasterom jednostavnim klikom mišom.
U suštini, FCO je sveobuhvatno rješenje za cloud provajdere koje, osim orkestracije, uključuje i billing, sa svim podešavanjima, platnim dodacima, računima, obavijestima, resellerima, tarifama i tako dalje. Međutim, billing dio ne može pokriti sve specifičnosti u Rusiji, stoga smo se odlučili odustati od njegove upotrebe u korist drugog rješenja.
Veoma je pozitivna fleksibilna sustav raspodjele prava na sve resurse oblaka: slike, diskove, proizvode, servere, vatrozide – sve to se može 'dijeliti' i odobravati prava između korisnika, pa čak i između korisnika različitih klijenata. Svaki klijent može u svom oblaku kreirati nekoliko neovisnih podatkovnih centara i upravljati njima iz jedinstvene kontrolne ploče.

Arhitektonski, FCO se sastoji od nekoliko dijelova, od kojih svaki ima svoj neovisni kod, a neki i vlastitu bazu podataka.
Skyline – administratorsko i korisničko sučelje
Jade – poslovna logika, billing, upravljanje zadacima
Tigerlily – koordinator usluga, upravlja i koordinira razmjenu informacija između poslovne logike i klastera.
XVPManager – upravljanje elementima klastera: čvorovima, pohranom, mrežama i virtualnim mašinama.
XVPAgent – agent koji se instalira na čvorove za interakciju s XVPManager-om

Detaljno objašnjenje arhitekture svakog komponenta planiramo smjestiti u seriju članaka, ako, naravno, tema izazove interes.
Glavna prednost FCO proizlazi iz njegove „kutijastosti“. Na raspolaganju su vam jednostavnost i minimalizam. Za upravljačku čvoru dodijeljena je jedna virtualna mašina na Ubuntu, u koju se instaliraju svi potrebni paketi. Sva podešavanja se prenose u konfiguracijske datoteke u obliku varijabla-vrijednost:
# 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"
…
Cjela konfiguracija se prvotno obrađuje u predlošcima, a potom se pokreće generator
#build-config который сформирует файл vars и даст команду сервисам перечитать конфиг. Пользовательский интерфейс приятный и может быть легко забрендирован.

Kao što se može vidjeti, sučelje se sastoji od widgeta, čijom upravljanjem korisnik ima pristup. Može lako dodavati/brisati widgete sa stranice, oblikujući time vlastiti dashboard.
Unatoč svojoj zatvorenosti, FCO je vrlo prilagodljiv sustav. Ima ogroman broj postavki i ulaznih točaka za promjenu tijeka rada:
- Podržani su prilagođeni dodaci, primjerice, možete napisati svoju metodu naplate ili vlastiti vanjski resurs za pružanje korisniku
- Podržani su prilagođeni okidači za određene događaje, primjerice, dodavanje prve virtualne mašine klijentu prilikom njegovog stvaranja
- Podržani su prilagođeni widgeti u sučelju, primjerice, ugrađivanje videa s YouTube-a izravno u sučelje korisnika.
Sva prilagodba se piše na jeziku FDL, koji se temelji na Lua. Ako znate Lua, neće biti problema s FDL-om.
Evo primjer jednog od najjednostavnijih okidača koje koristimo. Ovaj okidač ne dopušta korisnicima da dijele svoje vlastite slike s drugim korisnicima. To radimo kako bismo spriječili jednog korisnika da stvori zloćudnu sliku za druge korisnike.
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
Funkcija register bit će pozvana od strane FCO jezgre. Vratit će ime funkcije koja se treba pozvati. Parametar “p” ove funkcije pohranjuje kontekst poziva, a prilikom prvog poziva bit će prazan (nil). To će nam omogućiti da registriramo naš okidač. U triggerType prikazujemo da se okidač poziva PRIJE operacije objavljivanja i proširuje se samo na korisnike. Administratorima sustava, naravno, dopuštamo da objavljuju sve. U triggerOptions detaljno navodimo operacije za koje će se okidač aktivirati.
I glavno – return {exitState = “CANCEL”}, za što je okidač i razvijen. Vratit će neuspjeh kada korisnik pokuša podijeliti svoju sliku u upravljačkoj ploči.
U arhitekturi FCO – svaki objekt (disk, poslužitelj, slika, mreža, mrežni adapter i dr.) prikazan je kao entitet Resource, koji ima zajedničke parametre:
- UUID resursa
- ime resursa
- tip resursa
- UUID vlasnika resursa
- status resursa (aktivan, neaktivan)
- metapodaci resursa
- ključevi resursa
- UUID proizvoda kojem resurs pripada
- VDC resursa
Ovo je vrlo praktično pri radu putem API-ja, kada se sa svim resursima radi prema istom principu. Proizvode postavlja pružatelj, a naručuje ih klijent. Budući da je naš billing odvojen, klijent može slobodno i besplatno naručiti bilo koji proizvod iz sučelja. Naplata će se izvršiti kasnije u billing-u. Proizvod može biti – IP adresa po satu, dodatni GB diska po satu ili jednostavno poslužitelj.
Ključeve možemo označiti za određene resurse kako bismo promijenili logiku rada s njima. Na primjer, možemo označiti tri fizičke čvorove ključem Weight, i označiti neke klijente tim istim ključem, na taj način izdvajajući te čvorove posebno za te klijente. Ovaj mehanizam koristimo za VIP-klijente koji ne vole susjede blizu svojih VM-ova. Sam funkcionalnost može se primijeniti mnogo šire.
Model licenciranja podrazumijeva plaćanje za svaki jezgri procesora fizičkog čvora. Također, cijena ovisi o broju tipova klastera. Ako se planira zajedno koristiti, na primjer, KVM i VMware, tada će se cijena licence povećati.
FCO je potpuno razvijen proizvod, njegova funkcionalnost je vrlo bogata, stoga planiramo pripremiti nekoliko članaka s detaljnim opisom rada mrežnog dijela.
Radom s ovim orkestratorom nekoliko godina možemo ga ocijeniti kao veoma kvalitetnog. Nažalost, proizvod nije bez nedostataka:
- morali smo optimizirati Bazu podataka jer su upiti počeli usporavati s povećanjem količine podataka u njima;
- nakon jedne nesreće zbog greške mehanizam oporavka nije radio, i morali smo pokrenuti mašine nesretnih klijenata vlastitim skupom skripti;
- mehanizam za otkrivanje nedostupnosti čvora je ukorijenjen u kodu i ne može se prilagoditi. To jest, ne možemo stvoriti vlastite politike određivanja nedostupnosti čvora.
- Evidentiranje nije uvijek detaljno. Ponekad, kada je potrebno dublje istražiti određeni problem, nedostaje izvorni kod nekih komponenti za razumijevanje uzroka;
UKUPNO: Općenito, dojmovi o proizvodu su dobri. Neprekidno smo u kontaktu s programerima orkestratora. Momci su skloni konstruktivnoj suradnji.
Unatoč svojoj jednostavnosti, FCO nudi široku funkcionalnost. U budućim člancima planiramo dublje istražiti sljedeće teme:
- organizacija mreže u FCO
- osiguranje live-recovery i FQP protokola
- pisanje vlastitih dodataka i widgeta
- spajanje dodatnih usluga kao što su Load Balancer i Acronis
- backup
- unificirani mehanizam konfiguracije i postavljanja nodova
- obračunavanje metapodataka virtualnih mašina
P.S. Pišite u komentarima ako vas zanimaju i drugi aspekti. Ostanite s nama!
Izvor: habr.com
