Ještě jedna záloha — více než jen skript, jednodušší než systém

Zálohovací systémy existují v mnoha variantách, ale co dělat, pokud jsou spravované servery rozptýleny po různých regionech a klientech a je třeba se obejít prostředky operačního systému?

Ještě jedna záloha — více než jen skript, jednodušší než systém

Dobrý den, Habr!
Jmenuji se Natalia. Jsem vedoucí skupiny administrátorů aplikací ve společnosti NPO "Krista". Jsme Ops pro skupinu projektů naší společnosti. Naše situace je poněkud zvláštní: instalujeme a podporujeme náš software jak na serverech naší společnosti, tak na serverech klientů. Zálohování celého serveru není nutné. Důležitá jsou pouze "podstatná data": databáze a jednotlivé adresáře souborového systému. Samozřejmě, že klienti mají (nebo nemají) své předpisy pro zálohování a často poskytují nějaké externí úložiště pro ukládání záloh. V tomto případě po vytvoření zálohy zajišťujeme odeslání do externího úložiště.

Nějakou dobu jsme na účely zálohování používali bash skript, ale s rostoucími variantami nastavení se prohlubovala také složitost tohoto skriptu, až jsme v určitém okamžiku došli k potřebě "zbořit ho až na kost a pak...".

Hotová řešení nám nevyhovovala z různých důvodů: kvůli potřebě decentralizace záloh, povinnosti uchovávat zálohy lokálně u klienta, složitosti nastavení, substituce dovozu, omezení přístupu.

Připadalo nám, že bude snazší napsat něco vlastního. Chtěli jsme něco, co vydrží pro naši situaci dalších N let, ale s možností potenciálního rozšíření oblasti použití.

Podmínky úkolu byly následující:

  1. základní instance zálohy je autonomní, funguje lokálně
  2. uchování záloh a logů je vždy v rámci sítě klienta
  3. instance se skládá z modulů – takový zvláštní "konstruktor"
  4. je nutná kompatibilita s používanými distribucemi Linuxu, včetně zastaralých, žádoucí je potenciální multiplatformnost
  5. pro práci s instancí stačí přístup přes ssh, otevření dalších portů není nutné
  6. maximální jednoduchost nastavení a provozu
  7. možnost (ale není nutná) existence samostatné instance, která umožní centrálně zobrazit stav záloh z různých serverů

To, co se nám podařilo, můžete vidět zde: github.com/javister/krista-backup
Aplikace je napsána v python3; funguje na Debianu, Ubuntu, CentOS, AstraLinux 1.6.

Dokumentace je uložena v adresáři docs repozitáře.

Hlavní pojmy, se kterými systém pracuje:
action – akce, která realizuje jednu atomární operaci (zálohování DB, zálohování adresáře, přesun z adresáře A do adresáře B atd.). Existující actions jsou uloženy v adresáři core/actions
task – úkol, soubor actions, který popisuje jednu logickou „zálohovací úlohu”
schedule – rozvrh, soubor task s volitelným určením času spouštění úlohy

Konfigurace zálohy je uložena v yaml souboru; celková struktura konfigurace:

  • obecná nastavení
  • část actions: popis akcí používaných na tomto serveru
  • část schedule: popis všech úkolů (soubory akcí) a rozvrh jejich spuštění podle cronu, pokud je takové spuštění požadováno

Příklad konfigurace lze vidět zde

Co aplikace momentálně umí:

  • podporovány jsou základní operace: zálohování PostgreSQL přes pg_dump, zálohování adresáře souborového systému přes tar; operace s externím úložištěm; rsync mezi adresáři; rotace záloh (odstranění starých kopií)
  • vyvolání externího skriptu
  • manuální provedení jednotlivého úkolu
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • lze přidat (nebo odebrat) do crontab jednotlivý úkol nebo celé rozvrhy
    /opt/KristaBackup/KristaBackup.py enable all
  • generování trigger-souboru na základě výsledků zálohy. Tato funkce je užitečná ve spojení se Zabbixem pro monitorování záloh
  • může pracovat na pozadí v režimu webapi nebo web
    /opt/KristaBackup/KristaBackup.py web start [--api]

Rozdíl mezi režimy: v webapi neexistuje vlastní webové rozhraní, ale aplikace odpovídá na požadavky jiného instance. Pro režim web je nutné nainstalovat flask a několik dalších balíčků, což není všude přijatelné, například na certifikovaném AstraLinux SE.

Přes webové rozhraní lze zobrazit stav a logy záloh připojených serverů: „webová instance” dotazuje data z „zálohovacích instancí” prostřednictvím API. Přístup k webu vyžaduje autorizaci, přístup k webapi – nikoliv.

Ještě jedna záloha — více než jen skript, jednodušší než systém

Logy nesprávně provedených záloh jsou označeny barvou: warning – žlutě, error – červeně.

Ještě jedna záloha — více než jen skript, jednodušší než systém

Ještě jedna záloha — více než jen skript, jednodušší než systém

Pokud administrátor nepotřebuje příručku k parametrům a serverové OS jsou homogenní, lze zkompilovat soubor a distribovat již hotový balíček.

Tuto utilitu primárně distribujeme prostřednictvím Ansible, nasazujeme nejprve na část nejméně důležitých serverů a po testování na všechny ostatní.

Nakonec jsme získali kompaktní autonomní kopírovací nástroj, který lze automatizovat a který je vhodný pro použití i méně zkušenými administrátory. Je to pro nás pohodlné – možná to bude užitečné i pro vás?

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster