Számos biztonsági mentési rendszer létezik, de mi a teendő, ha az üzemeltetett szerverek különböző régiókban és ügyfeleknél találhatók, és az operációs rendszer eszközeivel kell beérnünk?

Jó napot! Habr!
A nevem Natalia. Én vagyok az alkalmazásadminisztrátorok csoportjának csapatvezetője a Krusta NPO-nál. Mi vagyunk az Ops a cégünk projektcsoportjának. Eléggé különös helyzetben vagyunk: mi telepítjük és támogatjuk a szoftverünket, mind a saját szervereinken, mind az ügyfeleink szerverein. Nem szükséges egészében biztonsági másolatot készíteni a szerverről. Csak a "lényeges adatokat" kell megmenteni: az adatbázisokat és néhány fájlrendszert. Természetesen az ügyfelek rendelkeznek (vagy nem rendelkeznek) a saját biztonsági mentési szabályaikkal, és gyakran nyújtanak valamilyen külső tárolót a biztonsági másolatok elhelyezésére. Ebben az esetben a biztonsági másolat létrehozása után biztosítjuk a külső tárolóra való küldést.
Egy ideig biztonsági mentési célokra bash-szkripttel éltünk, de a beállítási lehetőségek növekedésével arányosan nőtt a szkript bonyolultsága is, és egy szép napon eljutottunk ahhoz a szükséglethez, hogy "alapjaiban megsemmisítsük, majd...".
A kész megoldások különböző okok miatt nem feleltek meg: a biztonsági másolatok decentralizálásának szükségessége, a biztonsági másolatok helyi tárolásának kötelező volta az ügyfélnél, a beállítások bonyolultsága, az importhelyettesítés, a hozzáférési korlátozások.
Úgy tűnt, hogy egyszerűbb írni valami sajátot. Ugyanakkor szerettünk volna egy olyan megoldást, amely elegendő a helyzetünkre az elkövetkező N évre, de lehetőséget biztosít a potenciális alkalmazási terjedelem bővítésére.
A feladat feltételei a következők voltak:
- az alap biztonsági másolat példány autónóm, helyben működik
- a biztonsági másolatok és naplók mindig az ügyfél hálózatán belül tárolódnak
- az példány modulokból áll – egyfajta "építőkészlet"
- szükséges a használt Linux disztribúciókkal való kompatibilitás, beleértve az elavultakat is, kívánatos a potenciális platformfüggetlenség
- az példány működéséhez elegendő az ssh hozzáférés, további portok megnyitása nem szükséges
- a telepítés és üzemeltetés maximális egyszerűsége
- Lehetséges (de nem kötelező) egy különálló példány létezése, amely lehetővé teszi a különböző szerverek biztonsági mentéseinek központosított megtekintését.
Ami nekünk sikerült, azt itt meg lehet nézni:
A szoftver python3 nyelven készült; Debian, Ubuntu, CentOS, AstraLinux 1.6 alatt működik.
A dokumentáció a repozitórium docs mappájában található.
A rendszer által használt alapfogalmak:
action – olyan művelet, amely egy atomikus műveletet valósít meg (adatbázis biztonsági mentés, fájlrendszer mappa biztonsági mentése, átvitel az A mappából a B mappába stb.). A létező actions a core/actions mappában találhatók.
task – feladat, actions készlete, amely egy logikai "biztonsági mentési feladatot" ír le.
schedule – ütemezés, tasks készlete opcionális végrehajtási időpont megadásával.
A biztonsági mentés konfigurációja yaml-fájlban található; a konfiguráció általános felépítése:
- általános beállítások
- actions rész: a szerveren használt műveletek leírása.
- schedule rész: az összes feladat (műveletkészletek) és a krónikus időzítésük leírása, ha a krónikus indítás szükséges.
Mit tud jelenleg az alkalmazás:
- támogatja a számunkra legfontosabb műveleteket: PostgreSQL biztonsági mentés pg_dump-on keresztül, fájlrendszer mappa biztonsági mentése tar segítségével; műveletek külső tárolókkal; rsync mappák között; biztonsági mentések rotációja (régi másolatok törlése).
- külső szkript hívása.
- egyedi feladat kézi végrehajtása.
/opt/KristaBackup/KristaBackup.py run make_full_dump - bármely feladat vagy az egész ütemezés hozzáadható (vagy eltávolítható) a krontábhoz.
/opt/KristaBackup/KristaBackup.py enable all - a biztonsági mentés eredményei alapján trigger-fájl generálása. Ez a funkció hasznos a Zabbix-szal a biztonsági mentések ellenőrzésére.
- háttérben működhet webapi vagy web üzemmódban.
/opt/KristaBackup/KristaBackup.py web start [--api]
A két üzemmód közötti különbség: a webapi nem tartalmaz saját webes felületet, de az alkalmazás válaszol egy másik példány kéréseire. A web üzemmódhoz flask és néhány további csomag telepítése szükséges, ami nem mindenhol elfogadható, például a tanúsítvánnyal rendelkező AstraLinux SE rendszerben.
A webes felületen megnézhető a csatlakoztatott szerverek biztonsági mentéseinek állapota és naplói: a "web-példány" API-n keresztül lekéri az adatokat a "biztonsági mentési példányoktól". A webhez való hozzáféréshez hitelesítés szükséges, míg a webapi-hoz nem.

A sikertelen biztonsági mentések naplóit színkódokkal jelölik: warning – sárga, error – piros.


Ha az adminisztrátornak nincs szüksége az paraméterekre vonatkozó emlékeztetőre, és a szerverek operációs rendszere homogén, akkor lefordíthatja a fájlt, és terjesztheti a már kész csomagot.
Ezt az eszközt főleg Ansible környezetben terjesztjük, először a legkevésbé fontos szervereken telepítve, majd a tesztelés után minden más szerveren.
Ennek eredményeként egy kompakt, önálló másolóeszközt kaptunk, amely automatizálható, és még a kezdő rendszergazdák számára is használható. Nekünk kényelmes – lehet, hogy önnek is hasznos lesz?
Forrás: habr.com
