Još jedna sigurnosna kopija - više od skripte, jednostavnije od sustava

Postoji mnogo sustava za sigurnosno kopiranje, ali što učiniti ako su posluženi poslužitelji raštrkani po različitim regijama i klijentima i morate se zadovoljiti operativnim sustavom?

Još jedna sigurnosna kopija - više od skripte, jednostavnije od sustava

Dobar dan, Habr!
Moje ime je Natalya. Voditelj sam tima grupe administratora aplikacija u NPO Krista. Mi smo Ops za projektnu grupu naše tvrtke. Imamo prilično jedinstvenu situaciju: instaliramo i održavamo naš softver i na poslužiteljima naše tvrtke i na poslužiteljima koji se nalaze na stranicama klijenata. U ovom slučaju nema potrebe za backupom cijelog poslužitelja. Važni su samo "bitni podaci": DBMS i pojedinačni direktoriji datotečnog sustava. Naravno, klijenti imaju (ili nemaju) vlastite propise o sigurnosnom kopiranju i često osiguravaju neku vrstu vanjske pohrane za pohranjivanje sigurnosnih kopija tamo. U tom slučaju, nakon izrade sigurnosne kopije, osiguravamo slanje u vanjsku pohranu.

Neko smo se vrijeme, radi rezervne kopije, snalazili s bash skriptom, no kako su mogućnosti konfiguracije rasle, proporcionalno je rasla i složenost te skripte, te smo u jednom trenutku došli do potrebe da je „uništimo do temelja, a zatim ...”.

Gotova rješenja nisu bila prikladna iz različitih razloga: zbog potrebe za decentralizacijom sigurnosnih kopija, potrebe za pohranjivanjem sigurnosnih kopija lokalno kod klijenta, složenosti postavljanja, zamjene uvoza, ograničenja pristupa.

Činilo nam se da je lakše napisati nešto svoje. Ujedno sam želio dobiti nešto što bi za našu situaciju bilo dovoljno za sljedećih N godina, ali s mogućnošću potencijalnog proširenja opsega.

Uvjeti zadatka bili su sljedeći:

  1. instanca osnovne sigurnosne kopije je autonomna i radi lokalno
  2. pohrana sigurnosnih kopija i zapisa uvijek je unutar klijentove mreže
  3. instanca se sastoji od modula - neke vrste "konstruktora"
  4. potrebna je kompatibilnost s trenutačnim distribucijama Linuxa, uključujući one zastarjele, poželjna je mogućnost više platformi
  5. Za rad s instancom dovoljan je pristup putem ssh-a, otvaranje dodatnih portova nije potrebno
  6. maksimalna jednostavnost postavljanja i rada
  7. moguće je (ali nije nužno) imati zasebnu instancu koja vam omogućuje centralni pregled statusa sigurnosnih kopija s različitih poslužitelja

Što smo smislili možete vidjeti ovdje: github.com/javister/krista-backup
Softver je napisan u python3; radi na Debian, Ubuntu, CentOS, AstraLinux 1.6.

Dokumentacija je objavljena u direktoriju dokumenata repozitorija.

Osnovni koncepti na kojima sustav funkcionira:
akcija – akcija koja implementira jednu atomsku operaciju (sigurnosna kopija baze podataka, sigurnosna kopija imenika, prijenos iz direktorija A u direktorij B itd.). Postojeće radnje nalaze se u direktoriju core/actions
zadatak – zadatak, skup radnji koje opisuju jedan logički "zadatak sigurnosne kopije"
raspored – raspored, skup zadataka s izbornom naznakom vremena izvršenja zadatka

Konfiguracija sigurnosne kopije pohranjuje se u yaml datoteku; opća struktura konfiguracije:

  • Opće postavke
  • dio radnji: opis radnji koje se koriste na ovom poslužitelju
  • odjeljak rasporeda: opis svih zadataka (skupova akcija) i raspored njihovog pokretanja cron-om, ako je takvo pokretanje potrebno

Primjer konfiguracije možete pronaći ovdje

Što aplikacija trenutno može:

  • Podržane su glavne operacije za nas: PostgreSQL backup putem pg_dump, backup direktorija datotečnog sustava putem tar-a; operacije s vanjskom pohranom; rsync između direktorija; backup rotacija (brisanje starih kopija)
  • pozivanje vanjske skripte
  • ručno izvršavanje zasebnog zadatka
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • možete dodati (ili ukloniti) jedan zadatak ili cijeli raspored u crontab
    /opt/KristaBackup/KristaBackup.py enable all
  • generiranje okidačke datoteke na temelju rezultata sigurnosne kopije. Ova je funkcija korisna u kombinaciji sa Zabbixom za praćenje sigurnosnih kopija
  • može raditi u pozadini u webapi ili web modu
    /opt/KristaBackup/KristaBackup.py web start [--api]

Razlika između načina: webapi nema samo web sučelje, već aplikacija odgovara na zahtjeve druge instance. Za web mod morate instalirati flask i nekoliko dodatnih paketa, a to nije svugdje prihvatljivo, primjerice u certificiranom AstraLinux SE.

Putem web sučelja možete vidjeti status i zapisnike sigurnosnih kopija povezanih poslužitelja: "web instanca" traži podatke od "backup instanci" putem API-ja. Pristup webu zahtijeva autorizaciju, pristup webapiju ne.

Još jedna sigurnosna kopija - više od skripte, jednostavnije od sustava

Dnevnici netočnih sigurnosnih kopija označeni su bojom: upozorenje – žuto, greška – crveno.

Još jedna sigurnosna kopija - više od skripte, jednostavnije od sustava

Još jedna sigurnosna kopija - više od skripte, jednostavnije od sustava

Ako administrator ne treba varalicu o parametrima, a operativni sustavi poslužitelja su homogeni, možete kompajlirati datoteku i distribuirati gotov paket.

Distribuiramo ovaj uslužni program uglavnom putem Ansiblea, prvo ga uvodimo na neke od najmanje važnih poslužitelja, a nakon testiranja na sve ostale.

Kao rezultat, dobili smo kompaktan, samostalan uslužni program za kopiranje koji se može automatizirati i mogu ga koristiti čak i neiskusni administratori. Nama je zgodno - možda će biti korisno i vama?

Izvor: www.habr.com

Dodajte komentar