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?
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í:
- základní instance zálohy je autonomní a běží lokálně
- úložiště záloh a protokolů je vždy v síti klienta
- instance se skládá z modulů - jakýsi „konstruktor“
- je vyžadována kompatibilita se současnými distribucemi Linuxu, včetně těch zastaralých, žádoucí je potenciální multiplatformní
- Pro práci s instancí stačí přístup přes ssh, otevírání dalších portů není nutné
- maximální jednoduchost nastavení a ovládání
- 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:
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
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.
Protokoly nesprávných záloh jsou označeny barevně: varování – žlutá, chyba – červená.
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