Нөөц 7-р хэсэг: Дүгнэлт

Нөөц 7-р хэсэг: Дүгнэлт

Энэ тэмдэглэл нь нөөцлөх тухай мөчлөгийг дуусгана. Энэ нь нөөцлөлтөд тохиромжтой зориулалтын сервер (эсвэл VPS)-ийн логик зохион байгуулалтын талаар хэлэлцэхээс гадна гамшгийн үед нэг их зогсолтгүйгээр серверийг нөөцөөс хурдан сэргээх сонголтыг санал болгоно.

Эхний өгөгдөл

Зориулалтын сервер нь ихэвчлэн эхний түвшний RAID массив (толь) зохион байгуулахад зориулагдсан дор хаяж хоёр хатуу дисктэй байдаг. Энэ нь нэг диск эвдэрсэн тохиолдолд серверийг үргэлжлүүлэн ажиллуулахад шаардлагатай. Хэрэв энэ нь ердийн зориулалтын сервер бол SSD дээр идэвхтэй кэш хийх технологи бүхий тусдаа техник хангамжийн RAID хянагч байж болох бөгөөд ингэснээр ердийн хатуу дискүүдээс гадна нэг буюу хэд хэдэн SSD-г холбож болно. Заримдаа тусгай зориулалтын серверүүдийг санал болгодог бөгөөд үүнд зөвхөн SATADOM (жижиг дискүүд, бүтцийн хувьд SATA порттой холбогдсон флаш диск) эсвэл тусгай дотоод порттой холбогдсон энгийн жижиг (8-16 ГБ) флаш дискүүд байдаг. өгөгдлийг хадгалах системээс авсан бөгөөд тусгай хадгалах сүлжээгээр (Ethernet 10G, FC гэх мэт) холбогдсон бөгөөд хадгалах системээс шууд ачаалагдсан тусгай серверүүд байдаг. Би ийм сонголтыг авч үзэхгүй, учир нь ийм тохиолдолд серверийг нөөцлөх ажил нь хадгалах системийг хариуцдаг мэргэжилтэнд амархан дамждаг; ихэвчлэн агшин зуурын зураг үүсгэх төрөл бүрийн өмчийн технологи, суулгасан давхардал болон системийн администраторын бусад баяр баясгалан байдаг. , энэ цувралын өмнөх хэсгүүдэд хэлэлцсэн. Тусгай серверийн дискний массивын эзлэхүүн нь серверт холбогдсон дискний тоо, хэмжээ зэргээс шалтгаалан хэдэн арван терабайт хүрч болно. VPS-ийн хувьд эзлэхүүн нь илүү даруухан байдаг: ихэвчлэн 100 ГБ-аас ихгүй байдаг (гэхдээ үүнээс ч олон байдаг), ийм VPS-ийн тариф нь нэг хостын хамгийн хямд зориулалтын серверүүдээс илүү үнэтэй байдаг. VPS нь ихэвчлэн нэг дисктэй байдаг, учир нь түүний доор хадгалах систем (эсвэл хэт нийлсэн зүйл) байх болно. Заримдаа VPS нь өөр өөр зорилгоор өөр өөр шинж чанартай хэд хэдэн дисктэй байдаг:

  • жижиг систем - үйлдлийн системийг суулгах;
  • том - хэрэглэгчийн өгөгдлийг хадгалах.

Хяналтын самбарыг ашиглан системийг дахин суулгахад хэрэглэгчийн өгөгдөл бүхий дискийг дарж бичихгүй, харин системийн дискийг бүрэн дүүргэдэг. Түүнчлэн, VPS-ийн хувьд хост нь VPS (эсвэл диск)-ийн төлөвийн агшин зуурын зургийг авах товчлуурыг санал болгож болох боловч хэрэв та өөрийн үйлдлийн системийг суулгасан эсвэл VPS дотор хүссэн үйлчилгээгээ идэвхжүүлэхээ мартсан бол зарим нь өгөгдөл алдагдсан хэвээр байж магадгүй. Товчлуураас гадна өгөгдөл хадгалах үйлчилгээг ихэвчлэн санал болгодог бөгөөд ихэнхдээ маш хязгаарлагдмал байдаг. Энэ нь ихэвчлэн FTP эсвэл SFTP, заримдаа SSH-тай хамт, задалсан бүрхүүлтэй (жишээ нь, rbash) эсвэл эрх бүхий_түлхүүрээр (ForcedCommand-р) тушаалуудыг ажиллуулах хязгаарлалттай данс юм.

Зориулалтын сервер нь сүлжээнд 1 Gbps хурдтай хоёр портоор холбогддог бөгөөд заримдаа эдгээр нь 10 Gbps хурдтай картууд байж болно. VPS нь ихэвчлэн нэг сүлжээний интерфейстэй байдаг. Ихэнх тохиолдолд дата төвүүд нь дата төвийн сүлжээний хурдыг хязгаарладаггүй, харин интернетэд нэвтрэх хурдыг хязгаарладаг.

Ийм зориулалтын сервер эсвэл VPS-ийн ердийн ачаалал нь вэб сервер, мэдээллийн сан, програмын сервер юм. Заримдаа вэб сервер эсвэл мэдээллийн сан зэрэг янз бүрийн нэмэлт туслах үйлчилгээг суулгаж болно: хайлтын систем, шуудангийн систем гэх мэт.

Тусгайлан бэлтгэсэн сервер нь нөөц хуулбарыг хадгалах орон зай болж ажилладаг тул бид дараа нь энэ талаар дэлгэрэнгүй бичих болно.

Дискний системийн логик зохион байгуулалт

Хэрэв танд RAID хянагч эсвэл нэг дисктэй VPS байгаа бөгөөд дискний дэд системийг ажиллуулах тусгай сонголт байхгүй бол (жишээлбэл, мэдээллийн сангийн тусдаа хурдан диск) бүх сул зайг дараах байдлаар хуваана: нэг хуваалт. үүсгэгдсэн бөгөөд дээр нь LVM эзлэхүүний бүлгийг үүсгэсэн бөгөөд дотор нь хэд хэдэн боть үүсдэг: үндсэн файлын систем болгон ашигладаг ижил хэмжээтэй 2 жижиг боть (шинэчлэлийн явцад нэг нэгээр нь солигдож, хурдан буцаах боломжтой, Энэ санааг Calculate Linux түгээлтээс авсан), өөр нэг нь своп хуваалтад зориулагдсан, үлдсэн сул зай нь жижиг хэсгүүдэд хуваагдаж, бүрэн хэмжээний контейнер, виртуал машинд зориулсан диск, файлын үндсэн файлын систем болгон ашигладаг. /home дахь дансны системүүд (бүр данс нь өөрийн файлын системтэй), хэрэглээний контейнерт зориулсан файлын системүүд.

Анхаарах зүйл: боть нь бүрэн бие даасан байх ёстой, i.e. бие биенээсээ эсвэл үндсэн файлын системээс хамаарах ёсгүй. Виртуал машин эсвэл контейнерийн хувьд энэ цэг автоматаар ажиглагддаг. Хэрэв эдгээр нь програмын контейнер эсвэл гэрийн лавлах юм бол вэб сервер болон бусад үйлчилгээний тохиргооны файлуудыг аль болох эзлэхүүн хоорондын хамаарлыг арилгахын тулд салгах талаар бодох хэрэгтэй. Жишээлбэл, сайт бүр өөрийн хэрэглэгчээс ажилладаг, сайтын тохиргооны файлууд нь хэрэглэгчийн гэрийн лавлахад, вэб серверийн тохиргоонд /etc/nginx/conf.d/-ээр дамжуулан сайтын тохиргооны файлуудыг оруулаагүй болно..conf, мөн жишээ нь /home//configs/nginx/*.conf

Хэрэв хэд хэдэн диск байгаа бол та програм хангамжийн RAID массив үүсгэж болно (хэрэв хэрэгцээ, боломж байгаа бол SSD дээр кэшийг тохируулах), дээр нь дээр дурдсан дүрмийн дагуу LVM-ийг барьж болно. Мөн энэ тохиолдолд та ZFS эсвэл BtrFS ашиглаж болно, гэхдээ та энэ талаар хоёр удаа бодох хэрэгтэй: хоёулаа нөөцөд илүү нухацтай хандах шаардлагатай бөгөөд үүнээс гадна ZFS нь Линуксийн цөмд ороогүй болно.

Ашигласан схемээс үл хамааран дискэнд өөрчлөлт оруулах хурдыг урьдчилан тооцоолж, дараа нь агшин зуурын зураг үүсгэхэд шаардагдах сул зайны хэмжээг тооцоолох нь зүйтэй. Жишээлбэл, хэрэв манай сервер секундэд 10 мегабайтын хурдтай өгөгдөл бичдэг бол бүхэл бүтэн өгөгдлийн массивын хэмжээ 10 терабайт бол синхрончлолын хугацаа өдөрт хүрч болно (22 цаг - энэ нь хичнээн хэмжээний эзэлхүүнийг дамжуулах болно). сүлжээгээр 1 Gbps) - ойролцоогоор 800 ГБ нөөцлөх нь зүйтэй. Бодит байдал дээр энэ тоо бага байх болно, та үүнийг логик эзлэхүүний тоогоор аюулгүйгээр хувааж болно.

Хадгалах серверийн төхөөрөмжийг нөөцлөх

Нөөц хуулбарыг хадгалах серверийн гол ялгаа нь том, хямд, харьцангуй удаан диск юм. Орчин үеийн HDD нь нэг дискний 10ТБ зурвасыг аль хэдийн давсан тул массивыг дахин бүтээх эсвэл файлын системийг сэргээх явцад (хэдэн өдөр!) хоёр дахь диск эвдэрч болзошгүй тул хяналтын нийлбэр бүхий файлын систем эсвэл RAID ашиглах шаардлагатай байна. ачаалал нэмэгдэхэд. 1TB хүртэлх багтаамжтай дискний хувьд энэ нь тийм ч эмзэг биш байв. Тайлбарыг хялбарчлахын тулд дискний зайг ойролцоогоор ижил хэмжээтэй хоёр хэсэгт хуваасан гэж би бодож байна (дахин жишээ нь LVM ашиглан):

  • хэрэглэгчийн өгөгдлийг хадгалахад ашигладаг серверт тохирох хэмжээ (хамгийн сүүлд хийсэн нөөцлөлтийг баталгаажуулахын тулд тэдгээрт байршуулах болно);
  • BorgBackup репозитор болгон ашигладаг боть (нөөцлөлтийн өгөгдөл энд шууд очно).

Үйл ажиллагааны зарчим нь BorgBackup репозиторуудад зориулж сервер тус бүрт тусдаа боть үүсгэсэн бөгөөд байлдааны серверүүдийн өгөгдөл тэнд очдог. Хадгалах газрууд нь зөвхөн хавсаргах горимд ажилладаг бөгөөд энэ нь өгөгдлийг зориудаар устгах боломжийг арилгадаг бөгөөд хуучин нөөцлөлтөөс хадгалах сангуудын давхардал, үе үе цэвэрлэгээний улмаас (жилийн хуулбар үлддэг, сүүлийн жил сар бүр, сүүлийн сард долоо хоног бүр, Өнгөрсөн долоо хоногт, магадгүй онцгой тохиолдлуудад - сүүлийн өдрийн цаг тутамд: нийт 24 + 7 + 4 + 12 + жил бүр - сервер тус бүрт ойролцоогоор 50 хувь).
BorgBackup репозиторууд нь зөвхөн хавсаргах горимыг идэвхжүүлдэггүй бөгөөд үүний оронд .ssh/authorized_keys дээрх ForcedCommand-г дараах байдлаар ашигладаг:

from="адрес сервера",command="/usr/local/bin/borg serve --append-only --restrict-to-path /home/servername/borgbackup/",no-pty,no-agent-forwarding,no-port-forwarding,no-X11-forwarding,no-user-rc AAAAA.......

Заасан зам нь borg-ийн дээд талд ороосон скриптийг агуулдаг бөгөөд энэ нь параметр бүхий хоёртын файлыг эхлүүлэхээс гадна өгөгдлийг устгасны дараа нөөц хуулбарыг сэргээх үйл явцыг эхлүүлдэг. Үүнийг хийхийн тулд боодлын скрипт нь харгалзах агуулахын хажууд шошго файл үүсгэдэг. Хамгийн сүүлд хийсэн нөөцлөлт нь өгөгдөл бөглөх үйл явц дууссаны дараа автоматаар тохирох логик эзлэхүүн рүү сэргээгддэг.

Энэхүү загвар нь шаардлагагүй нөөцлөлтийг үе үе цэвэрлэх боломжийг олгодог бөгөөд байлдааны серверүүд нөөц хадгалах сервер дээрх аливаа зүйлийг устгахаас сэргийлдэг.

Нөөцлөх үйл явц

Нөөцлөлтийг санаачлагч нь зориулалтын сервер эсвэл VPS өөрөө юм, учир нь энэ схем нь энэ серверийн нөөцлөлтийг хянах боломжийг олгодог. Нэгдүгээрт, идэвхтэй эх файлын системийн төлөвийн агшин зургийг авч, BorgBackup ашиглан нөөц хадгалах серверт суулгаж, байршуулна. Өгөгдөл авч дууссаны дараа агшин зуурын зургийг салгаж устгана.

Хэрэв жижиг өгөгдлийн сан байгаа бол (сайт бүрт 1 ГБ хүртэл) өгөгдлийн сангийн овоолгыг хийх бөгөөд энэ нь тухайн сайтын бусад өгөгдөл байрладаг зохих логик эзлэхүүнд хадгалагддаг, гэхдээ энэ нь хогийн цэг байх болно. вэб серверээр дамжуулан хандах боломжгүй. Хэрэв өгөгдлийн сан том бол та MySQL-д зориулсан xtrabackup ашиглан "халуун" өгөгдөл устгах тохиргоог хийх эсвэл PostgreSQL-д archive_command-тай WAL-тай ажиллах хэрэгтэй. Энэ тохиолдолд мэдээллийн санг сайтын мэдээллээс тусад нь сэргээнэ.

Хэрэв контейнер эсвэл виртуал машин ашиглаж байгаа бол та qemu-guest-agent, CRIU эсвэл бусад шаардлагатай технологийг тохируулах хэрэгтэй. Бусад тохиолдолд нэмэлт тохиргоо хийх шаардлагагүй байдаг - бид зүгээр л логик эзлэхүүний агшин зуурын зургийг үүсгэж, дараа нь эх файлын системийн төлөвийн агшин зуурын зурагтай ижил аргаар боловсруулдаг. Өгөгдөл авсны дараа зургуудыг устгана.

Нөөц хадгалах сервер дээр цаашдын ажил хийгдэж байна:

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

Серверийг сэргээх үйл явц

Хэрэв үндсэн сервер үхвэл ижил төстэй зориулалтын сервер ажиллаж эхлэх бөгөөд энэ нь зарим стандарт зургаас ачаалагдана. Татаж авах нь сүлжээгээр явагдах магадлалтай, гэхдээ серверийг тохируулж байгаа дата төвийн техникч энэ стандарт зургийг дискний аль нэгэнд шууд хуулж чадна. Татаж авах нь RAM-д хийгдэх бөгөөд дараа нь сэргээх процесс эхэлнэ.

  • нас барсан серверийн үндсэн файлын системийг агуулсан логик эзлэхүүнд iscsinbd эсвэл ижил төстэй өөр протоколоор блок төхөөрөмжийг холбох хүсэлт гаргасан; Үндсэн файлын систем нь жижиг байх ёстой тул энэ алхамыг хэдхэн минутын дотор дуусгах ёстой. Ачаалагчийг мөн сэргээсэн;
  • локал логик эзлэхүүний бүтцийг дахин үүсгэж, логик эзлэхүүнийг dm_clone цөмийн модулийг ашиглан нөөц серверээс хавсаргав: өгөгдлийг сэргээх ажлыг эхлүүлж, өөрчлөлтийг локал диск рүү шууд бичнэ.
  • савыг боломжтой бүх физик дискүүдээр эхлүүлсэн - серверийн ажиллагаа бүрэн сэргээгдсэн боловч гүйцэтгэл нь буурсан;
  • өгөгдлийн синхрончлол дууссаны дараа нөөц серверээс логик эзлэхүүнүүд салгагдаж, контейнер унтарч, сервер дахин ачаалагдана;

Дахин ачаалсны дараа сервер нь нөөцлөлт үүсгэх үед байсан бүх өгөгдөлтэй байх ба сэргээх явцад хийгдсэн бүх өөрчлөлтийг багтаасан болно.

Цувралын бусад нийтлэлүүд

Нөөцлөх, 1-р хэсэг: Яагаад нөөцлөх шаардлагатай вэ, арга, технологийн тойм
Нөөцлөх 2-р хэсэг: Rsync-д суурилсан нөөцлөх хэрэгслүүдийг шалгаж, туршиж байна
Нөөц 3-р хэсэг: Давхардсан, давхардсан байдлыг шалгах, шалгах
Нөөцлөх 4-р хэсэг: zbackup, restic, borgbackup-г шалгаж, туршиж байна
Нөөцлөх хэсэг 5: Linux-д зориулсан Bacula болон Veeam нөөцлөлтийг турших
Нөөц: уншигчдын хүсэлтээр хэсэг: AMANDA, UrBackup, BackupPC-ийн тойм
Нөөцлөх 6-р хэсэг: Нөөцлөх хэрэгслүүдийг харьцуулах
Нөөц 7-р хэсэг: Дүгнэлт

Би таныг санал болгож буй хувилбарын талаар санал бодлоо хуваалцахыг урьж байна, анхаарал тавьсанд баярлалаа!

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

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