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?
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é:
- základná inštancia zálohy je autonómna a beží lokálne
- ukladanie záloh a protokolov je vždy v sieti klienta
- inštancia pozostáva z modulov - druh „konštruktora“
- vyžaduje sa kompatibilita so súčasnými distribúciami Linuxu, vrátane tých zastaraných, potenciálna multiplatformová je žiaduca
- Na prácu s inštanciou postačuje prístup cez ssh, otváranie ďalších portov nie je potrebné
- maximálne jednoduché nastavenie a ovládanie
- 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:
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é
Č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.
Protokoly nesprávnych záloh sú označené farebne: upozornenie – žltá, chyba – červená.
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