Veel üks varukoopia – rohkem kui skript, lihtsam kui süsteem

Varundussüsteeme on palju, aga mis siis, kui teenindatavad serverid on erinevates piirkondades ja klientides laiali ning teil on vaja hallata operatsioonisüsteemi tööriistu kasutades?

Veel üks varukoopia – rohkem kui skript, lihtsam kui süsteem

Tere päevast, Habr!
Minu nimi on Natalja. Olen MTÜ Krista rakenduste administraatorite grupi meeskonnajuht. Me tegutseme meie ettevõtte projektirühma jaoks. Meil on üsna omapärane olukord: installime ja hooldame oma tarkvara nii oma ettevõtte serveritesse kui ka klientide saitidel asuvatesse serveritesse. Sel juhul ei ole vaja kogu serverit varundada. Olulised on ainult "olulised andmed": DBMS ja failisüsteemi üksikud kataloogid. Loomulikult on klientidel (või ei ole) oma varunduspoliitikad ja sageli pakuvad nad varukoopiate salvestamiseks mingit välist salvestusruumi. Sel juhul tagame pärast varukoopia loomist selle saatmise välismällu.

Mõnda aega saime varundamise eesmärgil hakkama bash-skriptiga, kuid seadete valikute kasvades kasvas proportsionaalselt ka selle skripti keerukus ning ühel ilusal hetkel jõudsime vajaduseni "see maapinnale hävitada". , ja siis ....".

Valmislahendused ei sobinud erinevatel põhjustel: varukoopiate detsentraliseerimise vajaduse, kliendi juures varukoopiate lokaalse salvestamise kohustuse, seadistuste keerukuse, impordi asendamise ja juurdepääsupiirangute tõttu.

Meile tundus, et lihtsam on midagi omaette kirjutada. Samas tahtsime saada midagi, millest piisaks meie olukorra jaoks järgmiseks N aastaks, kuid võimalusega haaret potentsiaalselt laiendada.

Ülesande tingimused olid järgmised:

  1. baasvarukoopia eksemplar on võrguühenduseta ja töötab kohapeal
  2. varukoopiate ja logide salvestamine alati kliendi võrgus
  3. eksemplar koosneb moodulitest - selline "konstruktor"
  4. ühilduvus kasutatud Linuxi distributsioonidega, sealhulgas vananenud distributsioonidega, soovitav on potentsiaalne platvormidevaheline
  5. ssh-juurdepääs on eksemplariga töötamiseks piisav, täiendavate portide avamine on valikuline
  6. maksimaalne seadistamise ja kasutamise lihtsus
  7. võimalik (kuid mitte vajalik) omada eraldi eksemplari, mis võimaldab tsentraalselt vaadata erinevatest serveritest pärit varukoopiate olekut

Mida me saime, saab näha siit: github.com/javister/krista-backup
Tarkvara on kirjutatud keeles python3; töötab operatsioonisüsteemides Debian, Ubuntu, CentOS, AstraLinux 1.6.

Dokumentatsioon postitatakse hoidla dokumentide kataloogi.

Põhikontseptsioonid, millel süsteem töötab:
toiming - toiming, mis rakendab ühte aatomioperatsiooni (andmebaasi varundamine, kataloogi varundamine, ülekanne kataloogist A kataloogi B jne). Olemasolevad toimingud asuvad core/actions kataloogis
ülesanne - ülesanne, toimingute kogum, mis kirjeldab ühte loogilist "varundusülesannet"
ajakava – ajakava, ülesannete komplekt koos valikulise ülesande täitmise aja näiduga

Varukoopia konfiguratsioon salvestatakse yamli faili; üldine konfiguratsiooni struktuur:

  • Üldised seaded
  • toimingute jaotis: selles serveris kasutatud toimingute kirjeldus
  • ajakava jaotis: kõigi ülesannete (toimingute komplektide) kirjeldus ja nende käivitamise ajakava croniga, kui selline käivitamine on vajalik

Konfiguratsiooni näite leiate siit

Mida rakendus hetkel teha saab:

  • meie jaoks on toetatud põhitoimingud: PostgreSQL-i varundamine pg_dump-i kaudu, failisüsteemi kataloogide varundamine tar-i kaudu; toimingud välise mäluga; rsync kataloogide vahel; varundamise pööramine (vanade koopiate kustutamine)
  • välise skripti kutsumine
  • ühe ülesande käsitsi täitmine
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • saate crontabis lisada (või eemaldada) üksiku ülesande või kogu ajakava
    /opt/KristaBackup/KristaBackup.py enable all
  • käivitada faili genereerimine varundustulemuste põhjal. See funktsioon on kasulik koos Zabbixiga varukoopiate jälgimiseks.
  • saab töötada taustal webapi või veebirežiimis
    /opt/KristaBackup/KristaBackup.py web start [--api]

Režiimide erinevus seisneb selles, et webapil puudub korralik veebiliides, vaid rakendus vastab mõne teise eksemplari päringutele. Veebirežiimi jaoks peate installima kolbi ja mõned lisapaketid ning see pole igal pool vastuvõetav, näiteks sertifitseeritud AstraLinux SE-s.

Veebiliidese kaudu saate vaadata ühendatud serverite varukoopiate olekut ja logisid: "veebieksemplar" küsib API kaudu andmeid "varukoopiate" kohta. Veebijuurdepääs nõuab autoriseerimist, webapi juurdepääs mitte.

Veel üks varukoopia – rohkem kui skript, lihtsam kui süsteem

Valesti minevikus tehtud varukoopiate logid on tähistatud värviga: hoiatus - kollane, viga - punane.

Veel üks varukoopia – rohkem kui skript, lihtsam kui süsteem

Veel üks varukoopia – rohkem kui skript, lihtsam kui süsteem

Kui administraator ei vaja parameetrite kohta petulehte ja serveri operatsioonisüsteemid on homogeensed, saate faili kompileerida ja valmis paketi levitada.

Levitame seda utiliiti peamiselt Ansible'i kaudu, levitades selle esmalt mõnele kõige vähem tähtsale serverile ja pärast testimist kõigile ülejäänud serveritele.

Lõpptulemuseks on kompaktne iseseisev koopiautiliit, mida saavad automatiseerida ja mida saavad kasutada ka kogenematud administraatorid. Meile on see mugav – võib-olla on see kasulik ka teile?

Allikas: www.habr.com

Lisa kommentaar