Veel ĂŒks varukoopia — rohkem kui skript ja lihtsam kui sĂŒsteem.

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

Veel ĂŒks varukoopia — rohkem kui skript ja lihtsam kui sĂŒsteem.

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:

  1. baasvarunduse instants on autonoomne, töötab kohapeal
  2. varukoopiate ja logide hoidmine toimub alati kliendi vÔrgus
  3. instants koosneb moodulitest – omamoodi „ehituskast”
  4. on vajalik ĂŒhilduvus kasutatavate Linuxi distributsioonidega, sealhulgas vanadega, soovitav on potentsiaalne platvormidevaheline töö
  5. instantsiga tööks piisab SSH-juurdepÀÀsust, tÀiendavate sadamate avamine pole kohustuslik
  6. maksimaalne seadistamise ja kasutamise lihtsus
  7. 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: github.com/javister/krista-backup
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

Konfi nÀidis on saadaval siin

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.

Veel ĂŒks varukoopia — rohkem kui skript ja lihtsam kui sĂŒsteem.

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

Veel ĂŒks varukoopia — rohkem kui skript ja lihtsam kui sĂŒsteem.

Veel ĂŒks varukoopia — rohkem kui skript ja lihtsam kui sĂŒsteem.

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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster