Még egy biztonsági másolat – több, mint egy szkript, egyszerűbb, mint egy rendszer

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?

Még egy biztonsági másolat – több, mint egy szkript, egyszerűbb, mint egy rendszer

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:

  1. az alap biztonsági másolat példány autónóm, helyben működik
  2. a biztonsági másolatok és naplók mindig az ügyfél hálózatán belül tárolódnak
  3. az példány modulokból áll – egyfajta "építőkészlet"
  4. 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
  5. 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
  6. a telepítés és üzemeltetés maximális egyszerűsége
  7. 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: github.com/javister/krista-backup
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.

A konfiguráció példáját itt lehet megnézni.

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.

Még egy biztonsági másolat – több, mint egy szkript, egyszerűbb, mint egy rendszer

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

Még egy biztonsági másolat – több, mint egy szkript, egyszerűbb, mint egy rendszer

Még egy biztonsági másolat – több, mint egy szkript, egyszerűbb, mint egy rendszer

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

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster