Ένα άλλο αντίγραφο ασφαλείας - περισσότερο από ένα σενάριο, πιο απλό από ένα σύστημα

Υπάρχουν πολλά συστήματα δημιουργίας αντιγράφων ασφαλείας, αλλά τι να κάνετε εάν οι εξυπηρετούμενοι διακομιστές είναι διάσπαρτοι σε διαφορετικές περιοχές και πελάτες και πρέπει να αρκεστείτε στο λειτουργικό σύστημα;

Ένα άλλο αντίγραφο ασφαλείας - περισσότερο από ένα σενάριο, πιο απλό από ένα σύστημα

Καλησπερα, Habr!
Το όνομά μου είναι Ναταλία. Είμαι ο επικεφαλής της ομάδας της ομάδας διαχειριστών εφαρμογών στο NPO Krista. Είμαστε Ops για την ομάδα έργων της εταιρείας μας. Έχουμε μια μάλλον μοναδική κατάσταση: εγκαθιστούμε και συντηρούμε το λογισμικό μας τόσο στους διακομιστές της εταιρείας μας όσο και σε διακομιστές που βρίσκονται στις τοποθεσίες των πελατών. Σε αυτήν την περίπτωση, δεν υπάρχει ανάγκη δημιουργίας αντιγράφων ασφαλείας ολόκληρου του διακομιστή. Μόνο τα «ουσιώδη δεδομένα» είναι σημαντικά: το DBMS και οι μεμονωμένοι κατάλογοι συστημάτων αρχείων. Φυσικά, οι πελάτες έχουν (ή δεν έχουν) τους δικούς τους κανονισμούς δημιουργίας αντιγράφων ασφαλείας και συχνά παρέχουν κάποιο είδος εξωτερικού χώρου αποθήκευσης για την αποθήκευση αντιγράφων ασφαλείας εκεί. Σε αυτή την περίπτωση, αφού δημιουργήσουμε ένα αντίγραφο ασφαλείας, διασφαλίζουμε την αποστολή σε εξωτερικό χώρο αποθήκευσης.

Για κάποιο χρονικό διάστημα, για λόγους δημιουργίας αντιγράφων ασφαλείας, αρκεστήκαμε σε ένα σενάριο bash, αλλά καθώς αυξάνονταν οι επιλογές διαμόρφωσης, η πολυπλοκότητα αυτού του σεναρίου αυξανόταν αναλογικά και κάποια στιγμή καταλήξαμε στην ανάγκη να το «καταστήσουμε στο έδαφος και μετά ...”.

Οι έτοιμες λύσεις δεν ήταν κατάλληλες για διάφορους λόγους: λόγω της ανάγκης αποκέντρωσης των αντιγράφων ασφαλείας, της απαίτησης αποθήκευσης αντιγράφων τοπικά στον πελάτη, της πολυπλοκότητας της εγκατάστασης, της αντικατάστασης εισαγωγής, των περιορισμών πρόσβασης.

Μας φαινόταν ότι ήταν πιο εύκολο να γράψουμε κάτι δικό μας. Ταυτόχρονα, ήθελα να πάρω κάτι που θα ήταν αρκετό για την κατάστασή μας για τα επόμενα Ν χρόνια, αλλά με δυνατότητα πιθανής επέκτασης του πεδίου εφαρμογής.

Οι προϋποθέσεις του έργου ήταν οι εξής:

  1. το βασικό στιγμιότυπο δημιουργίας αντιγράφων ασφαλείας είναι αυτόνομο και εκτελείται τοπικά
  2. Η αποθήκευση των αντιγράφων ασφαλείας και των αρχείων καταγραφής βρίσκεται πάντα εντός του δικτύου του πελάτη
  3. ένα παράδειγμα αποτελείται από ενότητες - ένα είδος "κατασκευαστή"
  4. απαιτείται συμβατότητα με τις τρέχουσες διανομές Linux, συμπεριλαμβανομένων των ξεπερασμένων, είναι επιθυμητή η πιθανή cross-platform
  5. Για να εργαστείτε με το παράδειγμα, αρκεί η πρόσβαση μέσω ssh· το άνοιγμα πρόσθετων θυρών δεν είναι απαραίτητο
  6. μέγιστη ευκολία εγκατάστασης και λειτουργίας
  7. είναι δυνατό (αλλά όχι απαραίτητο) να έχετε μια ξεχωριστή παρουσία που σας επιτρέπει να βλέπετε κεντρικά την κατάσταση των αντιγράφων ασφαλείας από διαφορετικούς διακομιστές

Μπορείτε να δείτε τι καταλήξαμε εδώ: github.com/javister/krista-backup
Το λογισμικό είναι γραμμένο σε python3. λειτουργεί σε Debian, Ubuntu, CentOS, AstraLinux 1.6.

Η τεκμηρίωση δημοσιεύεται στον κατάλογο εγγράφων του αποθετηρίου.

Βασικές έννοιες που λειτουργεί το σύστημα:
δράση – μια ενέργεια που υλοποιεί μία ατομική λειτουργία (δημιουργία αντιγράφων ασφαλείας βάσης δεδομένων, δημιουργία αντιγράφων ασφαλείας καταλόγου, μεταφορά από τον κατάλογο Α στον κατάλογο Β, κ.λπ.). Οι υπάρχουσες ενέργειες βρίσκονται στον κατάλογο πυρήνα/ενέργειες
task – task, ένα σύνολο ενεργειών που περιγράφουν μια λογική «εφεδρική εργασία»
χρονοδιάγραμμα – χρονοδιάγραμμα, ένα σύνολο εργασιών με προαιρετική ένδειξη του χρόνου εκτέλεσης της εργασίας

Η διαμόρφωση του αντιγράφου ασφαλείας αποθηκεύεται σε ένα αρχείο yaml. γενική δομή διαμόρφωσης:

  • Γενικές Ρυθμίσεις
  • ενότητα ενεργειών: περιγραφή των ενεργειών που χρησιμοποιούνται σε αυτόν τον διακομιστή
  • ενότητα χρονοδιαγράμματος: περιγραφή όλων των εργασιών (σύνολα ενεργειών) και χρονοδιάγραμμα για την εκκίνησή τους ανά cron, εάν απαιτείται μια τέτοια εκκίνηση

Ένα παράδειγμα διαμόρφωσης μπορείτε να βρείτε εδώ

Τι μπορεί να κάνει η εφαρμογή αυτή τη στιγμή:

  • Υποστηρίζονται οι κύριες λειτουργίες για εμάς: δημιουργία αντιγράφων ασφαλείας PostgreSQL μέσω pg_dump, δημιουργία αντιγράφων ασφαλείας καταλόγου συστήματος αρχείων μέσω tar. λειτουργίες με εξωτερική αποθήκευση· rsync μεταξύ καταλόγων. εναλλαγή αντιγράφων ασφαλείας (διαγραφή παλαιών αντιγράφων)
  • καλώντας ένα εξωτερικό σενάριο
  • χειροκίνητη εκτέλεση μιας ξεχωριστής εργασίας
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • μπορείτε να προσθέσετε (ή να αφαιρέσετε) μια μεμονωμένη εργασία ή ολόκληρο το πρόγραμμα στο crontab
    /opt/KristaBackup/KristaBackup.py enable all
  • δημιουργία ενός αρχείου ενεργοποίησης με βάση τα αποτελέσματα δημιουργίας αντιγράφων ασφαλείας. Αυτή η λειτουργία είναι χρήσιμη σε συνδυασμό με το Zabbix για την παρακολούθηση των αντιγράφων ασφαλείας
  • μπορεί να λειτουργήσει στο παρασκήνιο σε λειτουργία webapi ή web
    /opt/KristaBackup/KristaBackup.py web start [--api]

Η διαφορά μεταξύ των λειτουργιών: το webapi δεν έχει η ίδια διεπαφή ιστού, αλλά η εφαρμογή ανταποκρίνεται σε αιτήματα από άλλη παρουσία. Για τη λειτουργία web, πρέπει να εγκαταστήσετε το flask και πολλά πρόσθετα πακέτα, και αυτό δεν είναι αποδεκτό παντού, για παράδειγμα στο πιστοποιημένο AstraLinux SE.

Μέσω της διεπαφής ιστού, μπορείτε να δείτε την κατάσταση και τα αρχεία καταγραφής των αντιγράφων ασφαλείας των συνδεδεμένων διακομιστών: η "παρουσίαση ιστού" ζητά δεδομένα από τις "παρουσίες αντιγράφων ασφαλείας" μέσω του API. Η πρόσβαση στο web απαιτεί εξουσιοδότηση, η πρόσβαση στο webapi όχι.

Ένα άλλο αντίγραφο ασφαλείας - περισσότερο από ένα σενάριο, πιο απλό από ένα σύστημα

Τα αρχεία καταγραφής εσφαλμένων αντιγράφων ασφαλείας επισημαίνονται με χρώμα: προειδοποίηση – κίτρινο, σφάλμα – κόκκινο.

Ένα άλλο αντίγραφο ασφαλείας - περισσότερο από ένα σενάριο, πιο απλό από ένα σύστημα

Ένα άλλο αντίγραφο ασφαλείας - περισσότερο από ένα σενάριο, πιο απλό από ένα σύστημα

Εάν ο διαχειριστής δεν χρειάζεται ένα φύλλο εξαπάτησης για τις παραμέτρους και τα λειτουργικά συστήματα διακομιστή είναι ομοιογενή, μπορείτε να μεταγλωττίσετε το αρχείο και να διανείμετε το έτοιμο πακέτο.

Διανέμουμε αυτό το βοηθητικό πρόγραμμα κυρίως μέσω του Ansible, διαθέτοντας το πρώτα σε μερικούς από τους λιγότερο σημαντικούς διακομιστές και μετά από δοκιμή σε όλους τους υπόλοιπους.

Ως αποτέλεσμα, λάβαμε ένα συμπαγές, αυτόνομο βοηθητικό πρόγραμμα αντιγραφής που μπορεί να αυτοματοποιηθεί και μπορεί να χρησιμοποιηθεί ακόμη και από άπειρους διαχειριστές. Είναι βολικό για εμάς - ίσως θα είναι χρήσιμο και για εσάς;

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο