Vēl viena rezerves kopija - vairāk nekā skripts, vienkāršāka nekā sistēma

Ir daudz rezerves sistēmu, bet ko darīt, ja apkalpotie serveri ir izkaisīti pa dažādiem reģioniem un klientiem un jums ir jāiztiek ar operētājsistēmu?

Vēl viena rezerves kopija - vairāk nekā skripts, vienkāršāka nekā sistēma

Laba diena, Habr!
Mani sauc Natālija. Esmu NPO Krista aplikāciju administratoru grupas komandas vadītāja. Mēs esam Ops mūsu uzņēmuma projektu grupai. Mums ir diezgan unikāla situācija: mēs instalējam un uzturam savu programmatūru gan mūsu uzņēmuma serveros, gan serveros, kas atrodas klientu vietnēs. Šajā gadījumā nav nepieciešams dublēt visu serveri. Svarīgi ir tikai “būtiskie dati”: DBVS un atsevišķi failu sistēmas direktoriji. Protams, klientiem ir (vai nav) savi dublēšanas noteikumi un bieži tiek nodrošināta kāda veida ārēja krātuve dublējumu glabāšanai. Šajā gadījumā pēc dublējuma izveides nodrošinām nosūtīšanu uz ārējo krātuvi.

Kādu laiku dublēšanas nolūkos iztikām ar bash skriptu, taču, pieaugot konfigurācijas opcijām, šī skripta sarežģītība proporcionāli pieauga, un vienā brīdī nonācām pie nepieciešamības “iznīcināt to zemē, un tad ...”.

Gatavie risinājumi nebija piemēroti dažādu iemeslu dēļ: nepieciešamības decentralizēt dublējumus, prasības lokāli glabāt dublējumus pie klienta, iestatīšanas sarežģītības, importa aizstāšanas, piekļuves ierobežojumu dēļ.

Mums šķita, ka vieglāk ir uzrakstīt kaut ko savu. Tajā pašā laikā vēlējos iegūt kaut ko tādu, ar ko pietiktu mūsu situācijai nākamajiem N gadiem, bet ar iespēju potenciāli paplašināt vērienu.

Uzdevuma nosacījumi bija šādi:

  1. pamata dublējuma gadījums ir autonoms un darbojas lokāli
  2. dublējumkopiju un žurnālu glabāšana vienmēr atrodas klienta tīklā
  3. instance sastāv no moduļiem - sava veida "konstruktora"
  4. ir nepieciešama saderība ar pašreizējiem Linux izplatījumiem, tostarp novecojušiem, ir vēlama potenciāla starpplatforma
  5. Lai strādātu ar gadījumu, pietiek ar piekļuvi, izmantojot ssh; papildu portu atvēršana nav nepieciešama
  6. maksimāla iestatīšanas un darbības vienkāršība
  7. ir iespējams (bet nav nepieciešams) izveidot atsevišķu gadījumu, kas ļauj centralizēti skatīt dažādu serveru dublējumu statusu

Šeit varat redzēt, ko mēs izdomājām: github.com/javister/krista-backup
Programmatūra ir rakstīta python3; darbojas uz Debian, Ubuntu, CentOS, AstraLinux 1.6.

Dokumentācija tiek ievietota repozitorija dokumentu direktorijā.

Pamatjēdzieni, ar kuriem sistēma darbojas:
darbība – darbība, kas realizē vienu atomoperāciju (datu bāzes dublēšana, direktoriju dublēšana, pāreja no direktorija A uz direktoriju B u.c.). Esošās darbības atrodas galveno/darbību direktorijā
uzdevums - uzdevums, darbību kopums, kas apraksta vienu loģisku "rezerves uzdevumu"
grafiks – grafiks, uzdevumu kopums ar izvēles norādi par uzdevuma izpildes laiku

Dublējuma konfigurācija tiek saglabāta yaml failā; vispārējā konfigurācijas struktūra:

  • Vispārīgie iestatījumi
  • Darbību sadaļa: šajā serverī izmantoto darbību apraksts
  • grafika sadaļa: visu uzdevumu (darbību kopu) apraksts un to palaišanas grafiks, izmantojot cron, ja šāda palaišana ir nepieciešama

Konfigurācijas piemēru var atrast šeit

Ko lietojumprogramma pašlaik var darīt:

  • Mums tiek atbalstītas galvenās darbības: PostgreSQL dublēšana caur pg_dump, failu sistēmas direktoriju dublēšana caur tar; operācijas ar ārējo atmiņu; rsync starp direktorijiem; dublējuma pagriešana (veco kopiju dzēšana)
  • ārēja skripta izsaukšana
  • atsevišķa uzdevuma manuāla izpilde
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • varat pievienot (vai noņemt) vienu uzdevumu vai visu grafiku crontab
    /opt/KristaBackup/KristaBackup.py enable all
  • ģenerējot sprūda failu, pamatojoties uz dublējuma rezultātiem. Šī funkcija ir noderīga kopā ar Zabbix, lai uzraudzītu dublējumus
  • var strādāt fonā webapi vai tīmekļa režīmā
    /opt/KristaBackup/KristaBackup.py web start [--api]

Atšķirība starp režīmiem: webapi pašam nav tīmekļa saskarnes, bet lietojumprogramma reaģē uz pieprasījumiem no citas instances. Tīmekļa režīmam ir jāinstalē kolba un vairākas papildu pakotnes, un tas nav pieņemams visur, piemēram, sertificētajā AstraLinux SE.

Izmantojot tīmekļa saskarni, varat skatīt pievienoto serveru dublējumu statusu un žurnālus: “tīmekļa instance” pieprasa datus no “rezerves gadījumiem”, izmantojot API. Piekļuvei tīmeklim ir nepieciešama autorizācija, piekļuvei Webapi nav.

Vēl viena rezerves kopija - vairāk nekā skripts, vienkāršāka nekā sistēma

Nepareizu dublējumu žurnāli ir atzīmēti ar krāsu: brīdinājums – dzeltens, kļūda – sarkans.

Vēl viena rezerves kopija - vairāk nekā skripts, vienkāršāka nekā sistēma

Vēl viena rezerves kopija - vairāk nekā skripts, vienkāršāka nekā sistēma

Ja administratoram nav nepieciešama krāpšanās lapa par parametriem un serveru operētājsistēmas ir viendabīgas, varat apkopot failu un izplatīt gatavo paketi.

Mēs izplatām šo utilītu galvenokārt caur Ansible, vispirms izlaižot to dažiem vismazāk svarīgiem serveriem un pēc testēšanas visiem pārējiem.

Rezultātā mēs saņēmām kompaktu, atsevišķu kopēšanas utilītu, ko var automatizēt un ko var izmantot pat nepieredzējuši administratori. Mums tas ir ērti - varbūt noderēs arī jums?

Avots: www.habr.com

Pievieno komentāru