Suurtes pilvesüsteemides on arvutiressursside koormuse automaatse tasakaalustamise või tasandamise küsimus eriti terav. Selle probleemi eest on hoolitsenud ka Tionix (pilveteenuste arendaja ja operaator, mis kuulub Rostelecomi kontserni).
Ja kuna meie peamine arendusplatvorm on Openstack ja meie, nagu kõik inimesed, oleme laisad, otsustati valida mõni valmis moodul, mis on platvormil juba olemas. Meie valik langes Watcherile, mida otsustasime oma vajaduste jaoks kasutada.
Esiteks vaatame termineid ja määratlusi.
Tingimused ja määratlused
Eesmärk on inimesele loetav, jälgitav ja mõõdetav lõpptulemus, mis tuleb saavutada. Iga eesmärgi saavutamiseks on üks või mitu strateegiat. Strateegia on algoritmi rakendamine, mis on võimeline leidma lahenduse antud eesmärgile.
Tegevus on elementaarne ülesanne, mis muudab OpenStacki klastri hallatava sihtressursi hetkeolekut, näiteks: virtuaalmasina migreerimine (migreerimine), sõlme toiteoleku muutmine (change_node_power_state), nova teenuse oleku muutmine (change_nova_service_state). ), maitse muutmine (suuruse muutmine), NOP-teadete registreerimine (nop), tegevusetus teatud aja jooksul - paus (unerežiim), ketta edastamine (volume_migrate).
Tegevuskava - konkreetne tegevuste voog, mis viiakse läbi kindlas järjekorras konkreetse eesmärgi saavutamiseks. Tegevuskava sisaldab ka mõõdetud ülemaailmset tulemuslikkust koos tulemusnäitajate kogumiga. Eduka auditi järel koostab Watcher tegevuskava, mille tulemusena leiab kasutatav strateegia eesmärgi saavutamiseks lahenduse. Tegevuskava koosneb järjestikuste toimingute loendist.
Audit on klastri optimeerimise taotlus. Optimeerimine viiakse läbi ühe eesmärgi saavutamiseks antud klastris. Iga eduka auditi jaoks koostab Watcher tegevuskava.
Auditi ulatus on ressursside kogum, mille raames auditit tehakse (kättesaadavuse tsoon(id), sõlmede agregaatorid, üksikud arvutussõlmed või salvestussõlmed jne). Auditi ulatus on määratletud igas mallis. Kui auditi ulatust pole määratud, auditeeritakse kogu klastrit.
Auditi mall — salvestatud seadistuste komplekt auditi käivitamiseks. Malle on vaja, et samade seadetega auditeid käitada mitu korda. Mall peab tingimata sisaldama auditi eesmärki, kui strateegiaid ei täpsustata, siis valitakse välja sobivaimad olemasolevad strateegiad.
Klaster on füüsiliste masinate kogum, mis pakuvad arvutus-, salvestus- ja võrguressursse ning mida haldab sama OpenStacki haldussõlm.
Klastri andmemudel (CDM) on klastri hallatavate ressursside hetkeseisu ja topoloogia loogiline esitus.
Tõhususe indikaator - indikaator, mis näitab, kuidas selle strateegia abil loodud lahendust teostatakse. Tulemusnäitajad on konkreetse eesmärgi jaoks spetsiifilised ja neid kasutatakse tavaliselt sellest tuleneva tegevuskava globaalse tõhususe arvutamiseks.
Tõhususe spetsifikatsioon on iga eesmärgiga seotud spetsiifiliste funktsioonide kogum, mis määratleb erinevad tulemusnäitajad, mida vastava eesmärgi saavutamise strateegia peab oma lahenduses saavutama. Tõepoolest, iga strateegias pakutud lahendust kontrollitakse enne selle globaalse tõhususe arvutamist spetsifikatsiooniga.
Hindamismootor on käivitatav fail, millel on täpselt määratletud sisendid, täpselt määratletud väljundid ja mis täidab puhtalt matemaatilist ülesannet. Nii ei sõltu arvutus keskkonnast, kus seda tehakse – see annab kõikjal sama tulemuse.
Jälgija planeerija - osa Watcheri otsustusmootorist. See moodul võtab strateegia poolt genereeritud tegevuste komplekti ja loob töövooplaani, mis määratleb, kuidas neid erinevaid toiminguid ajastada ja iga tegevuse jaoks, millised on eeldused.
Vaatleja eesmärgid ja strateegiad
Eesmärk
strateegia
Tubli värav
Näiv strateegia
Näidisstrateegia, kasutades näidissüsteeme
Näiv strateegia suuruse muutmisega
Energia säästmine
Energiasäästu strateegia
Serveri konsolideerimine
Põhiline võrguühenduseta serverite konsolideerimine
VM-i töökoormuse konsolideerimise strateegia
Töökoormuse tasakaalustamine
Töökoormuse tasakaalu rändestrateegia
Salvestusmahtude tasakaalu strateegia
Töökoormuse stabiliseerimine
Lärmakas naaber
Lärmakas naaber
Termiline optimeerimine
Väljalasketemperatuuril põhinev strateegia
Tubli värav — reserveeritud eesmärk, mida kasutatakse testimise eesmärgil.
Seotud strateegiad: näiv strateegia, näidisstrateegia, kasutades näidissüsteeme ja näidisstrateegia koos suuruse muutmisega. Näivstrateegia on näiv strateegia, mida kasutatakse integratsiooni testimiseks Tempesti kaudu. See strateegia ei paku kasulikku optimeerimist, selle ainus eesmärk on kasutada Tempesti teste.
Näidisstrateegia hindamismootorite näidisega - strateegia sarnaneb eelmisele, ainsaks erinevuseks on näidise “hindamismootori” kasutamine, mis teeb arvutusi masinõppemeetodite abil.
Näiv strateegia suuruse muutmisega - strateegia sarnaneb eelmisele, ainsaks erinevuseks on maitse muutmise kasutamine (migratsioon ja suuruse muutmine).
Tootmises ei kasutata.
Energia säästmine — minimeerida energiatarbimist. Selle eesmärgi energiasäästustrateegia koos VM-i töökoormuse konsolideerimise strateegiaga (serveri konsolideerimine) on võimeline kasutama dünaamilise toitehalduse (DPM) funktsioone, mis säästavad energiat, koondades töökoormust dünaamiliselt isegi madala ressursikasutuse perioodidel: virtuaalseid masinaid liigutatakse vähematesse sõlmedesse. , ja mittevajalikud sõlmed on keelatud. Pärast konsolideerimist pakub strateegia otsust sõlmede sisse/välja lülitamise kohta vastavalt määratud parameetritele: "min_free_hosts_num" - vabade lubatud sõlmede arv, mis ootavad laadimist, ja "free_used_percent" - tasuta lubatud hostide protsent. sõlmede arv, mis on masinate poolt hõivatud. Et strateegia toimiks, peab see olema lubatud ja konfigureeritud Ironic, et käsitleda sõlmede toitetsüklit.
Strateegia parameetrid
parameeter Tüüp vaikimisi описание
tasuta_kasutatud_protsent
Number
10.0
vabade andmetöötlussõlmede ja virtuaalmasinatega arvutussõlmede arvu suhe
min_free_hosts_num
Int
1
tasuta arvutussõlmede minimaalne arv
Pilvel peab olema vähemalt kaks sõlme. Kasutatav meetod on sõlme toiteoleku muutmine (change_node_power_state). Strateegia ei nõua mõõdikute kogumist.
Serveri konsolideerimine – minimeerige arvutussõlmede arv (konsolideerimine). Sellel on kaks strateegiat: põhiline võrguühenduseta serverite konsolideerimise strateegia ja VM-i töökoormuse konsolideerimise strateegia.
Põhiline võrguühenduseta serverite konsolideerimise strateegia minimeerib kasutatavate serverite koguarvu ja vähendab ka migratsioonide arvu.
Strateegia parameetrid: migration_attempts – kombinatsioonide arv potentsiaalsete sulgemiskandidaatide otsimiseks (vaikimisi, 0, piiranguteta), periood – ajavahemik sekundites staatilise koondamise saamiseks meetrika andmeallikast (vaikimisi 700).
Kasutatavad meetodid: migratsioon, nova teenuse oleku muutmine (change_nova_service_state).
VM-i töökoormuse konsolideerimise strateegia põhineb esmakordsel heuristikul, mis keskendub mõõdetud protsessori koormusele ja püüab minimeerida sõlme, millel on ressursi mahupiiranguid arvestades liiga palju või liiga vähe koormust. See strateegia pakub lahendust, mille tulemuseks on klastri ressursside tõhusam kasutamine, kasutades järgmist nelja sammu.
Strateegia parameetrid: periood – ajavahemik sekundites staatilise koondamise saamiseks mõõdiku andmeallikast (vaikeseade, 3600).
Kasutab samu meetodeid nagu eelmine strateegia. Rohkem detaile siin.
Töökoormuse tasakaalustamine — tasakaalustada töökoormust andmetöötlussõlmede vahel. Eesmärgil on kolm strateegiat: töökoormuse tasakaalu migratsioonistrateegia, töökoormuse stabiliseerimine, salvestusmahu tasakaalu strateegia.
Töökoormuse tasakaalu migratsioonistrateegia käivitab virtuaalmasinate migratsioonid hosti virtuaalmasina töökoormuse alusel. Migratsiooniotsus tehakse alati, kui sõlme CPU või RAM-i kasutamise % ületab määratud läve. Sel juhul peaks teisaldatud virtuaalmasin viima sõlme lähemale kõigi sõlmede keskmisele töökoormusele.
Nõuded
Füüsiliste protsessorite kasutamine;
Vähemalt kaks füüsilist andmetöötlussõlme;
Installitud ja konfigureeritud Ceilometer komponent – ceilometer-agent-compute, mis töötab igas arvutussõlmes, ja Ceilomeetri API, samuti koguti järgmised mõõdikud:
meetrika
nöör
'cpu_util'
Aluseks olevad mõõdikud on: 'cpu_util', 'memory.resident'.
künnis
Number
25.0
Migratsiooni töökoormuse lävi.
periood
Number
300
Kumulatiivne ajaperiood Ceilometer.
Kasutatav meetod on migratsioon.
Töökoormuse stabiliseerimine on strateegia, mille eesmärk on töökoormuse stabiliseerimine reaalajas migratsiooni abil. Strateegia põhineb standardhälbe algoritmil ja määrab, kas klastris on ummikuid, ning reageerib sellele masina migratsiooni käivitamisega, et klastrit stabiliseerida.
Nõuded
Füüsiliste protsessorite kasutamine;
Vähemalt kaks füüsilist andmetöötlussõlme;
Installitud ja konfigureeritud Ceilometer komponent – ceilometer-agent-compute, mis töötab igas arvutussõlmes, ja Ceilomeetri API, samuti koguti järgmised mõõdikud:
helitugevuse_lävi
Number
80.0
Ketaste läviväärtus mahtude tasakaalustamiseks.
Kasutatud meetod on ketta migreerimine (volume_migrate).
Mürakas naaber – tuvastage ja viige üle mürarikas naaber – madala prioriteediga virtuaalmasin, mis mõjutab negatiivselt kõrge prioriteediga virtuaalmasina jõudlust IPC osas, kuna kasutab viimase taseme vahemälu üle. Oma strateegia: mürarikas naaber (strateegia parameetriks on cache_threshold (vaikeväärtus on 35), kui jõudlus langeb määratud väärtuseni, alustatakse migreerimist. Strateegia toimimiseks on lubatud LLC (viimase taseme vahemälu) mõõdikud, uusim CMT toega Inteli server, samuti järgmiste mõõdikute kogumine:
Klastri andmemudel (vaikimisi): Nova klastri andmemudelite koguja. Kasutatav meetod on migratsioon.
Selle eesmärgiga töötamine juhtpaneeli kaudu ei ole Queensis täielikult rakendatud.
Termiline optimeerimine — optimeerida temperatuurirežiimi. Väljalaske (väljatõmbeõhu) temperatuur on üks olulisi termilise telemeetria süsteeme serveri termilise/töökoormuse oleku mõõtmiseks. Sihtmärgil on üks strateegia, väljalasketemperatuuril põhinev strateegia, mis otsustab viia töökoormused üle termiliselt soodsatele hostidele (madalaim väljalasketemperatuur), kui lähtehostide väljalasketemperatuur jõuab konfigureeritavasse läve.
Strateegia toimimiseks vajate serverit, kuhu on installitud ja konfigureeritud Intel Power Node Manager 3.0 või hiljem, samuti järgmiste mõõdikute kogumine:
periood
Number
30
Ajavahemik sekundites, mis kulub mõõdiku andmeallikast statistilise koondtulemuse saamiseks.
Kasutatav meetod on migratsioon.
Õhuvoolu optimeerimine — optimeerida ventilatsioonirežiimi. Oma strateegia – ühtne õhuvool reaalajas migratsiooni abil. Strateegia käivitab virtuaalmasina migratsiooni alati, kui serveri ventilaatori õhuvool ületab määratud läve.
Igasse arvutussõlme on installitud ja konfigureeritud tseilomeeter-agendi arvutamine ja tseilomeeter API komponent, mis suudab edukalt esitada selliseid mõõdikuid nagu õhuvool, süsteemi võimsus, sisselasketemperatuur:
Strateegia toimimiseks vajate serverit, kuhu on installitud ja konfigureeritud Intel Power Node Manager 3.0 või uuem versioon.
Piirangud: kontseptsioon ei ole mõeldud tootmiseks.
Seda algoritmi soovitatakse kasutada pidevate audititega, kuna iga iteratsiooni kohta on plaanis migreerida ainult üks virtuaalmasin.
Võimalikud on reaalajas migratsioonid.
Strateegia parameetrid:
parameeter Tüüp vaikimisi описание
lävi_õhuvool
Number
400.0
Õhuvoolu lävi migratsiooniühiku jaoks on 0.1CFM
lävi_sisselaske_t
Number
28.0
Sisselasketemperatuuri lävi migratsiooniotsuse tegemiseks
lävi_võimsus
Number
350.0
Süsteemi võimsuse lävi migratsiooniotsuse tegemiseks
periood
Number
30
Ajavahemik sekundites, mis kulub mõõdiku andmeallikast statistilise koondtulemuse saamiseks.
Kasutatav meetod on migratsioon.
Riistvara hooldus — riistvara hooldus. Selle eesmärgiga seotud strateegia on Zone migration. Strateegia on tööriist virtuaalmasinate ja ketaste tõhusaks automaatseks ja minimaalseks migreerimiseks riistvarahoolduse vajaduse korral. Strateegia koostab tegevusplaani vastavalt kaaludele: tegevuste komplekt, millel on suurem kaal, planeeritakse enne teisi. Konfiguratsioonivalikuid on kaks: action_weights ja paralleliseerimine.
Piirangud: toimingute kaalud ja paralleelsus tuleb konfigureerida.
Strateegia parameetrid:
parameeter Tüüp vaikimisi описание
arvuta_sõlmed
massiivi
mitte ükski
Arvutage migratsiooni sõlmed.
ladustamisbasseinid
massiivi
mitte ükski
Salvestussõlmed migreerimiseks.
paralleel_summa
täisarv
6
Paralleelselt sooritatavate tegevuste koguarv.
parallel_per_node
täisarv
2
Iga arvutussõlme jaoks paralleelselt tehtud toimingute arv.
parallel_per_pool
täisarv
2
Iga salvestuskogumi jaoks paralleelselt tehtud toimingute arv.
prioriteet
objekt
mitte ükski
Virtuaalsete masinate ja ketaste prioriteetide loend.
koos_attached_volume
loogiline
Vale
Vale – virtuaalsed masinad migreeritakse pärast kõigi ketaste migreerimist. Tõsi – virtuaalsed masinad migreeritakse pärast kõigi ühendatud ketaste migreerimist.
Arvutussõlmede massiivi elemendid:
parameeter Tüüp vaikimisi описание
src_node
nöör
mitte ükski
Arvutussõlm, kust virtuaalmasinaid migreeritakse (nõutav).
dst_node
nöör
mitte ükski
Arvutage sõlm, kuhu virtuaalsed masinad migreeruvad.
Salvestussõlme massiivi elemendid:
parameeter Tüüp vaikimisi описание
src_pool
nöör
mitte ükski
Salvestuskogum, kust kettaid migreeritakse (nõutav).
dst_pool
nöör
mitte ükski
Salvestuskogum, kuhu kettad migreeritakse.
src_type
nöör
mitte ükski
Algne ketta tüüp (nõutav).
dst_type
nöör
mitte ükski
Saadud kettatüüp (nõutav).
Objekti prioriteetsed elemendid:
parameeter Tüüp vaikimisi описание
projekt
massiivi
mitte ükski
Projektide nimed.
arvutussõlm
massiivi
mitte ükski
Arvutage sõlmede nimed.
storage_pool
massiivi
mitte ükski
Salvestusbasseinide nimed.
arvutama
loend
mitte ükski
Virtuaalmasina parameetrid ["vcpu_num", "mem_size", "disk_size", "created_at"].
ladustamine
loend
mitte ükski
Ketta parameetrid ["size", "created_at"].
Kasutatavad meetodid on virtuaalse masina migratsioon, ketta migreerimine.
Unclassified - abieesmärk, mida kasutatakse strateegia väljatöötamise protsessi hõlbustamiseks. Ei sisalda spetsifikatsioone ja seda saab kasutada alati, kui strateegia ei ole veel seotud olemasoleva eesmärgiga. Seda eesmärki saab kasutada ka üleminekupunktina. Selle eesmärgiga seotud strateegia on täitur.
Uue eesmärgi loomine
Vaataja otsustusmootor omab “välise eesmärgi” pistikprogrammi liidest, mis võimaldab integreerida välise eesmärgi, mida on võimalik strateegia abil saavutada.
Enne uue eesmärgi loomist peaksite veenduma, et ükski olemasolev eesmärk ei vasta teie vajadustele.
Uue pistikprogrammi loomine
Uue sihtmärgi loomiseks peate: laiendama sihtklassi, rakendama klassimeetodit hanki_nimi() et tagastada uue sihtmärgi kordumatu ID, mida soovite luua. See kordumatu identifikaator peab ühtima sisestuspunkti nimega, mille te hiljem deklareerite.
Järgmisena peate rakendama klassimeetodi hanki_kuva_nimi() et tagastada selle sihtmärgi tõlgitud kuvatav nimi, mida soovite luua (ärge kasutage tõlgitud stringi tagastamiseks muutujat, et tõlketööriist saaks selle automaatselt koguda.).
Rakendage klassi meetod get_translable_display_name()et tagastada uue sihtmärgi tõlkevõti (tegelikult ingliskeelne kuvanimi). Tagastatav väärtus peab ühtima stringiga, mis on tõlgitud kujule get_display_name().
Rakendage tema meetodit get_efficiacy_specification()oma eesmärgi tõhususe spetsifikatsiooni tagastamiseks. Meetod get_efficiacy_specification() tagastab Watcheri pakutava Unclassified() eksemplari. See jõudluse spetsifikatsioon on kasulik teie eesmärgi väljatöötamise protsessis, kuna see vastab tühjale spetsifikatsioonile.
Watcher API - komponent, mis rakendab Watcheri pakutavat REST API-d. Interaktsioonimehhanismid: CLI, Horizoni pistikprogramm, Pythoni SDK.
Vaatleja DB — Vaatlejate andmebaas.
Watcher Applier — komponent, mis rakendab Watcher Decision Engine komponendi poolt loodud tegevusplaani täitmist.
Vaataja otsustusmootor - Komponent, mis vastutab võimalike optimeerimistoimingute komplekti arvutamise eest auditi eesmärgi saavutamiseks. Kui strateegiat pole määratud, valib komponent iseseisvalt sobivaima.
Kirjastus Watcher Metrics - Komponent, mis kogub ja arvutab mõningaid mõõdikuid või sündmusi ning avaldab need CEP lõpp-punktis. Komponendi funktsionaalsust saab pakkuda ka Ceilomeetri väljaandja.
Keeruka sündmuste töötlemise (CEP) mootor — mootor keeruka sündmuste töötlemiseks. Toimivuse huvides võib samaaegselt töötada mitu CEP Engine'i eksemplari, millest igaüks töötleb teatud tüüpi mõõdikut/sündmust. Watcheri süsteemis käivitab CEP kahte tüüpi toiminguid: - salvestab vastavad sündmused / mõõdikud aegridade andmebaasi; - saatke vastavad sündmused Watcher Decision Engine'ile, kui see sündmus võib mõjutada praeguse optimeerimisstrateegia tulemust, kuna Openstacki klaster ei ole staatiline süsteem.
Lehel Optimeerimine – tegevusplaanid 500 (nii puhastel Queensidel kui ka Tionix moodulitega stendil) ilmub see alles pärast auditi käivitamist ja tegevusplaani koostamist, tühi avaneb normaalselt.
Tegevuse üksikasjade vahekaardil on vead, auditi eesmärki ja strateegiat pole võimalik saada (nii puhtal Queensil kui ka Tionix moodulitega stendil).
Dummy (test) eesmärgiga auditid luuakse ja käivitatakse tavapäraselt, koostatakse tegevuskavad.
Klassitamata eesmärgi auditeid ei looda, kuna eesmärk ei ole funktsionaalne ja on mõeldud vahepealseks konfigureerimiseks uute strateegiate loomisel.
Töökoormuse tasakaalustamise (Storage Capacity saldostrateegia) auditid luuakse edukalt, kuid tegevusplaani ei koostata. Salvestusbasseini optimeerimine pole vajalik.
Töökoormuse tasakaalustamise eesmärgi (Töökoormuse tasakaalu migratsioonistrateegia) auditid luuakse edukalt, kuid tegevuskava ei genereerita.
Müraka naabri sihtmärgi auditid luuakse edukalt, kuid tegevusplaani ei koostata.
Riistvara hoolduse eesmärgil auditid luuakse edukalt, tegevuskava ei genereerita täies mahus (genereeritakse tulemusnäitajad, kuid tegevuste loendit ennast ei genereerita).
Arvutus- ja juhtsõlmede nova.conf konfiguratsioonide muudatused (vaikejaotises compute_monitors = cpu.virt_driver) vigu ei paranda.
Samuti ebaõnnestuvad serveri konsolideerimist (põhistrateegia) sihtivad auditid.
Serveri konsolideerimise (VM-i töökoormuse konsolideerimise strateegia) auditid nurjuvad veaga. Logides on lähteandmete hankimisel viga. Vea arutelu eelkõige siin.
Proovisime konfiguratsioonifailis määrata Watcheri (see ei aidanud - kõigil optimeerimislehtedel ilmnenud vea tõttu ei paranda konfiguratsioonifaili algse sisu juurde naasmine olukorda):
[watcher_strategies.basic] andmeallikas = celomeeter, gnocchi
Energia säästmise audit ebaõnnestub. Logide järgi otsustades on probleemiks endiselt Ironicu puudumine, see ei tööta ilma palja hoolduseta.
Termilise optimeerimise auditid ebaõnnestuvad. Jälgimine on sama, mis serverite konsolideerimisel (VM-i töökoormuse konsolideerimise strateegia) (allikaandmete viga)
Õhuvoolu optimeerimise eesmärgil tehtud auditid ebaõnnestuvad vea tõttu.
Samuti ilmnesid järgmised auditi lõpuleviimise vead. Traceback in Decision-engine.log logides (klastri olek pole määratletud).
Meie kahekuulise uurimistöö tulemuseks oli ühemõtteline järeldus, et täisväärtusliku ja toimiva koormuse tasakaalustamise süsteemi saamiseks peame selles osas tegema tihedat koostööd Openstacki platvormi tööriistade täiustamisega.
Watcher on osutunud tõsiseks ja kiiresti arenevaks tohutu potentsiaaliga tooteks, mille täielik kasutamine nõuab palju tõsist tööd.