Ďalšia záloha – viac ako skript, jednoduchšia ako systém

Existuje veľa zálohovacích systémov, ale čo robiť, ak sú obsluhované servery roztrúsené po rôznych regiónoch a klientoch a potrebujete si vystačiť s operačným systémom?

Ďalšia záloha – viac ako skript, jednoduchšia ako systém

Dobré popoludnie, Habr!
Volám sa Natalya. Som vedúcim tímu skupiny správcov aplikácií v NPO Krista. Sme Ops pre projektovú skupinu našej spoločnosti. Máme pomerne jedinečnú situáciu: inštalujeme a udržiavame náš softvér na serveroch našej spoločnosti aj na serveroch umiestnených na stránkach klientov. V tomto prípade nie je potrebné zálohovať celý server. Dôležité sú len „základné údaje“: DBMS a jednotlivé adresáre súborového systému. Samozrejme, klienti majú (alebo nemajú) svoje vlastné zálohovacie predpisy a často tam poskytujú nejaké externé úložisko na ukladanie záloh. V tomto prípade po vytvorení zálohy zabezpečíme odoslanie na externé úložisko.

Nejaký čas sme si na účely zálohovania vystačili s bash skriptom, ale ako rástli možnosti konfigurácie, úmerne tomu rástla aj zložitosť tohto skriptu a v jednom momente sme prišli na potrebu „zničiť ho do zeme a potom ...“.

Hotové riešenia neboli vhodné z rôznych dôvodov: z dôvodu potreby decentralizácie záloh, požiadavky ukladať zálohy lokálne u klienta, zložitosti nastavenia, náhrady importu, obmedzenia prístupu.

Zdalo sa nám, že je jednoduchšie napísať niečo vlastné. Zároveň som chcel získať niečo, čo by na našu situáciu stačilo na ďalších N rokov, ale s možnosťou potenciálneho rozšírenia záberu.

Podmienky úlohy boli nasledovné:

  1. základná inštancia zálohy je autonómna a beží lokálne
  2. ukladanie záloh a protokolov je vždy v sieti klienta
  3. inštancia pozostáva z modulov - druh „konštruktora“
  4. vyžaduje sa kompatibilita so súčasnými distribúciami Linuxu, vrátane tých zastaraných, potenciálna multiplatformová je žiaduca
  5. Na prácu s inštanciou postačuje prístup cez ssh, otváranie ďalších portov nie je potrebné
  6. maximálne jednoduché nastavenie a ovládanie
  7. je možné (ale nie nevyhnutné) mať samostatnú inštanciu, ktorá vám umožní centrálne prezerať stav záloh z rôznych serverov

Čo sme vymysleli si môžete pozrieť tu: github.com/javister/krista-backup
Softvér je napísaný v jazyku python3; funguje na Debian, Ubuntu, CentOS, AstraLinux 1.6.

Dokumentácia je zverejnená v adresári docs úložiska.

Základné pojmy, s ktorými systém funguje:
akcia – akcia, ktorá realizuje jednu atomickú operáciu (záloha databázy, záloha adresára, presun z adresára A do adresára B a pod.). Existujúce akcie sa nachádzajú v adresári core/actions
úloha – úloha, súbor akcií popisujúcich jednu logickú „úlohu zálohovania“
harmonogram – harmonogram, súbor úloh s voliteľným uvedením času vykonania úlohy

Konfigurácia zálohy je uložená v súbore yaml; všeobecná štruktúra konfigurácie:

  • Všeobecné nastavenia
  • sekcia akcií: popis akcií používaných na tomto serveri
  • časť plán: popis všetkých úloh (súborov akcií) a plán ich spustenia pomocou cronu, ak je takéto spustenie potrebné

Príklad konfigurácie nájdete tu

Čo aplikácia momentálne dokáže:

  • Podporované sú pre nás hlavné operácie: záloha PostgreSQL cez pg_dump, záloha adresára súborového systému cez tar; operácie s externým úložiskom; rsync medzi adresármi; rotácia zálohy (vymazanie starých kópií)
  • volanie externého skriptu
  • manuálne vykonanie samostatnej úlohy
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • do crontab môžete pridať (alebo odstrániť) jednu úlohu alebo celý plán
    /opt/KristaBackup/KristaBackup.py enable all
  • generovanie spúšťacieho súboru na základe výsledkov zálohovania. Táto funkcia je užitočná v spojení so Zabbixom na monitorovanie záloh
  • môže pracovať na pozadí v režime webapi alebo web
    /opt/KristaBackup/KristaBackup.py web start [--api]

Rozdiel medzi režimami: webapi nemá samotné webové rozhranie, ale aplikácia reaguje na požiadavky z inej inštancie. Pre webový režim je potrebné nainštalovať flask a niekoľko doplnkových balíkov, čo nie je všade prijateľné, napríklad v certifikovanom AstraLinux SE.

Prostredníctvom webového rozhrania si môžete prezerať stav a protokoly záloh pripojených serverov: „webová inštancia“ požaduje údaje od „inštancií záloh“ cez API. Prístup na web vyžaduje autorizáciu, prístup k webapi nie.

Ďalšia záloha – viac ako skript, jednoduchšia ako systém

Protokoly nesprávnych záloh sú označené farebne: upozornenie – žltá, chyba – červená.

Ďalšia záloha – viac ako skript, jednoduchšia ako systém

Ďalšia záloha – viac ako skript, jednoduchšia ako systém

Ak administrátor nepotrebuje cheat sheet na parametre a serverové operačné systémy sú homogénne, môžete súbor skompilovať a distribuovať hotový balík.

Túto pomôcku distribuujeme hlavne prostredníctvom Ansible, najskôr ju sprístupníme niektorým z najmenej dôležitých serverov a po otestovaní aj všetkým ostatným.

Výsledkom je, že sme dostali kompaktný, samostatný nástroj na kopírovanie, ktorý možno automatizovať a môžu ho používať aj neskúsení správcovia. Je to pre nás výhodné - možno to bude užitočné aj pre vás?

Zdroj: hab.com

Pridať komentár