Další záloha – více než skript, jednodušší než systém

Existuje mnoho zálohovacích systémů, ale co dělat, když jsou obsluhované servery rozptýleny v různých regionech a klientech a vy si potřebujete vystačit s operačním systémem?

Další záloha – více než skript, jednodušší než systém

Dobrý den, tam bude!
Jmenuji se Natalya. Jsem vedoucím týmu skupiny administrátorů aplikací v NPO Krista. Jsme Ops pro projektovou skupinu naší společnosti. Máme poměrně unikátní situaci: instalujeme a udržujeme náš software jak na serverech naší společnosti, tak na serverech umístěných u klientů. V tomto případě není potřeba zálohovat celý server. Důležitá jsou pouze „základní data“: DBMS a jednotlivé adresáře souborového systému. Klienti samozřejmě mají (nebo nemají) svá vlastní pravidla pro zálohování a často tam poskytují nějaké externí úložiště pro ukládání záloh. V tomto případě po vytvoření zálohy zajistíme odeslání na externí úložiště.

Nějakou dobu jsme si pro účely zálohování vystačili s bash skriptem, ale jak rostly možnosti konfigurace, úměrně tomu rostla i složitost tohoto skriptu a v jednu chvíli jsme došli k nutnosti „zničit ho do základů a pak ...“.

Hotová řešení nebyla vhodná z různých důvodů: z důvodu nutnosti decentralizace záloh, požadavku ukládat zálohy lokálně u klienta, složitosti nastavení, náhrady importu, omezení přístupu.

Zdálo se nám, že je jednodušší napsat něco vlastního. Zároveň jsem chtěl získat něco, co by na naši situaci stačilo na dalších N let, ale s možností případného rozšíření záběru.

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

  1. základní instance zálohy je autonomní a běží lokálně
  2. úložiště záloh a protokolů je vždy v síti klienta
  3. instance se skládá z modulů - jakýsi „konstruktor“
  4. je vyžadována kompatibilita se současnými distribucemi Linuxu, včetně těch zastaralých, žádoucí je potenciální multiplatformní
  5. Pro práci s instancí stačí přístup přes ssh, otevírání dalších portů není nutné
  6. maximální jednoduchost nastavení a ovládání
  7. je možné (ale není nutné) mít samostatnou instanci, která vám umožní centrálně zobrazit stav záloh z různých serverů

Na co jsme přišli, se můžete podívat zde: github.com/javister/krista-backup
Software je napsán v pythonu3; funguje na Debian, Ubuntu, CentOS, AstraLinux 1.6.

Dokumentace je umístěna v adresáři docs úložiště.

Základní pojmy, které systém provozuje:
akce – akce, která realizuje jednu atomickou operaci (záloha databáze, záloha adresáře, přesun z adresáře A do adresáře B atd.). Stávající akce jsou umístěny v adresáři core/actions
úkol – úkol, soubor akcí popisujících jeden logický „zálohovací úkol“
harmonogram – harmonogram, soubor úkolů s volitelnou indikací doby provádění úkolu

Konfigurace zálohy je uložena v souboru yaml; obecná konfigurační struktura:

  • Obecné nastavení
  • sekce akcí: popis akcí používaných na tomto serveru
  • část plán: popis všech úloh (souborů akcí) a plán jejich spuštění pomocí cronu, pokud je takové spuštění vyžadováno

Příklad konfigurace naleznete zde

Co aplikace aktuálně umí:

  • Pro nás jsou podporovány hlavní operace: záloha PostgreSQL přes pg_dump, záloha adresáře souborového systému přes tar; operace s externím úložištěm; rsync mezi adresáři; rotace záloh (mazání starých kopií)
  • volání externího skriptu
  • ruční provedení samostatného úkolu
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • do crontab můžete přidat (nebo odebrat) jeden úkol nebo celý plán
    /opt/KristaBackup/KristaBackup.py enable all
  • generování spouštěcího souboru na základě výsledků zálohování. Tato funkce je užitečná ve spojení se Zabbixem pro sledová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: webapi nemá samotné webové rozhraní, ale aplikace reaguje na požadavky z jiné instance. Pro webový režim je potřeba nainstalovat flask a několik dalších balíčků, což není všude přijatelné, například v certifikovaném AstraLinux SE.

Prostřednictvím webového rozhraní můžete zobrazit stav a protokoly záloh připojených serverů: „webová instance“ požaduje data od „instancí záloh“ prostřednictvím API. Přístup na web vyžaduje autorizaci, přístup k webapi nikoli.

Další záloha – více než skript, jednodušší než systém

Protokoly nesprávných záloh jsou označeny barevně: varování – žlutá, chyba – červená.

Další záloha – více než skript, jednodušší než systém

Další záloha – více než skript, jednodušší než systém

Pokud administrátor nepotřebuje cheat sheet na parametry a serverové operační systémy jsou homogenní, můžete soubor zkompilovat a distribuovat hotový balíček.

Tento nástroj distribuujeme především prostřednictvím Ansible, nejprve jej zavádíme na některé z nejméně důležitých serverů a po testování na všechny ostatní.

Výsledkem je kompaktní, samostatný nástroj pro kopírování, který lze automatizovat a mohou jej používat i nezkušení správci. Je to pro nás výhodné - možná to bude užitečné i pro vás?

Zdroj: www.habr.com

Přidat komentář