Još jedna rezervna kopija - više od skripte, jednostavnije od sistema

Postoji mnogo sistema rezervnih kopija, ali šta učiniti ako su serveri raštrkani po različitim regionima i klijentima i morate da se zadovoljite operativnim sistemom?

Još jedna rezervna kopija - više od skripte, jednostavnije od sistema

Dobar dan, Habr!
Moje ime je Natalya. Ja sam vođa tima grupe administratora aplikacija u NPO Krista. Mi smo operativni za projektnu grupu naše kompanije. Imamo prilično jedinstvenu situaciju: instaliramo i održavamo naš softver i na serverima naše kompanije i na serverima koji se nalaze na lokacijama klijenata. U ovom slučaju nema potrebe za pravljenjem rezervne kopije cijelog servera. Važni su samo “esencijalni podaci”: DBMS i pojedinačni direktoriji sistema datoteka. Naravno, klijenti imaju (ili nemaju) vlastite propise o sigurnosnoj kopiji i često obezbjeđuju neku vrstu eksterne memorije za skladištenje rezervnih kopija tamo. U tom slučaju, nakon kreiranja sigurnosne kopije, osiguravamo slanje na eksternu pohranu.

Neko vrijeme smo se radi rezervnih kopija zadovoljavali bash skriptom, ali kako su opcije konfiguracije rasle, složenost ove skripte je proporcionalno rasla i u jednom trenutku smo došli do potrebe da je „uništimo do temelja, a zatim ...”.

Gotova rješenja nisu bila prikladna iz raznih razloga: zbog potrebe za decentralizacijom rezervnih kopija, zahtjeva za pohranjivanjem sigurnosnih kopija lokalno kod klijenta, složenosti podešavanja, zamjene uvoza, ograničenja pristupa.

Činilo nam se da je lakše napisati nešto svoje. Istovremeno, želio sam nabaviti nešto što bi bilo dovoljno za našu situaciju u narednih N godina, ali uz mogućnost potencijalnog proširenja obima.

Uslovi zadatka su bili sledeći:

  1. osnovna instanca sigurnosne kopije je autonomna i radi se lokalno
  2. skladištenje rezervnih kopija i logova je uvijek unutar mreže klijenta
  3. instanca se sastoji od modula - neka vrsta "konstruktora"
  4. potrebna je kompatibilnost sa trenutnim distribucijama Linuxa, uključujući zastarjele, poželjna je potencijalna cross-platforma
  5. Za rad sa instancom dovoljan je pristup preko ssh; otvaranje dodatnih portova nije potrebno
  6. maksimalna jednostavnost podešavanja i rada
  7. moguće je (ali nije neophodno) imati zasebnu instancu koja vam omogućava da centralno vidite status rezervnih kopija sa različitih servera

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

Dokumentacija se postavlja u direktorij dokumenata spremišta.

Osnovni koncepti kojima sistem funkcioniše:
akcija – akcija koja implementira jednu atomsku operaciju (sigurnosna kopija baze podataka, sigurnosna kopija direktorija, prijenos iz direktorija A u direktorij B, itd.). Postojeće akcije se nalaze u direktorijumu core/actions
zadatak – zadatak, skup radnji koje opisuju jedan logički “backup zadatak”
raspored – raspored, skup zadataka sa opcionom indikacijom vremena izvršenja zadatka

Konfiguracija sigurnosne kopije je pohranjena u yaml datoteci; opća struktura konfiguracije:

  • Opšte postavke
  • odeljak akcija: opis akcija koje se koriste na ovom serveru
  • odeljak rasporeda: opis svih zadataka (skupova akcija) i raspored za njihovo pokretanje po cron-u, ako je takvo pokretanje potrebno

Primjer konfiguracije možete pronaći ovdje

Šta aplikacija trenutno može:

  • Podržane su glavne operacije za nas: PostgreSQL sigurnosna kopija putem pg_dump, sigurnosna kopija direktorija sistema datoteka putem tar; operacije sa eksternom memorijom; rsync između direktorija; rotacija rezervnih kopija (brisanje starih kopija)
  • pozivanje eksterne skripte
  • ručno izvršenje posebnog 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 datoteke okidača na osnovu rezultata sigurnosne kopije. Ova funkcija je korisna u kombinaciji sa Zabbixom za praćenje sigurnosnih kopija
  • može raditi u pozadini u webapi ili web načinu
    /opt/KristaBackup/KristaBackup.py web start [--api]

Razlika između načina rada: webapi nema sam web interfejs, ali aplikacija odgovara na zahtjeve druge instance. Za web mod potrebno je instalirati flask i nekoliko dodatnih paketa, a to nije svugdje prihvatljivo, na primjer u certificiranom AstraLinux SE.

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

Još jedna rezervna kopija - više od skripte, jednostavnije od sistema

Dnevnici neispravnih rezervnih kopija su označeni bojom: upozorenje – žuto, greška – crveno.

Još jedna rezervna kopija - više od skripte, jednostavnije od sistema

Još jedna rezervna kopija - više od skripte, jednostavnije od sistema

Ako administratoru nije potrebna varalica o parametrima, a operativni sistemi servera su homogeni, možete sastaviti datoteku i distribuirati gotov paket.

Distribuiramo ovaj uslužni program uglavnom preko Ansible-a, puštajući ga prvo na neke od najmanje važnih servera, a nakon testiranja na sve ostale.

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

izvor: www.habr.com

Dodajte komentar