Өөр нэг нөөц - скриптээс илүү, системээс илүү хялбар

Нөөцлөх олон систем байдаг, гэхдээ үйлчилдэг серверүүд өөр өөр бүс нутаг, үйлчлүүлэгчидээр тархсан бөгөөд үйлдлийн системтэй ажиллах шаардлагатай бол яах вэ?

Өөр нэг нөөц - скриптээс илүү, системээс илүү хялбар

Сайн байна уу, Хабр!
Намайг Наталья гэдэг. Би NPO Криста дахь програмын админуудын бүлгийн багийн ахлагч. Бид компанийхаа төслийн бүлгийн үйл ажиллагаа явуулдаг. Бидэнд маш өвөрмөц нөхцөл байдал тулгараад байна: бид програм хангамжаа компанийнхаа серверүүд болон үйлчлүүлэгчдийн сайт дээр байрладаг серверүүд дээр суулгаж, засвар үйлчилгээ хийдэг. Энэ тохиолдолд серверийг бүхэлд нь нөөцлөх шаардлагагүй болно. Зөвхөн "чухал өгөгдөл" чухал: DBMS болон тусдаа файлын системийн лавлахууд. Мэдээжийн хэрэг, үйлчлүүлэгчид өөрсдийн нөөцлөлтийн дүрэм журамтай (эсвэл байхгүй) бөгөөд ихэвчлэн нөөцлөлтийг хадгалахад зориулж ямар нэгэн гадаад санах ойгоор хангадаг. Энэ тохиолдолд нөөцлөлт үүсгэсний дараа бид гадаад санах ой руу илгээхийг баталгаажуулдаг.

Хэсэг хугацааны турш нөөцлөх зорилгоор бид bash скриптийг ашиглаж байсан боловч тохиргооны сонголтууд нэмэгдэхийн хэрээр энэ скриптийн нарийн төвөгтэй байдал пропорциональ хэмжээгээр нэмэгдэж, нэг удаа бид "үүнийг газар дээр нь устгаж, дараа нь устгах шаардлагатай болсон. ...”.

Бэлэн шийдэл нь янз бүрийн шалтгааны улмаас тохиромжгүй байсан: нөөцлөлтийн төвлөрлийг сааруулах хэрэгцээ, үйлчлүүлэгчид нөөцлөлтийг дотооддоо хадгалах шаардлага, тохиргооны нарийн төвөгтэй байдал, импортыг орлуулах, хандалтын хязгаарлалт зэргээс шалтгаалан.

Бидэнд өөрийнхөөрөө юм бичих нь амар юм шиг санагдсан. Үүний зэрэгцээ би дараагийн N жилд бидний нөхцөл байдалд хангалттай, гэхдээ хамрах хүрээг өргөжүүлэх боломжтой зүйлийг авахыг хүссэн.

Ажлын нөхцөл дараах байдалтай байв.

  1. үндсэн нөөц жишээ нь бие даасан бөгөөд орон нутагт ажилладаг
  2. Нөөц болон бүртгэлийг хадгалах нь үргэлж үйлчлүүлэгчийн сүлжээнд байдаг
  3. жишээ нь модулиудаас бүрддэг - нэг төрлийн "бүтээгч"
  4. Одоогийн Линукс түгээлтүүдтэй нийцтэй байх шаардлагатай, түүний дотор хуучирсан, боломжит хөндлөн платформыг ашиглах нь зүйтэй
  5. Энэ жишээтэй ажиллахын тулд ssh-ээр хандах нь хангалттай бөгөөд нэмэлт порт нээх шаардлагагүй
  6. тохируулах, ажиллуулах хамгийн хялбар байдал
  7. өөр өөр серверүүдээс нөөцлөлтийн статусыг төвлөрсөн байдлаар харах боломжийг олгодог тусдаа жишээтэй байх боломжтой (гэхдээ шаардлагагүй).

Бидний юу бодож олсныг та эндээс харж болно: github.com/javister/krista-backup
Програм хангамж нь python3 дээр бичигдсэн; Debian, Ubuntu, CentOS, AstraLinux 1.6 дээр ажилладаг.

Баримт бичгийг хадгалах газрын docs лавлах хэсэгт байрлуулсан.

Системийн үйл ажиллагааны үндсэн ойлголтууд:
үйлдэл – нэг атомын үйлдлийг хэрэгжүүлэх үйлдэл (мэдээллийн санг нөөцлөх, лавлахын нөөцлөх, А лавлахаас В лавлах руу шилжүүлэх гэх мэт). Одоо байгаа үйлдлүүд нь үндсэн/үйл ажиллагааны лавлах хэсэгт байрладаг
даалгавар - даалгавар, нэг логик "нөөц даалгавар" -ыг тодорхойлсон үйлдлийн багц
хуваарь - хуваарь, даалгаврын гүйцэтгэлийн хугацааг заавал зааж өгсөн даалгаврын багц

Нөөц тохиргоо нь yaml файлд хадгалагддаг; ерөнхий тохиргооны бүтэц:

  • Ерөнхий Тохиргоо
  • Үйлдлийн хэсэг: энэ сервер дээр ашигласан үйлдлийн тайлбар
  • Хуваарийн хэсэг: бүх даалгаврын тодорхойлолт (үйл ажиллагааны багц) ба хэрэв ийм хөөргөх шаардлагатай бол тэдгээрийг кроноор эхлүүлэх хуваарь.

Тохиргооны жишээг эндээс олж болно

Аппликешн одоогоор юу хийж чадах вэ:

  • Бидний үндсэн үйлдлүүдийг дэмждэг: 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-д хандах шаардлагагүй.

Өөр нэг нөөц - скриптээс илүү, системээс илүү хялбар

Буруу нөөцлөлтийн бүртгэлийг өнгөөр ​​тэмдэглэсэн: анхааруулга - шар, алдаа - улаан.

Өөр нэг нөөц - скриптээс илүү, системээс илүү хялбар

Өөр нэг нөөц - скриптээс илүү, системээс илүү хялбар

Хэрэв администраторт параметрийн талаархи cheat хуудас шаардлагагүй бөгөөд серверийн үйлдлийн системүүд нэгэн төрлийн байвал та файлыг эмхэтгэж, бэлэн багцыг тарааж болно.

Бид энэ хэрэгслийг голчлон Ansible-ээр дамжуулан түгээж, хамгийн чухал ач холбогдолгүй зарим серверт тарааж, бусад бүх серверт туршсаны дараа түгээдэг.

Үүний үр дүнд бид автоматжуулж болох, туршлагагүй администраторуудад ч ашиглах боломжтой авсаархан, бие даасан хуулбар хэрэгслийг хүлээн авлаа. Энэ нь бидэнд тохиромжтой - магадгүй энэ нь танд хэрэгтэй байх болов уу?

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх