VarundusĂŒsteeme on palju, kuid mida teha, kui hallatavad serverid on hajutatud erinevatesse piirkondadesse ja klientidesse ning tuleb kasutada operatsioonisĂŒsteemi vahendeid?

Tere pÀevast, Habr!
Minu nimi on Natalia. Olen rakenduste administraatorite grupi juht NPO âKrystaâ juures. Me oleme Ops meie ettevĂ”tte projektigruppide jaoks. Meie olukord on ĂŒsna eriline: paigaldame ja toetame meie tarkvara nii meie ettevĂ”tte serverites kui ka klientide serverites. Samas ei ole serveri tĂ€ielik varundamine vajalik. Olulised on vaid âolulised andmedâ: andmebaasid ja eraldi failisĂŒsteemi kataloogid. Loomulikult on klientidel oma varundamise eeskirjad (vĂ”i mitte) ja nad pakuvad sageli mingit vĂ€list salvestusruumi varukoopiate talletamiseks. Sel juhul tagame varukoopia loomise jĂ€rel selle edastamise vĂ€lisse salvestusruumi.
MĂ”nda aega kasutasime varundamise eesmĂ€rkidel bash-skripti, kuid koos seadistuste valikute kasvuga kasvas ka selle skripti keerukus ning ĂŒhel ilusal hetkel jĂ”udsime jĂ€reldusele, et on aeg see âpĂ”hjalikult hĂ€vitada ja seejĂ€rel...â.
Valmislahendused ei sobinud erinevatel pÔhjustel: vajadus varunduste detsentraliseerimiseks, varunduste kohustuslik kohalike klientide hoidmine, keeruline seadistamine, importimise asendamine, juurdepÀÀsu piirangud.
Meie arvates oli lihtsam kirjutada midagi enda jaoks. Soovisime luua midagi, mis teeniks meid jÀrgmise N aasta jooksul, kuid vÔimaldaks potentsiaalset laienemist rakendamisalasse.
Ălesande tingimused olid jĂ€rgmised:
- baasvarunduse instants on autonoomne, töötab kohapeal
- varukoopiate ja logide hoidmine toimub alati kliendi vÔrgus
- instants koosneb moodulitest â omamoodi âehituskastâ
- on vajalik ĂŒhilduvus kasutatavate Linuxi distributsioonidega, sealhulgas vanadega, soovitav on potentsiaalne platvormidevaheline töö
- instantsiga tööks piisab SSH-juurdepÀÀsust, tÀiendavate sadamate avamine pole kohustuslik
- maksimaalne seadistamise ja kasutamise lihtsus
- vÔimalik (aga mitte kohustuslik) on eraldi instantsi olemasolu, mis vÔimaldab keskelt vaadata varunduste olekut erinevatelt serveritelt
Kuidas me selle saavutame, saab vaadata siit:
Rakendus on kirjutatud python3-s; töötab Debianil, Ubuntu'l, CentOS'il ja AstraLinux 1.6-l.
Dokumentatsioon on saadaval hoidla docs kataloogis.
Peamised mĂ”isted, millega sĂŒsteem opereerib:
action â tegevus, mis teostab ĂŒhe aatomaarse operatsiooni (andmebaasi varukoopia, katalooge varundamine, ĂŒleviimine kataloogist A katalooge B jne). Olemasolevad tegevused asuvad kataloogis core/actions
task â ĂŒlesanne, tegevuste komplekt, mis kirjeldab ĂŒhte loogilist 'varundamise ĂŒlesannet'
schedule â ajakava, ĂŒlesannete komplekt koos volitustega ĂŒlesande teostamise ajastamiseks
Varukoopia konfigureerimine salvestatakse yaml-failis; konfi ĂŒldine struktuur:
- ĂŒldised seadistused
- tegevuste jaotuses: kirjeldus tegevustest, mida sellel serveril kasutatakse
- ajakava jaotuses: kĂ”igi ĂŒlesannete (tegevuste komplektide) ja nende kĂ€ivitamise ajakava, kui selline kĂ€ivitamine on vajalik
Praegusel hetkel oskab rakendus teha jÀrgmist:
- toe all on meie jaoks olulised toimingud: PostgreSQL varukoopia pg_dump'i kaudu, failisĂŒsteemi katalooge varundamine tar'iga; toimingud vĂ€lise salvestusruumiga; rsync kataloogide vahel; varukoopiate rotatsioon (vanade koopiate kustutamine)
- vÀlist skripti kutsumine
- erandlik ĂŒlesanne kĂ€sitsi tĂ€itmine
/opt/KristaBackup/KristaBackup.py run make_full_dump - vĂ”ib lisada (vĂ”i eemaldada) crontab's eraldi ĂŒlesande vĂ”i kogu ajakava
/opt/KristaBackup/KristaBackup.py enable all - varukoopia tulemuste pÔhjal triggerefaili genereerimine. See funktsioon on kasulik koos Zabbixiga varukoopiate jÀlgimiseks
- vĂ”ib töötada taustal webapi vĂ”i web reĆŸiimis
/opt/KristaBackup/KristaBackup.py web start [--api]
ReĆŸiimide vahe: webapi-s puudub tegelik veebiliides, kuid rakendus vastab teise instantsi pĂ€ringutele. Web reĆŸiimi jaoks tuleb installida flask ja mĂ”ned tĂ€iendavad paketid, mis ei ole igal pool aktsepteeritavad, nĂ€iteks sertifitseeritud AstraLinux SE-l.
Veebiliidese kaudu saab vaadata ĂŒhendatud serverite varukoopiate seisundit ja logisid: 'veeb-instants' pĂ€rib andmed 'varukoopiate instantsidelt' API kaudu. Veebi juurdepÀÀs nĂ”uab autentimist, webapi juurdepÀÀs â ei.

EbaĂ”ige varukoopia logid on mĂ€rgistatud vĂ€rvidega: warning â kollane, error â punane.


Kui administraatorile pole vajalik parametrid mÀllu jÀtta ja serverite OS-id on homogeenilised, saab faili kompileerida ja levitada valmis paketti.
Levime seda utiliiti peamiselt lÀbi Ansible'i, esmalt vÀiksematele vÀhem olulistele serveritele, ja pÀrast testimist kÔigile teistele.
KokkuvĂ”ttes saime kompaktse iseseisva kopeerimisutili, mis on automatiseeritav ja sobib kasutamiseks isegi vĂ€hese kogemusega administraatoritele. Meile meeldib â ehk sobib ka teile?
Allikas: habr.com
