Za pružanje IaaS (Virtuelni Data Center) usluge, mi
KVM, VmWare, Xen, Virtuozzo6/7, kao i kontejneri iz istog Virtuozzoa su podržani kao hipervizori računarskih čvorova. Podržane opcije skladištenja uključuju lokalno, NFS, Ceph i Virtuozzo skladište.
FCO podržava kreiranje i upravljanje višestrukim klasterima iz jednog interfejsa. To jest, možete upravljati virtuozzo klasterom i KVM + Ceph klasterom tako što ćete se prebacivati između njih klikom miša.
U svojoj osnovi, FCO je sveobuhvatno rješenje za cloud provajdere, koje osim orkestracije uključuje i naplatu, sa svim postavkama, dodatke za plaćanje, fakture, obavijesti, prodavce, tarife itd. Međutim, obračunski dio nije u stanju pokriti sve ruske nijanse, pa smo odustali od njegove upotrebe u korist drugog rješenja.
Veoma sam zadovoljan fleksibilnim sistemom za distribuciju prava na sve resurse u oblaku: slike, diskove, proizvode, servere, firewall - sve se to može "dijeliti" i dodijeliti prava između korisnika, pa čak i između korisnika različitih klijenata. Svaki klijent može kreirati nekoliko nezavisnih centara podataka u svom oblaku i upravljati njima sa jedne kontrolne table.
Arhitektonski, FCO se sastoji od nekoliko dijelova, od kojih svaki ima svoj nezavisni kod, a neki imaju svoju bazu podataka.
linija horizonta – administratorsko i korisničko sučelje
žad – poslovna logika, naplata, upravljanje zadacima
tigerlily – koordinator usluga, upravlja i koordinira razmjenu informacija između poslovne logike i klastera.
XVPManager – upravljanje elementima klastera: čvorovi, skladište, mreže i virtuelne mašine.
XVPAgent – agent instaliran na čvorovima za interakciju sa XVPManagerom
Planiramo da u seriju članaka uključimo detaljnu priču o arhitekturi svake komponente, ako, naravno, tema izazove interesovanje.
Glavna prednost FCO proizlazi iz njegove „upakirane“ prirode. Jednostavnost i minimalizam su Vam na usluzi. Za kontrolni čvor je dodijeljena jedna virtuelna mašina na Ubuntu-u u koju su instalirani svi potrebni paketi. Sve postavke su smještene u konfiguracijske datoteke u obliku promjenljive vrijednosti:
# 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"
…
Cijela konfiguracija se u početku uređuje u šablonima, a zatim se pokreće generator
#build-config koji će generirati vars datoteku i narediti servisima da ponovo pročitaju konfiguraciju. Korisničko sučelje je lijepo i može se lako brendirati.
Kao što vidite, interfejs se sastoji od widgeta koje korisnik može kontrolisati. On može lako dodati/ukloniti widgete sa stranice, stvarajući tako kontrolnu tablu koja mu je potrebna.
Uprkos svojoj zatvorenoj prirodi, FCO je veoma prilagodljiv sistem. Ima ogroman broj postavki i ulaznih tačaka za promjenu toka posla:
- Podržani su prilagođeni dodaci, na primjer, možete napisati vlastiti način naplate ili vlastiti vanjski resurs kako biste korisniku pružili
- Podržani su prilagođeni okidači za određene događaje, na primjer, dodavanje prve virtualne mašine klijentu kada se kreira
- Podržani su prilagođeni widgeti u interfejsu, na primjer, ugrađivanje YouTube videa direktno u korisnički interfejs.
Sva prilagođavanja su napisana u FDL-u, koji je baziran na Lua. Ako poznajete Lua, neće biti problema sa FDL-om.
Evo primjera jednog od najjednostavnijih okidača koje koristimo. Ovaj okidač ne dozvoljava korisnicima da dijele svoje slike s drugim klijentima. Ovo radimo kako bismo spriječili jednog korisnika da kreira zlonamjernu 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
Funkciju registra će pozvati FCO kernel. Vratit će ime funkcije koju treba pozvati. Parametar “p” ove funkcije pohranjuje kontekst poziva, a prvi put kada se pozove bit će prazan (nula). Što će nam omogućiti da registrujemo naš okidač. U triggerType označavamo da se okidač poziva PRIJE operacije objavljivanja i utječe samo na korisnike. Naravno, dozvoljavamo administratorima sistema da objave sve. U triggerOptions detaljno opisujemo operacije za koje će se okidač aktivirati.
A glavna stvar je povratak {exitState = “CANCEL”}, zbog čega je okidač razvijen. Vratiće grešku kada korisnik pokuša da podeli svoju sliku na kontrolnoj tabli.
U FCO arhitekturi, svaki objekat (disk, server, slika, mreža, mrežni adapter, itd.) je predstavljen kao Resursni entitet, koji ima zajedničke parametre:
- UUID resursa
- naziv resursa
- tip resursa
- UUID vlasnika resursa
- status resursa (aktivan, neaktivan)
- metapodaci resursa
- ključevi resursa
- UUID proizvoda koji posjeduje resurs
- resurs VDC
Ovo je vrlo zgodno kada radite koristeći API, kada svi resursi rade po istom principu. Proizvode konfiguriše dobavljač, a naručuje klijent. S obzirom da je naš obračun sa strane, klijent može slobodno naručiti bilo koji proizvod sa panela. Obračunat će se kasnije u obračunu. Proizvod može biti IP adresa po satu, dodatni GB diska po satu ili samo server.
Ključevi se mogu koristiti za označavanje određenih resursa kako bi se promijenila logika rada s njima. Na primjer, možemo označiti tri fizička čvora pomoću Weight ključa, a neke klijente označiti istim ključem, a na taj način dodijeliti te čvorove lično tim klijentima. Ovaj mehanizam koristimo za VIP klijente koji ne vole komšije pored svojih VM-ova. Sama funkcionalnost se može koristiti mnogo šire.
Model licenciranja uključuje plaćanje za svaku procesorsku jezgru fizičkog čvora. Na cijenu također utiče broj tipova klastera. Na primjer, ako planirate koristiti KVM i VMware zajedno, cijena licence će se povećati.
FCO je punopravni proizvod, njegova funkcionalnost je vrlo bogata, pa planiramo pripremiti nekoliko članaka odjednom s detaljnim opisom funkcioniranja mrežnog dijela.
Nakon nekoliko godina rada sa ovim orkestratorom, možemo ga označiti kao veoma pogodnog. Nažalost, proizvod nije bez nedostataka:
- morali smo optimizirati bazu podataka jer su upiti počeli usporavati kako se količina podataka u njima povećavala;
- nakon jedne nesreće, mehanizam za oporavak nije radio zbog greške i morali smo oporaviti automobile nesretnih klijenata koristeći vlastiti set skripti;
- Mehanizam za otkrivanje nedostupnosti čvora je ugrađen u kod i ne može se prilagoditi. To jest, ne možemo kreirati vlastite politike za utvrđivanje nedostupnosti čvora.
- evidentiranje nije uvijek detaljno. Ponekad, kada morate da se spustite na veoma nizak nivo da biste razumeli određeni problem, nemate dovoljno izvornog koda za neke komponente da biste razumeli zašto;
UKUPNO: Općenito, utisci o proizvodu su dobri. U stalnom smo kontaktu sa programerima orkestratora. Momci su raspoloženi za konstruktivnu saradnju.
Uprkos svojoj jednostavnosti, FCO ima široku funkcionalnost. U budućim člancima planiramo dublje proći kroz sljedeće teme:
- umrežavanje u FCO
- pružanje oporavka uživo i FQP protokola
- pisanje vlastitih dodataka i widgeta
- povezivanje dodatnih usluga kao što su Load Balancer i Acronis
- backup
- jedinstveni mehanizam za konfigurisanje i konfigurisanje čvorova
- obrada metapodataka virtuelne mašine
ZY Pišite u komentarima ako vas zanimaju drugi aspekti. Stay tuned!
izvor: www.habr.com