Yana bir zaxira - skriptdan ko'ra ko'proq, tizimdan oddiyroq

Ko'p zaxira tizimlari mavjud, ammo agar xizmat ko'rsatilayotgan serverlar turli mintaqalar va mijozlar bo'ylab tarqalib ketgan bo'lsa va siz operatsion tizim bilan shug'ullanishingiz kerak bo'lsa nima qilish kerak?

Yana bir zaxira - skriptdan ko'ra ko'proq, tizimdan oddiyroq

Hayrli kun, Xabr!
Mening ismim Natalya. Men NPO Krista ilovasi ma'murlari guruhining guruh rahbariman. Biz kompaniyamizning loyiha guruhi uchun Opsmiz. Bizda juda o'ziga xos vaziyat bor: biz dasturiy ta'minotni kompaniyamiz serverlarida ham, mijozlar saytlarida joylashgan serverlarda ham o'rnatamiz va ularga xizmat ko'rsatamiz. Bunday holda, butun serverni zaxiralashning hojati yo'q. Faqat "muhim ma'lumotlar" muhim: DBMS va alohida fayl tizimi kataloglari. Albatta, mijozlar o'zlarining zaxira qoidalariga ega (yoki yo'q) va ko'pincha u erda zaxira nusxalarini saqlash uchun qandaydir tashqi xotirani taqdim etadilar. Bunday holda, zaxira nusxasini yaratgandan so'ng, biz tashqi xotiraga yuborishni ta'minlaymiz.

Bir muncha vaqt zaxira qilish uchun biz bash skripti bilan ishladik, lekin konfiguratsiya variantlari o'sishi bilan bu skriptning murakkabligi mutanosib ravishda o'sdi va bir nuqtada biz uni "yerga yo'q qilishimiz kerak, keyin esa". ...”.

Tayyor echimlar turli sabablarga ko'ra mos emas edi: zaxira nusxalarini markazsizlashtirish zarurati, mijozda zaxira nusxalarini mahalliy saqlash talabi, sozlashning murakkabligi, import o'rnini bosish, kirish cheklovlari.

Bizga o'zimizdan biror narsa yozish osonroq tuyuldi. Shu bilan birga, men keyingi N yil uchun bizning ahvolimiz uchun etarli bo'lgan, ammo potentsial doirani kengaytirish imkoniyatiga ega bo'lgan narsani olishni xohlardim.

Vazifa shartlari quyidagicha edi:

  1. asosiy zaxira nusxasi avtonom va mahalliy ishlaydi
  2. zaxira va jurnallarni saqlash har doim mijoz tarmog'ida
  3. misol modullardan iborat - o'ziga xos "konstruktor"
  4. joriy Linux distributivlari, jumladan, eskirganlari bilan muvofiqligi talab qilinadi, potentsial o'zaro faoliyat platformalar maqsadga muvofiqdir
  5. Misol bilan ishlash uchun ssh orqali kirish kifoya; qo'shimcha portlarni ochish shart emas
  6. sozlash va ishlatishning maksimal qulayligi
  7. turli serverlardagi zahira nusxalari holatini markaziy ko'rish imkonini beruvchi alohida nusxaga ega bo'lish mumkin (lekin shart emas).

Bu erda biz nimaga erishganimizni ko'rishingiz mumkin: github.com/javister/krista-backup
Dasturiy ta'minot python3 da yozilgan; Debian, Ubuntu, CentOS, AstraLinux 1.6 da ishlaydi.

Hujjatlar omborning docs katalogiga joylashtirilgan.

Tizim ishlaydigan asosiy tushunchalar:
harakat - bitta atom operatsiyasini amalga oshiradigan harakat (ma'lumotlar bazasini zaxiralash, katalogni zahiralash, A katalogidan B katalogiga o'tkazish va boshqalar). Mavjud harakatlar asosiy/amallar katalogida joylashgan
vazifa - vazifa, bitta mantiqiy "zaxira vazifasini" tavsiflovchi harakatlar to'plami
jadval - jadval, topshiriqni bajarish vaqtini ixtiyoriy ko'rsatuvchi vazifalar to'plami

Zaxira konfiguratsiyasi yaml faylida saqlanadi; Umumiy konfiguratsiya tuzilishi:

  • Umumiy sozlamalar
  • harakatlar bo'limi: ushbu serverda ishlatiladigan harakatlar tavsifi
  • jadval bo'limi: barcha vazifalarning tavsifi (harakatlar to'plami) va ularni cron tomonidan ishga tushirish jadvali, agar bunday ishga tushirish kerak bo'lsa

Misol konfiguratsiyasini bu erda topish mumkin

Ilova hozirda nima qila oladi:

  • Biz uchun asosiy operatsiyalar qo'llab-quvvatlanadi: pg_dump orqali PostgreSQL zaxiralash, tar orqali fayl tizimi katalogini zaxiralash; tashqi xotira bilan operatsiyalar; kataloglar o'rtasida rsync; zaxira nusxasini aylantirish (eski nusxalarni o'chirish)
  • tashqi skriptni chaqirish
  • alohida vazifani qo'lda bajarish
    /opt/KristaBackup/KristaBackup.py run make_full_dump
  • crontabga bitta vazifani yoki butun jadvalni qo'shishingiz (yoki olib tashlashingiz) mumkin
    /opt/KristaBackup/KristaBackup.py enable all
  • zaxira natijalari asosida trigger faylini yaratish. Bu funksiya Zabbix bilan birgalikda zaxira nusxalarini kuzatish uchun foydalidir
  • webapi yoki veb rejimida fonda ishlashi mumkin
    /opt/KristaBackup/KristaBackup.py web start [--api]

Rejimlar orasidagi farq: webapi-ning o'zi veb-interfeysga ega emas, lekin dastur boshqa misoldan kelgan so'rovlarga javob beradi. Veb-rejim uchun siz kolba va bir nechta qo'shimcha paketlarni o'rnatishingiz kerak va buni hamma joyda qabul qilib bo'lmaydi, masalan, sertifikatlangan AstraLinux SE da.

Veb-interfeys orqali siz ulangan serverlarning zaxira nusxalari holati va jurnallarini ko'rishingiz mumkin: "veb-namuna" API orqali "zaxira nusxalari" dan ma'lumotlarni so'raydi. Internetga kirish avtorizatsiyani talab qiladi, webapiga kirish esa talab qilmaydi.

Yana bir zaxira - skriptdan ko'ra ko'proq, tizimdan oddiyroq

Noto'g'ri zaxira nusxalari jurnallari rang bilan belgilanadi: ogohlantirish - sariq, xato - qizil.

Yana bir zaxira - skriptdan ko'ra ko'proq, tizimdan oddiyroq

Yana bir zaxira - skriptdan ko'ra ko'proq, tizimdan oddiyroq

Agar administratorga parametrlar bo'yicha cheat varaq kerak bo'lmasa va server operatsion tizimlari bir hil bo'lsa, siz faylni kompilyatsiya qilishingiz va tayyor paketni tarqatishingiz mumkin.

Biz ushbu yordam dasturini asosan Ansible orqali tarqatamiz, uni avval ba'zi ahamiyatsiz serverlarga tarqatamiz va qolgan barcha serverlarga sinovdan o'tkazamiz.

Natijada, biz avtomatlashtirilgan va hatto tajribasiz ma'murlar ham foydalanishi mumkin bo'lgan ixcham, mustaqil nusxa ko'chirish yordam dasturini oldik. Bu biz uchun qulay - balki siz uchun ham foydalidir?

Manba: www.habr.com

a Izoh qo'shish