Alia sekurkopio - pli ol skripto, pli simpla ol sistemo

Estas multaj rezervaj sistemoj, sed kio se la servitaj serviloj estas disigitaj tra diversaj regionoj kaj klientoj kaj vi bezonas administri uzante la operaciumajn ilojn?

Alia sekurkopio - pli ol skripto, pli simpla ol sistemo

Bonan tagon, Habr!
Mia nomo estas Natalya. Mi estas teamestro de la grupo de administrantoj de aplikaĵoj ĉe NPO Krista. Ni operacias por la projekta grupo de nia kompanio. Ni havas sufiĉe strangan situacion: ni instalas kaj konservas nian programaron kaj sur la serviloj de nia firmao kaj sur serviloj situantaj ĉe la retejoj de klientoj. En ĉi tiu kazo, ne necesas sekurkopii la tutan servilon. Gravas nur la "esencaj datumoj": la DBMS kaj individuaj dosierujoj de la dosiersistemo. Kompreneble, klientoj havas (aŭ ne havas) siajn proprajn rezervajn politikojn kaj ofte provizas ian eksteran stokadon por konservi sekurkopiojn tie. En ĉi tiu kazo, post kreado de sekurkopio, ni certigas, ke ĝi estas sendita al ekstera stokado.

Dum kelka tempo, por sekurkopioj, ni sukcesis per bash-skripto, sed dum la ebloj por agordoj kreskis, la komplekseco de ĉi tiu skripto kreskis proporcie, kaj en bona momento ni venis al la bezono "detrui ĝin al la grundo, kaj tiam ....”.

Pretaj solvoj ne taŭgis pro diversaj kialoj: pro la bezono malcentralizi sekurkopiojn, la devontigon stoki sekurkopiojn loke ĉe la kliento, la komplekseco de agordoj, import-anstataŭigo kaj alirlimigoj.

Ŝajnis al ni, ke estas pli facile verki ion propran. Samtempe ni volis akiri ion, kio sufiĉus por nia situacio por la venontaj N jaroj, sed kun la ebleco eble plivastigi la amplekson.

La taskokondiĉoj estis jenaj:

  1. la baza rezerva petskribo estas eksterrete, funkcianta loke
  2. konservado de sekurkopioj kaj protokoloj ĉiam ene de la reto de la kliento
  3. la kazo konsistas el moduloj - tia speco de "konstruanto"
  4. kongruo kun Linuksaj distribuaĵoj uzataj, inkluzive de malnoviĝintaj, ebla transplataforma estas dezirinda
  5. Ssh-aliro sufiĉas por labori kun la petskribo, malfermi pliajn pordojn estas laŭvola
  6. maksimuma facileco de aranĝo kaj operacio
  7. eblas (sed ne necesas) havi apartan petskribon, kiu ebligas al vi centre rigardi la staton de sekurkopioj de malsamaj serviloj

Kion ni ricevis, oni povas vidi ĉi tie: github.com/javister/krista-backup
La programaro estas skribita en python3; funkcias sur Debian, Ubuntu, CentOS, AstraLinux 1.6.

La dokumentaro estas afiŝita en la dosierujo docs de la deponejo.

La ĉefaj konceptoj pri kiuj funkcias la sistemo:
ago - ago kiu efektivigas unu atoman operacion (datumbaza sekurkopio, dosierujo sekurkopio, translokigo de dosierujo A al dosierujo B, ktp.). Ekzistantaj agoj estas en la dosierujo core/actions
tasko - tasko, aro da agoj, kiuj priskribas unu logikan "rezervtaskon"
horaro - horaro, tasko aro kun laŭvola indiko de taska ekzekutotempo

La rezerva agordo estas konservita en yaml-dosiero; ĝenerala agorda strukturo:

  • Ĝeneralaj Agordoj
  • sekcio de agoj: priskribo de la agoj uzataj en ĉi tiu servilo
  • horaro sekcio: priskribo de ĉiuj taskoj (aroj) kaj la horaro por ilia lanĉo per cron, se tia lanĉo estas postulata

Ekzempla agordo troveblas ĉi tie

Kion la aplikaĵo povas fari nuntempe:

  • la ĉefaj operacioj por ni estas subtenataj: PostgreSQL-rezervo per pg_dump, dosiersistema dosierujo sekurkopio per tar; operacioj kun ekstera stokado; rsync inter dosierujoj; rezerva rotacio (forigante malnovajn kopiojn)
  • vokante eksteran skripton
  • mana plenumo de ununura tasko
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • vi povas aldoni (aŭ forigi) individuan taskon aŭ la tutan horaron en la crontab
    /opt/KristaBackup/KristaBackup.py enable all
  • deĉenigi dosiergeneradon surbaze de rezerva rezultoj. Ĉi tiu funkcio estas utila kune kun Zabbix por monitori sekurkopiojn.
  • povas funkcii fone en webapi aŭ retreĝimo
    /opt/KristaBackup/KristaBackup.py web start [--api]

La diferenco inter reĝimoj estas, ke webapi ne havas taŭgan retan interfacon, sed la aplikaĵo respondas al petoj de alia petskribo. Por retreĝimo, vi devas instali flaskon kaj kelkajn pliajn pakaĵojn, kaj ĉi tio ne estas akceptebla ĉie, ekzemple en atestita AstraLinux SE.

Per la TTT-interfaco, vi povas vidi la staton kaj protokolojn de sekurkopioj de konektitaj serviloj: la "reteja petskribo" petas datumojn de la "rezervaj petskriboj" per la API. Reta aliro postulas rajtigon, webapi-aliro ne.

Alia sekurkopio - pli ol skripto, pli simpla ol sistemo

Registroj de malĝuste pasintaj sekurkopioj estas markitaj per koloro: averto - flava, eraro - ruĝa.

Alia sekurkopio - pli ol skripto, pli simpla ol sistemo

Alia sekurkopio - pli ol skripto, pli simpla ol sistemo

Se la administranto ne bezonas trompfolion pri la parametroj kaj la servilaj operaciumoj estas homogenaj, vi povas kompili la dosieron kaj distribui la finitan pakaĵon.

Ni distribuas ĉi tiun utilecon ĉefe per Ansible, elirante ĝin unue al kelkaj el la malplej gravaj serviloj, kaj post testado al ĉiuj ceteraj.

La fina rezulto estas kompakta memstara kopia ilo, kiu povas esti aŭtomatigita kaj uzebla eĉ de nespertaj administrantoj. Estas oportune por ni — ĉu eble ankaŭ por vi utilos?

fonto: www.habr.com

Aldoni komenton