Egy másik biztonsági mentés - több mint egy szkript, egyszerűbb, mint egy rendszer

Számos biztonsági mentési rendszer létezik, de mi a teendő, ha a kiszolgált szerverek különböző régiókban és kliensekben vannak szétszórva, és be kell érnie az operációs rendszerrel?

Egy másik biztonsági mentés - több mint egy szkript, egyszerűbb, mint egy rendszer

Jó napot, Habr!
A nevem Natalya. Az NPO Krista alkalmazás-adminisztrátorok csoportjának csoportvezetője vagyok. Cégünk projektcsoportjának munkatársai vagyunk. Meglehetősen egyedi a helyzetünk: szoftvereinket cégünk szerverein és az ügyfelek telephelyein található szervereken egyaránt telepítjük és karbantartjuk. Ebben az esetben nincs szükség a teljes szerver biztonsági mentésére. Csak a „lényeges adatok” fontosak: a DBMS és az egyes fájlrendszer-könyvtárak. Természetesen a klienseknek van (vagy nincs) saját biztonsági mentési szabályzata, és gyakran biztosítanak valamilyen külső tárolót a biztonsági másolatok tárolására. Ebben az esetben a biztonsági mentés létrehozása után biztosítjuk a küldést külső tárhelyre.

Egy ideig biztonsági mentés céljából megelégedtünk egy bash szkripttel, de a konfigurációs lehetőségek bővülésével arányosan nőtt ennek a szkriptnek a bonyolultsága, és egy ponton arra jutottunk, hogy „a földre kell pusztítani, majd ...”.

A kész megoldások különböző okok miatt nem voltak alkalmasak: a mentések decentralizálásának szükségessége, a biztonsági mentések kliensnél történő helyi tárolásának követelménye, a beállítás bonyolultsága, az import helyettesítés, a hozzáférési korlátozások miatt.

Számunkra úgy tűnt, könnyebb valami sajátot írni. Ugyanakkor szerettem volna olyat szerezni, ami a következő N évre is elég lesz a helyzetünkhöz, de lehetőség van a hatókör bővítésére.

A feladat feltételei a következők voltak:

  1. az alapvető biztonsági mentési példány autonóm és helyben fut
  2. a biztonsági mentések és naplók tárolása mindig az ügyfél hálózatán belül van
  3. egy példány modulokból áll – egyfajta „konstruktor”
  4. kompatibilitás szükséges a jelenlegi Linux disztribúciókkal, beleértve az elavultakat is, kívánatos a potenciális több platform
  5. A példány használatához elegendő az ssh-n keresztüli hozzáférés, további portok megnyitása nem szükséges
  6. maximális könnyű beállítás és kezelés
  7. lehetséges (de nem szükséges) egy külön példány, amely lehetővé teszi a különböző szerverekről származó biztonsági mentések állapotának központi megtekintését

Itt láthatod, mire jutottunk: github.com/javister/krista-backup
A szoftver python3 nyelven íródott; működik Debian, Ubuntu, CentOS, AstraLinux 1.6 rendszeren.

A dokumentáció a lerakat docs könyvtárába kerül.

A rendszer működésének alapelvei:
művelet – olyan művelet, amely egy atomi műveletet hajt végre (adatbázis-mentés, könyvtármentés, átvitel A könyvtárból B könyvtárba stb.). A meglévő műveletek a core/actions könyvtárban találhatók
feladat – feladat, egy logikai „mentési feladatot” leíró műveletsor
ütemterv – ütemezés, feladatsor a feladatvégrehajtási idő opcionális jelzésével

A biztonsági mentés konfigurációja egy yaml fájlban tárolódik; általános konfigurációs szerkezet:

  • Általános beállítások
  • műveletek szakasz: a szerveren használt műveletek leírása
  • ütemezési szakasz: az összes feladat (műveletcsoportok) leírása és elindításának ütemezése cron szerint, ha ilyen indítás szükséges

Itt található egy példa konfiguráció

Mit tud jelenleg az alkalmazás:

  • Számunkra a fő műveletek támogatottak: PostgreSQL biztonsági mentés pg_dump-on keresztül, fájlrendszer-könyvtár-mentés tar-on keresztül; műveletek külső tárolóval; rsync a könyvtárak között; biztonsági mentés elforgatása (régi másolatok törlése)
  • külső script meghívása
  • külön feladat kézi végrehajtása
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • hozzáadhat (vagy eltávolíthat) egyetlen feladatot vagy a teljes ütemezést a crontabhoz
    /opt/KristaBackup/KristaBackup.py enable all
  • trigger fájl létrehozása a biztonsági mentés eredményei alapján. Ez a funkció a Zabbix-szal együtt hasznos a biztonsági mentések figyeléséhez
  • működhet a háttérben webapi vagy web módban
    /opt/KristaBackup/KristaBackup.py web start [--api]

A módok közötti különbség: a webapinak magának nincs webes felülete, de az alkalmazás válaszol egy másik példány kérésére. Web módhoz telepíteni kell a flask-ot és több további csomagot, és ez nem mindenhol elfogadható, például a tanúsított AstraLinux SE-ben.

A webes felületen keresztül megtekintheti a csatlakoztatott szerverek biztonsági mentéseinek állapotát és naplóit: a „webes példány” az API-n keresztül kér adatokat a „backup példányoktól”. A webhez való hozzáférés engedélyt igényel, a webapi elérése nem.

Egy másik biztonsági mentés - több mint egy szkript, egyszerűbb, mint egy rendszer

A hibás biztonsági mentések naplói színnel vannak jelölve: figyelmeztetés – sárga, hiba – piros.

Egy másik biztonsági mentés - több mint egy szkript, egyszerűbb, mint egy rendszer

Egy másik biztonsági mentés - több mint egy szkript, egyszerűbb, mint egy rendszer

Ha az adminisztrátornak nincs szüksége csalólapra a paraméterekről, és a szerver operációs rendszerek homogének, akkor lefordíthatja a fájlt és terjesztheti a kész csomagot.

Ezt a segédprogramot elsősorban az Ansible-n keresztül terjesztjük, először a legkevésbé fontos kiszolgálókon, majd tesztelés után az összes többi szerveren.

Ennek eredményeként egy kompakt, önálló másolási segédprogramot kaptunk, amely automatizálható, és még a tapasztalatlan rendszergazdák is használhatják. Nekünk kényelmes – talán neked is hasznos lesz?

Forrás: will.com

Hozzászólás