Тағы бір сақтық көшірме – сценарийден артық, жүйеден оңайырақ

Көптеген сақтық көшірме жүйелері бар, бірақ егер қызмет көрсетілетін серверлер әртүрлі аймақтар мен клиенттерге шашыраңқы болса және операциялық жүйемен айналысу керек болса не істеу керек?

Тағы бір сақтық көшірме – сценарийден артық, жүйеден оңайырақ

Қайырлы күн, Хабр!
Менің атым Наталья. Мен NPO Krista қолданбасының әкімшілері тобының топ жетекшісімін. Біз компаниямыздың жобалық тобына жауаптымыз. Бізде өте ерекше жағдай бар: біз бағдарламалық жасақтаманы компаниямыздың серверлерінде де, клиенттердің сайттарында орналасқан серверлерде де орнатамыз және қолдаймыз. Бұл жағдайда бүкіл сервердің сақтық көшірмесін жасаудың қажеті жоқ. Тек «маңызды деректер» маңызды: ДҚБЖ және жеке файлдық жүйе каталогтары. Әрине, клиенттерде сақтық көшірме жасаудың жеке ережелері бар (немесе жоқ) және көбінесе сақтық көшірмелерді сақтау үшін қандай да бір сыртқы жадты қамтамасыз етеді. Бұл жағдайда сақтық көшірме жасағаннан кейін біз сыртқы жадқа жіберуді қамтамасыз етеміз.

Біраз уақыт бойы сақтық көшірме жасау үшін біз bash сценарийімен айналыстық, бірақ конфигурация опциялары өскен сайын бұл сценарийдің күрделілігі пропорционалды түрде өсті және бір сәтте біз оны «жерге қирату, содан кейін оны жою» қажеттілігіне келдік. ...».

Дайын шешімдер әртүрлі себептерге байланысты жарамсыз болды: резервтік көшірмелерді орталықсыздандыру қажеттілігіне байланысты, сақтық көшірмелерді клиентте жергілікті сақтау талабы, орнатудың күрделілігі, импортты алмастыру, кіру шектеулері.

Бізге өзімізден бірдеңе жазу оңайырақ болып көрінді. Сонымен қатар, мен келесі N жылдағы жағдайымызға жеткілікті болатын, бірақ қолдану аясын кеңейту мүмкіндігі бар нәрсені алғым келді.

Тапсырманың шарттары төмендегідей болды:

  1. негізгі сақтық көшірме данасы автономды және жергілікті түрде жұмыс істейді
  2. сақтық көшірмелер мен журналдарды сақтау әрқашан клиент желісінде болады
  3. данасы модульдерден тұрады – «конструктордың» бір түрі
  4. ағымдағы Linux дистрибутивтерімен, соның ішінде ескіргендерімен үйлесімділік қажет, потенциалды кросс-платформа қажет
  5. Данамен жұмыс істеу үшін ssh арқылы кіру жеткілікті, қосымша порттарды ашу қажет емес
  6. орнату мен пайдаланудың максималды жеңілдігі
  7. әртүрлі серверлерден сақтық көшірмелердің күйін орталықтандырылған түрде көруге мүмкіндік беретін бөлек дананы болуы мүмкін (бірақ қажет емес).

Мұнда не ойлап тапқанымызды көре аласыз: github.com/javister/krista-backup
Бағдарлама python3 тілінде жазылған; Debian, Ubuntu, CentOS, AstraLinux 1.6 жүйелерінде жұмыс істейді.

Құжаттама репозиторийдің docs каталогында орналастырылған.

Жүйе жұмыс істейтін негізгі түсініктер:
әрекет – бір атомдық операцияны жүзеге асыратын әрекет (деректер базасын резервтік көшіру, каталогтың резервтік көшірмесін жасау, А каталогынан В каталогына тасымалдау және т.б.). Бар әрекеттер негізгі/әрекеттер каталогында орналасқан
тапсырма – тапсырма, бір логикалық «сақтық көшірме тапсырмасын» сипаттайтын әрекеттер жиынтығы
кесте – кесте, тапсырманың орындалу уақытының қосымша көрсеткіші бар тапсырмалар жиынтығы

Сақтық көшірме конфигурациясы yaml файлында сақталады; жалпы конфигурация құрылымы:

  • Жалпы параметрлер
  • әрекеттер бөлімі: осы серверде қолданылатын әрекеттердің сипаттамасы
  • кесте бөлімі: барлық тапсырмалардың (әрекеттер жиынтығының) сипаттамасы және оларды cron арқылы іске қосу кестесі, егер мұндай іске қосу қажет болса

Мысал конфигурациясын мына жерден табуға болады

Қолданба қазіргі уақытта не істей алады:

  • Біз үшін негізгі операцияларға қолдау көрсетіледі: pg_dump арқылы PostgreSQL сақтық көшірмесі, tar арқылы файлдық жүйе каталогының сақтық көшірмесі; сыртқы жадымен операциялар; каталогтар арасындағы rsync; сақтық көшірме жасау (ескі көшірмелерді жою)
  • сыртқы сценарийді шақыру
  • жеке тапсырманы қолмен орындау
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • crontab бағдарламасына бір тапсырманы немесе бүкіл кестені қосуға (немесе жоюға) болады
    /opt/KristaBackup/KristaBackup.py enable all
  • сақтық көшірме нәтижелеріне негізделген триггер файлын жасау. Бұл функция сақтық көшірмелерді бақылау үшін Zabbix бағдарламасымен бірге пайдалы
  • webapi немесе веб режимінде фондық режимде жұмыс істей алады
    /opt/KristaBackup/KristaBackup.py web start [--api]

Режимдер арасындағы айырмашылық: webapi-де веб-интерфейс жоқ, бірақ қолданба басқа дананың сұрауларына жауап береді. Веб режимі үшін колбаны және бірнеше қосымша пакеттерді орнату қажет және бұл барлық жерде қолайлы емес, мысалы, сертификатталған AstraLinux SE жүйесінде.

Веб-интерфейс арқылы қосылған серверлердің сақтық көшірмелерінің күйі мен журналдарын көруге болады: «веб-данасы» API арқылы «сақтық көшірмелерден» деректерді сұрайды. Вебке кіру авторизацияны қажет етеді, webapi-ге кіру қажет емес.

Тағы бір сақтық көшірме – сценарийден артық, жүйеден оңайырақ

Қате сақтық көшірмелердің журналдары түспен белгіленеді: ескерту – сары, қате – қызыл.

Тағы бір сақтық көшірме – сценарийден артық, жүйеден оңайырақ

Тағы бір сақтық көшірме – сценарийден артық, жүйеден оңайырақ

Егер әкімшіге параметрлер бойынша алдау парағы қажет болмаса және сервердің операциялық жүйелері біртекті болса, файлды құрастыруға және дайын буманы таратуға болады.

Біз бұл қызметтік бағдарламаны негізінен Ansible арқылы таратамыз, оны алдымен кейбір маңыздылығы төмен серверлерге шығарамыз, ал қалғандарына сынақтан өткізгеннен кейін.

Нәтижесінде біз автоматтандырылуы мүмкін және тәжірибесіз әкімшілер де пайдалана алатын ықшам, дербес көшіру утилитасын алдық. Бұл бізге ыңғайлы - мүмкін сізге де пайдалы болар?

Ақпарат көзі: www.habr.com

пікір қалдыру