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?
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:
- az alapvető biztonsági mentési példány autonóm és helyben fut
- a biztonsági mentések és naplók tárolása mindig az ügyfél hálózatán belül van
- egy példány modulokból áll – egyfajta „konstruktor”
- 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
- 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
- maximális könnyű beállítás és kezelés
- 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:
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
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.
A hibás biztonsági mentések naplói színnel vannak jelölve: figyelmeztetés – sárga, hiba – piros.
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