
For Ä tilby IaaS-tjenester (Virtual Data Center) mÄ vi vi bruker en kommersiell orkestrator (FCO). Denne lÞsningen har en ganske unik arkitektur, som skiller den fra Openstack og CloudStack, kjent for allmennheten.
KVM, VmWare, Xen, Virtuozzo6/7, samt beholdere fra samme Virtuozzo stĂžttes som beregningsnodehypervisorer. StĂžttede lagringsalternativer inkluderer lokal, NFS, Ceph og Virtuozzo Storage.
FCO stĂžtter oppretting og administrasjon av flere klynger fra ett enkelt grensesnitt. Det vil si at du kan administrere en Virtuozzo-klynge og en KVM + Ceph-klynge ved Ă„ bytte mellom dem med et museklikk.
I kjernen er FCO en helhetlig lÞsning for skyleverandÞrer, som i tillegg til orkestrering ogsÄ inkluderer fakturering, med alle innstillinger, betalingsplugins, fakturaer, varsler, forhandlere, tariffer og sÄ videre. Faktureringsdelen er imidlertid ikke i stand til Ä dekke alle russiske nyanser, sÄ vi forlot bruken til fordel for en annen lÞsning.
Jeg er veldig fornĂžyd med det fleksible systemet for Ă„ distribuere rettigheter til alle skyressurser: bilder, disker, produkter, servere, brannmurer - alt dette kan "deles" og gis rettigheter mellom brukere, og til og med mellom brukere av forskjellige klienter. Hver klient kan opprette flere uavhengige datasentre i skyen sin og administrere dem fra ett enkelt kontrollpanel.

Arkitektonisk bestÄr FCO av flere deler, som hver har sin egen uavhengige kode, og noen har sin egen database.
Skyline â admin og brukergrensesnitt
Jade â forretningslogikk, fakturering, oppgavehĂ„ndtering
Tigerlily â tjenestekoordinator, styrer og koordinerer informasjonsutveksling mellom forretningslogikk og klynger.
XVPManager â styring av klyngeelementer: noder, lagring, nettverk og virtuelle maskiner.
XVPAgent â en agent installert pĂ„ noder for Ă„ samhandle med XVPManager

Vi planlegger Ă„ inkludere en detaljert historie om arkitekturen til hver komponent i en serie artikler, hvis emnet selvfĂžlgelig vekker interesse.
FCOs hovedfordel stammer fra dens bruksklare natur. Den tilbyr enkelhet og minimalisme. Ăn enkelt virtuell maskin er allokert til kontrollnoden. Ubuntu, hvor alle nĂždvendige pakker er installert. Alle innstillinger lagres i konfigurasjonsfiler som variabelverdisetninger:
# 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"
âŠ
Hele konfigurasjonen blir fĂžrst redigert i maler, deretter startes generatoren
#build-config som vil generere en vars-fil og kommandere tjenestene til Ä lese konfigurasjonen pÄ nytt. Brukergrensesnittet er fint og kan enkelt merkes.

Som du kan se, bestÄr grensesnittet av widgets som kan kontrolleres av brukeren. Han kan enkelt legge til/fjerne widgets fra siden, og dermed lage dashbordet han trenger.
Til tross for sin lukkede natur, er FCO et svĂŠrt tilpassbart system. Den har et stort antall innstillinger og inngangspunkter for Ă„ endre arbeidsflyten:
- Tilpassede plugins stĂžttes, for eksempel kan du skrive din egen faktureringsmetode eller din egen eksterne ressurs for Ă„ gi brukeren
- Egendefinerte utlÞsere for visse hendelser stÞttes, for eksempel Ä legge til den fÞrste virtuelle maskinen til en klient nÄr den opprettes
- Egendefinerte widgets i grensesnittet stĂžttes, for eksempel ved Ă„ bygge inn en YouTube-video direkte i brukergrensesnittet.
All tilpasning er skrevet i FDL, som er basert pÄ Lua. Hvis du kjenner Lua, vil det ikke vÊre noen problemer med FDL.
Her er et eksempel pÄ en av de enkleste triggerne vi bruker. Denne utlÞseren tillater ikke brukere Ä dele sine egne bilder med andre klienter. Vi gjÞr dette for Ä hindre en bruker i Ä lage et ondsinnet bilde for andre brukere.
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
Registerfunksjonen kalles opp av FCO-kjernen. Det vil returnere navnet pĂ„ funksjonen som skal kalles. "p"-parameteren til denne funksjonen lagrer anropskonteksten, og fĂžrste gang den kalles opp vil den vĂŠre tom (null). Som vil tillate oss Ă„ registrere triggeren vĂ„r. I triggerType indikerer vi at triggeren pĂ„kalles FĂR publiseringsoperasjonen, og kun pĂ„virker brukere. SelvfĂžlgelig lar vi systemadministratorer publisere alt. I triggerOptions beskriver vi operasjonene som utlĂžseren vil utlĂžses for.
Og det viktigste er retur {exitState = âCANCELâ}, som er grunnen til at triggeren ble utviklet. Det vil returnere feil nĂ„r brukeren prĂžver Ă„ dele bildet sitt i kontrollpanelet.
I FCO-arkitekturen er ethvert objekt (disk, server, bilde, nettverk, nettverksadapter, etc.) representert som en ressursenhet, som har vanlige parametere:
- Ressurs UUID
- ressursnavn
- ressurstype
- Ressurseier UUID
- ressursstatus (aktiv, inaktiv)
- ressursmetadata
- ressursnĂžkler
- UUID for produktet som eier ressursen
- ressurs VDC
Dette er veldig praktisk nÄr du arbeider med en API, nÄr alle ressurser jobbes etter samme prinsipp. Produktene konfigureres av leverandÞren og bestilles av kunden. Siden vÄr fakturering er pÄ siden, kan kunden fritt bestille ethvert produkt fra panelet. Det vil bli beregnet senere i faktureringen. Produktet kan vÊre en IP-adresse per time, en ekstra GB disk per time, eller bare en server.
NĂžkler kan brukes til Ă„ merke visse ressurser for Ă„ endre logikken i arbeidet med dem. For eksempel kan vi merke tre fysiske noder med vektnĂžkkelen, og merke noen klienter med samme nĂžkkel, og dermed allokere disse nodene personlig til disse klientene. Vi bruker denne mekanismen for VIP-klienter som ikke liker naboer ved siden av VM-ene sine. Selve funksjonaliteten kan brukes mye bredere.
Lisensmodellen innebÊrer Ä betale for hver prosessorkjerne i en fysisk node. Kostnaden pÄvirkes ogsÄ av antall klyngetyper. Hvis du planlegger Ä bruke KVM og VMware sammen, for eksempel, vil kostnaden for lisensen Þke.
FCO er et fullverdig produkt, funksjonaliteten er veldig rik, sÄ vi planlegger Ä forberede flere artikler samtidig med en detaljert beskrivelse av funksjonen til nettverksdelen.
Etter Ä ha jobbet med denne orkestratoren i flere Är, kan vi markere den som svÊrt egnet. Dessverre, produktet er ikke uten feil:
- vi mÄtte optimalisere databasen fordi spÞrringene begynte Ä avta etter hvert som mengden data i dem Þkte;
- etter en ulykke fungerte ikke gjenopprettingsmekanismen pÄ grunn av en feil, og vi mÄtte gjenopprette bilene til uheldige kunder ved Ä bruke vÄrt eget sett med skript;
- Mekanismen for Ä oppdage node utilgjengelighet er koblet inn i koden og kan ikke tilpasses. Det vil si at vi ikke kan lage vÄre egne retningslinjer for Ä fastslÄ utilgjengelighet av en node.
- logging er ikke alltid detaljert. Noen ganger, nÄr du trenger Ä gÄ ned til et veldig lavt nivÄ for Ä forstÄ et bestemt problem, har du ikke nok kildekode til at enkelte komponenter kan forstÄ hvorfor;
TOTAL: Generelt er inntrykkene av produktet gode. Vi er i kontinuerlig kontakt med orkestratorutviklerne. Gutta er innstilt pÄ et konstruktivt samarbeid.
Til tross for sin enkelhet har FCO bred funksjonalitet. I fremtidige artikler planlegger vi Ä gÄ dypere inn i fÞlgende emner:
- nettverk i FCO
- gir live-gjenoppretting og FQP-protokoll
- skrive dine egne plugins og widgets
- kobler til tilleggstjenester som Load Balancer og Acronis
- backup
- enhetlig mekanisme for Ă„ konfigurere og konfigurere noder
- behandle virtuell maskin metadata
ZY Skriv i kommentarfeltet hvis du er interessert i andre aspekter. FĂžlg med!
Kilde: www.habr.com
