V velikih oblačnih sistemih je vprašanje samodejnega uravnoteženja ali izravnave obremenitve računalniških virov še posebej pereče. Tionix (razvijalec in operater storitev v oblaku, del skupine podjetij Rostelecom) je poskrbel tudi za to težavo.
In ker je naša glavna razvojna platforma Openstack in smo, tako kot vsi ljudje, leni, smo se odločili, da izberemo že pripravljen modul, ki je že vključen v platformo. Naša izbira je padla na Watcher, ki smo se ga odločili uporabiti za svoje potrebe.
Najprej si poglejmo izraze in definicije.
Izrazi in opredelitve
Cilj je človeku berljiv, opazljiv in merljiv končni rezultat, ki ga je treba doseči. Za dosego vsakega cilja obstaja ena ali več strategij. Strategija je implementacija algoritma, ki je sposoben najti rešitev za dani cilj.
Akcija je osnovna naloga, ki spremeni trenutno stanje ciljnega upravljanega vira gruče OpenStack, kot so: selitev virtualnega stroja (migracija), spreminjanje stanja napajanja vozlišča (change_node_power_state), spreminjanje stanja storitve nova (change_nova_service_state ), spreminjanje okusa (resize), registracija sporočil NOP (nop), pomanjkanje dejanj za določen čas - premor (mirovanje), prenos diska (volume_migrate).
Akcijski načrt - določen tok dejanj, izvedenih v določenem vrstnem redu za dosego določenega cilja. Akcijski načrt vsebuje tudi izmerjeno globalno uspešnost z nizom kazalnikov uspešnosti. Ob uspešni reviziji Watcher ustvari akcijski načrt, na podlagi katerega uporabljena strategija najde rešitev za dosego cilja. Akcijski načrt je sestavljen iz seznama zaporednih dejanj.
revizija je zahteva za optimizacijo gruče. Optimizacija se izvaja z namenom doseganja enega cilja v danem grozdu. Za vsako uspešno revizijo Watcher ustvari akcijski načrt.
Obseg revizije je nabor virov, znotraj katerih se izvaja revizija (območje(-a) razpoložljivosti, agregatorji vozlišč, posamezna računalniška vozlišča ali vozlišča za shranjevanje itd. Obseg revizije je opredeljen v vsaki predlogi. Če obseg revizije ni določen, se revidira celotna gruča.
Revizijska predloga — shranjen niz nastavitev za zagon revizije. Predloge so potrebne za večkratno izvajanje revizij z istimi nastavitvami. Predloga mora nujno vsebovati namen revizije, če strategije niso navedene, se izberejo najprimernejše obstoječe strategije.
Grozd je zbirka fizičnih strojev, ki zagotavljajo računalniške, pomnilniške in omrežne vire in jih upravlja isto upravljalno vozlišče OpenStack.
Podatkovni model gruče (CDM) je logična predstavitev trenutnega stanja in topologije virov, ki jih upravlja gruča.
Indikator učinkovitosti - indikator, ki kaže, kako se izvaja rešitev, ustvarjena s to strategijo. Kazalniki uspešnosti so specifični za določen cilj in se običajno uporabljajo za izračun globalne učinkovitosti nastalega akcijskega načrta.
Specifikacija učinkovitosti je nabor posebnih lastnosti, povezanih z vsakim ciljem, ki opredeljuje različne kazalnike uspešnosti, ki jih mora doseči strategija za doseganje ustreznega cilja pri svoji rešitvi. Pravzaprav bo vsaka rešitev, ki jo predlaga strategija, pred izračunom globalne učinkovitosti preverjena glede na specifikacijo.
Točkovni mehanizem je izvedljiva datoteka, ki ima dobro definirane vhode, natančno definirane izhode in izvaja povsem matematično nalogo. Na ta način je izračun neodvisen od okolja, v katerem se izvaja – povsod bo dal enak rezultat.
Watcher Planner - del mehanizma odločanja Watcher. Ta modul sprejme nabor dejanj, ki jih ustvari strategija, in ustvari načrt poteka dela, ki določa, kako razporediti ta različna dejanja v času in za vsako dejanje, kakšni so predpogoji.
Cilji in strategije opazovalca
Cilj
strategija
Lažni cilj
Dummy strategija
Navidezna strategija z uporabo vzorčnih mehanizmov za točkovanje
Navidezna strategija s spreminjanjem velikosti
varčevanje z energijo
Strategija varčevanja z energijo
Konsolidacija strežnika
Osnovna konsolidacija strežnika brez povezave
Toplotna optimizacija
Strategija, ki temelji na izhodni temperaturi
Optimizacija pretoka zraka
Enotna strategija migracije zračnega toka
Vzdrževanje strojne opreme
Območna migracija
nerazvrščena
Pogon
Lažni cilj — rezerviran cilj, ki se uporablja za namene testiranja.
Sorodne strategije: navidezna strategija, navidezna strategija z uporabo vzorčnih mehanizmov za točkovanje in navidezna strategija s spreminjanjem velikosti. Navidezna strategija je navidezna strategija, ki se uporablja za integracijsko testiranje prek Tempest. Ta strategija ne zagotavlja nobene uporabne optimizacije, njen edini namen je uporaba testov Tempest.
Dummy strategija z uporabo vzorčnih mehanizmov za točkovanje - strategija je podobna prejšnji, edina razlika je uporaba vzorčnega "mehanizma za točkovanje", ki izvaja izračune z metodami strojnega učenja.
Dummy strategija s spreminjanjem velikosti - strategija je podobna prejšnji, razlika je le v uporabi spreminjanja okusa (migracija in spreminjanje velikosti).
Ni uporabljeno v proizvodnji.
varčevanje z energijo — zmanjšati porabo energije. Strategija varčevanja z energijo tega cilja je skupaj s strategijo konsolidacije delovnih obremenitev VM (konsolidacija strežnikov) zmožna funkcij dinamičnega upravljanja porabe energije (DPM), ki varčujejo z energijo z dinamično konsolidacijo delovnih obremenitev tudi v obdobjih nizke porabe virov: virtualni stroji so premaknjeni na manj vozlišč. , nepotrebna vozlišča pa so onemogočena. Po konsolidaciji strategija ponudi odločitev o vklopu/izklopu vozlišč v skladu z navedenimi parametri: “min_free_hosts_num” - število prostih omogočenih vozlišč, ki čakajo na nalaganje, in “free_used_percent” - odstotek prostih omogočenih gostiteljev do število vozlišč, ki jih zasedajo stroji. Da strategija deluje, mora obstajati omogočeno in konfigurirano Ironic za upravljanje preklapljanja moči na vozliščih.
Parametri strategije
parameter Tip privzeto описание
brezplačno_porabljeno_odstotek
Število
10.0
razmerje med številom prostih računalniških vozlišč in številom računalniških vozlišč z virtualnimi stroji
najmanj_prostih_gostiteljev_num
Int
1
minimalno število prostih računalniških vozlišč
Oblak mora imeti vsaj dve vozlišči. Uporabljena metoda je spreminjanje stanja napajanja vozlišča (change_node_power_state). Strategija ne zahteva zbiranja metrik.
Konsolidacija strežnika - zmanjšajte število računalniških vozlišč (konsolidacija). Ima dve strategiji: Basic Offline Server Consolidation in VM Workload Consolidation Strategy.
Strategija Basic Offline Server Consolidation minimizira skupno število uporabljenih strežnikov in prav tako zmanjša število selitev.
Parametri strategije: migration_attempts – število kombinacij za iskanje potencialnih kandidatov za zaustavitev (privzeto, 0, brez omejitev), period – časovni interval v sekundah za pridobitev statične agregacije iz vira metričnih podatkov (privzeto, 700).
Uporabljene metode: migracija, sprememba stanja storitve nova (change_nova_service_state).
Strategija konsolidacije delovne obremenitve VM temelji na hevristiki prvega prileganja, ki se osredotoča na izmerjeno obremenitev procesorja in poskuša minimizirati vozlišča, ki imajo preveliko ali premajhno obremenitev glede na omejitve zmogljivosti virov. Ta strategija zagotavlja rešitev, ki ima za posledico učinkovitejšo uporabo virov gruče z uporabo naslednjih štirih korakov:
Faza razkladanja - obdelava preveč porabljenih virov;
Faza konsolidacije – ravnanje s premalo izkoriščenimi viri;
Optimizacija rešitve - zmanjšanje števila selitev;
Parametri strategije: obdobje — časovni interval v sekundah za pridobitev statične agregacije iz vira metričnih podatkov (privzeto, 3600).
Uporablja iste metode kot prejšnja strategija. Več podrobnosti tukaj.
Uravnoteženje delovne obremenitve — uravnoteži delovno obremenitev med računalniškimi vozlišči. Cilj ima tri strategije: strategijo migracije ravnovesja delovne obremenitve, stabilizacijo delovne obremenitve, strategijo ravnotežja zmogljivosti shranjevanja.
Strategija selitve ravnovesja delovne obremenitve izvaja selitve navideznega računalnika na podlagi delovne obremenitve gostiteljskega navideznega računalnika. Odločitev o selitvi se sprejme vsakič, ko % izkoriščenosti CPE ali RAM vozlišča preseže podani prag. V tem primeru bi moral premaknjeni virtualni stroj približati vozlišče povprečni delovni obremenitvi vseh vozlišč.
Zahteve
Uporaba fizičnih procesorjev;
vsaj dve fizični računalniški vozlišči;
Nameščena in konfigurirana komponenta Ceilometer - ceilometer-agent-compute, ki se izvaja na vsakem računalniškem vozlišču, in API Ceilometer ter zbiranje naslednjih meritev:
meritve
String
'cpu_util'
Osnovne metrike so: 'cpu_util', 'memory.resident'.
Prag
Število
25.0
Prag delovne obremenitve za selitev.
Obdobje
Število
300
Celometer kumulativnega časovnega obdobja.
Uporabljena metoda je migracija.
Stabilizacija delovne obremenitve je strategija, namenjena stabilizaciji delovne obremenitve s selitvijo v živo. Strategija temelji na algoritmu standardnega odklona in ugotavlja, ali je v gruči prezasedenost, ter se nanjo odzove s sprožitvijo selitve stroja za stabilizacijo gruče.
Zahteve
Uporaba fizičnih procesorjev;
vsaj dve fizični računalniški vozlišči;
Nameščena in konfigurirana komponenta Ceilometer - ceilometer-agent-compute, ki se izvaja na vsakem računalniškem vozlišču, in API Ceilometer ter zbiranje naslednjih meritev:
Storage Capacity Balance Strategy (strategija, ki se izvaja z začetkom Queens) - strategija prenaša diske glede na obremenitev bazenov Cinder. Odločitev o prenosu se sprejme vsakič, ko stopnja uporabe bazena preseže določen prag. Disk, ki se premika, bi moral bazen približati povprečni obremenitvi vseh bazenov Cinder.
Zahteve in omejitve
Najmanj dva bazena Cinder;
Možnost selitve diska.
Podatkovni model gruče – zbiralnik podatkovnih modelov gruče Cinder.
Parametri strategije:
parameter Tip privzeto описание
obseg_prag
Število
80.0
Mejna vrednost diskov za uravnoteženje nosilcev.
Uporabljena metoda je migracija diska (volume_migrate).
Noisy Neighbor – Identificirajte in preselite »noisy Neighbor« – navidezni stroj z nizko prioriteto, ki negativno vpliva na delovanje navideznega stroja z visoko prioriteto v smislu IPC s prekomerno uporabo predpomnilnika zadnje ravni. Lastna strategija: Noisy Neighbor (uporabljeni parameter strategije je cache_threshold (privzeta vrednost je 35), ko zmogljivost pade na podano vrednost, se začne selitev. Da strategija deluje, je omogočeno metrike LLC (predpomnilnik zadnje ravni), najnovejši Intelov strežnik s podporo za CMT, kot tudi zbiranje naslednjih meritev:
Podatkovni model gruče (privzeto): Nova zbirka podatkovnega modela gruče. Uporabljena metoda je migracija.
Delo s tem ciljem prek nadzorne plošče v Queensu ni v celoti implementirano.
Toplotna optimizacija — optimizirajte temperaturni režim. Temperatura izstopnega zraka (izpušnega zraka) je eden od pomembnih toplotnih telemetričnih sistemov za merjenje statusa toplote/delovne obremenitve strežnika. Cilj ima eno strategijo, strategijo, ki temelji na izhodni temperaturi, ki se odloči za selitev delovnih obremenitev na toplotno ugodne gostitelje (najnižja izhodna temperatura), ko izhodna temperatura izvornih gostiteljev doseže nastavljiv prag.
Da bo strategija delovala, potrebujete strežnik z nameščenim in konfiguriranim Intel Power Node Manager 3.0 ali novejši, kot tudi zbiranje naslednjih meritev:
Obdobje
Število
30
Časovni interval v sekundah za pridobitev statističnega združevanja iz vira metričnih podatkov.
Uporabljena metoda je migracija.
Optimizacija pretoka zraka — optimizirajte način prezračevanja. Lastna strategija - Enakomeren pretok zraka z uporabo migracije v živo. Strategija sproži selitev navideznega stroja vsakič, ko pretok zraka iz strežniškega ventilatorja preseže določen prag.
Ceilometer-agent-compute in Ceilometer API komponenta sta nameščena in konfigurirana na vsakem računalniškem vozlišču, ki lahko uspešno poroča o meritvah, kot so pretok zraka, sistemska moč, vstopna temperatura:
Da bo strategija delovala, potrebujete strežnik z nameščenim in konfiguriranim Intel Power Node Manager 3.0 ali novejšim.
Omejitve: Koncept ni namenjen produkciji.
Predlaga se uporaba tega algoritma z neprekinjenimi revizijami, saj je predvidena selitev samo enega virtualnega stroja na iteracijo.
Možne so žive selitve.
Parametri strategije:
parameter Tip privzeto описание
threshold_airflow
Število
400.0
Prag pretoka zraka za migracijsko enoto je 0.1 CFM
threshold_inlet_t
Število
28.0
Mejna vrednost vstopne temperature za odločitev o migraciji
prag_moči
Število
350.0
Prag sistemske moči za odločitev o selitvi
Obdobje
Število
30
Časovni interval v sekundah za pridobitev statističnega združevanja iz vira metričnih podatkov.
Uporabljena metoda je migracija.
Vzdrževanje strojne opreme — vzdrževanje strojne opreme. Strategija, povezana s tem ciljem, je conska migracija. Strategija je orodje za učinkovito samodejno in minimalno selitev virtualnih strojev in diskov v primeru potrebe po vzdrževanju strojne opreme. Strategija gradi akcijski načrt v skladu z utežmi: nabor akcij, ki ima večjo težo, bo načrtovan pred drugimi. Obstajata dve konfiguracijski možnosti: action_weights in paralelizacija.
Omejitve: konfigurirati je treba uteži dejanj in paralelizacijo.
Parametri strategije:
parameter Tip privzeto описание
compute_nodes
matrika
Noben
Računalniška vozlišča za selitev.
skladiščni_bazeni
matrika
Noben
Shranjevalna vozlišča za selitev.
paralelno_skupaj
celo
6
Skupno število dejavnosti, ki jih je treba izvajati vzporedno.
vzporedno_na_vozlišče
celo
2
Število dejanj, izvedenih vzporedno za vsako računalniško vozlišče.
paralelno_na_zbirko
celo
2
Število dejanj, izvedenih vzporedno za vsako pomnilniško področje.
prednostna naloga
predmet
Noben
Prioritetni seznam za virtualne stroje in diske.
s_priloženim_zvezkom
boolean
False
False—navidezni stroji bodo preseljeni, ko bodo preseljeni vsi diski. Res je – virtualni stroji bodo preseljeni, ko bodo preseljeni vsi povezani diski.
Elementi niza računalniških vozlišč:
parameter Tip privzeto описание
src_node
niz
Noben
Računalniško vozlišče, iz katerega se selijo virtualni stroji (obvezno).
dst_node
niz
Noben
Izračunajte vozlišče, v katerega se selijo virtualni stroji.
Elementi niza vozlišč za shranjevanje:
parameter Tip privzeto описание
src_pool
niz
Noben
Pomnilniško področje, iz katerega se preseljujejo diski (obvezno).
dst_pool
niz
Noben
Pomnilniško področje, v katerega so diski preseljeni.
src_type
niz
Noben
Originalni tip diska (obvezno).
dst_type
niz
Noben
Nastala vrsta diska (obvezno).
Prednostni elementi objekta:
parameter Tip privzeto описание
Projekt
matrika
Noben
Imena projektov.
compute_node
matrika
Noben
Izračunajte imena vozlišč.
skladiščni_pool
matrika
Noben
Imena pomnilniških bazenov.
shranjevanje
naštej
Noben
Parametri diska [»size«, »created_at«].
Uporabljene metode so migracija virtualnega stroja, migracija diska.
nerazvrščena - pomožni cilj, ki se uporablja za olajšanje procesa razvoja strategije. Ne vsebuje specifikacij in se lahko uporablja, kadar strategija še ni povezana z obstoječim ciljem. Ta cilj lahko uporabite tudi kot prehodno točko. S tem ciljem povezana strategija je Actuator.
Ustvarjanje novega cilja
Watcher Decision Engine ima vmesnik vtičnika »zunanji cilj«, ki omogoča integracijo zunanjega cilja, ki ga je mogoče doseči s strategijo.
Preden ustvarite nov cilj, se prepričajte, da noben obstoječi cilj ne ustreza vašim potrebam.
Ustvarjanje novega vtičnika
Če želite ustvariti nov cilj, morate: razširiti ciljni razred, implementirati metodo razreda get_name() da vrnete enolični ID novega cilja, ki ga želite ustvariti. Ta enolični identifikator se mora ujemati z imenom vstopne točke, ki ga navedete pozneje.
Nato morate implementirati metodo razreda get_display_name() da vrnete prevedeno prikazano ime cilja, ki ga želite ustvariti (ne uporabljajte spremenljivke za vrnitev prevedenega niza, da ga lahko orodje za prevajanje samodejno zbere.).
Izvedite metodo razreda get_translatable_display_name()da vrnete prevodni ključ (pravzaprav angleško prikazno ime) vašega novega cilja. Vrnjena vrednost se mora ujemati z nizom, prevedenim v get_display_name().
Izvedite njegovo metodo get_efficacy_specification()da vrnete specifikacijo učinkovitosti za vaš cilj. Metoda get_efficacy_specification() vrne primerek Unclassified(), ki ga zagotovi Watcher. Ta specifikacija uspešnosti je uporabna v procesu razvoja vašega cilja, ker ustreza prazni specifikaciji.
API opazovalca - komponenta, ki implementira REST API, ki ga ponuja Watcher. Mehanizmi interakcije: CLI, Horizon plugin, Python SDK.
DB opazovalca — Baza podatkov opazovalcev.
Watcher Applier — komponenta, ki izvaja izvedbo akcijskega načrta, ustvarjenega s komponento Watcher Decision Engine.
Watcher Decision Engine - Komponenta, ki je odgovorna za izračun nabora možnih optimizacijskih dejanj za dosego revizijskega cilja. Če strategija ni določena, komponenta samostojno izbere najprimernejšo.
Watcher Metrics Publisher - Komponenta, ki zbira in izračuna nekatere metrike ali dogodke ter jih objavi na končni točki CEP. Funkcionalnost komponente lahko zagotovi tudi založba Ceilometer.
Motor za obdelavo kompleksnih dogodkov (CEP). — motor za kompleksno obdelavo dogodkov. Zaradi zmogljivosti se lahko sočasno izvaja več primerkov CEP Engine, od katerih vsaka obdeluje določeno vrsto metrike/dogodka. V sistemu Watcher CEP sproži dve vrsti akcij: - zabeleži ustrezne dogodke/metrike v bazo časovnih vrst; - pošiljanje ustreznih dogodkov v Watcher Decision Engine, ko lahko ta dogodek vpliva na rezultat trenutne strategije optimizacije, saj gruča Openstack ni statičen sistem.
Komponente medsebojno delujejo z uporabo protokola AMQP.
Na strani Optimization - Action plans 500 (tako na čistem Queenu kot na stojalu z moduli Tionix) se pojavi šele po zagonu revizije in generiranju akcijskega načrta, prazen se odpre normalno.
Na zavihku Action details so napake, revizijskega cilja in strategije ni mogoče dobiti (tako na čistem Queenu kot na stojalu z moduli Tionix).
Revizije z namenom Dummy (test) se kreirajo in zaženejo normalno, akcijski načrti se generirajo.
Revizije za Nerazvrščeni cilj se ne izdelajo, ker cilj ni funkcionalen in je namenjen vmesni konfiguraciji pri ustvarjanju novih strategij.
Revizije za namene uravnoteženja delovne obremenitve (strategija uravnoteženja pomnilniške zmogljivosti) so uspešno ustvarjene, vendar akcijski načrt ni ustvarjen. Optimizacija skladiščnega prostora ni potrebna.
Revizije za cilj uravnoteženja delovne obremenitve (strategija migracije ravnotežja delovne obremenitve) so uspešno ustvarjene, vendar akcijski načrt ni ustvarjen.
Revizije za uravnoteženje delovne obremenitve (strategija stabilizacije delovne obremenitve) niso uspele.
Revizije za cilj Noisy Neighbor so uspešno ustvarjene, vendar akcijski načrt ni ustvarjen.
Revizije za namene vzdrževanja strojne opreme so uspešno izdelane, akcijski načrt ni generiran v celoti (indikatorji uspešnosti so generirani, ni pa generiran sam seznam dejanj).
Urejanja v konfiguracijah nova.conf (v privzetem razdelku compute_monitors = cpu.virt_driver) na računskih in nadzornih vozliščih ne popravijo napak.
Revizije, ki ciljajo na konsolidacijo strežnikov (osnovna strategija), prav tako ne uspejo.
Revizije za namen konsolidacije strežnika (strategija konsolidacije delovne obremenitve VM) ne uspejo z napako. V dnevnikih je prišlo do napake pri pridobivanju izvornih podatkov. Predvsem razprava o napaki tukaj.
V konfiguracijski datoteki smo poskušali določiti Watcher (ni pomagalo - zaradi napake na vseh straneh za optimizacijo vrnitev na izvirno vsebino konfiguracijske datoteke ne popravi situacije):
[watcher_strategies.basic] vir podatkov = merilec, njoki
Revizije za varčevanje z energijo niso uspele. Po logih sodeč je problem še vedno v odsotnosti ironika, brez baremetal servisa ne bo šlo.
Revizije za toplotno optimizacijo niso uspele. Sledenje nazaj je enako kot za konsolidacijo strežnika (strategija konsolidacije delovne obremenitve VM) (napaka izvornih podatkov)
Revizije za namene optimizacije pretoka zraka ne uspejo z napako.
Pojavijo se tudi naslednje napake pri dokončanju revizije. Povratno sledenje v dnevnikih odločitev-engine.log (stanje gruče ni definirano).
Rezultat naše dvomesečne raziskave je bil nedvoumen zaključek, da bomo morali za pridobitev polnopravnega, delujočega sistema za uravnoteženje obremenitve v tem delu tesno sodelovati pri izpopolnjevanju orodij za platformo Openstack.
Watcher se je izkazal za resen in hitro razvijajoč se izdelek z ogromnim potencialom, katerega polna izraba bo zahtevala veliko resnega dela.