Gerege Nexus НӨӨЦЛӨЛТ Баримт бичиг

НӨӨЦЛӨЛТ · nexus.gerege.net

Хамгийн ихдээ нэг өдөр

Өгөгдлийн сан уствал энэ платформын алдах бүхэн нь сүүлийн 02:45-аас хойшхи ажил. Байгууллага, гишүүнчлэл, эрх, баримт, гарын үсэг, audit мөр — үлдсэн бүх зүйл шифрлэгдсэн хуулбар болж өөр серверт хадгалагдана.

73 хүснэгтхамгаалагдана 24 цагхамгийн их алдагдал 45 KBөдрийн зардал 6 сархадгалах хугацаа
01 · ЯАГААД

Бүтэлгүйтэх хүртэл нь хэвийн харагддаг ганц систем

Сервер унавал мэднэ. Диск дүүрвэл мэднэ. Нөөцлөлт ажиллахаа болбол юу ч болохгүй — сэргээх өдөр хүртэл.

Ард нь юу байна

Дахин бичих боломжгүй 73 хүснэгт

Гурван schema: workspace 33, registry 32, operator 8. Байгууллага, хүн, гишүүнчлэл, эрх, суулгасан апп, баримт, гарын үсэг, audit мөр.

Кодыг git-ээс сэргээнэ, серверийг дахин үүсгэнэ. Эдгээрийг хаанаас ч авахгүй.

Тэгш бус наймаа

Өдөрт 45 KB — эсвэл бүх зүйл

Нэг өдрийн нөөцлөлт нь 45 килобайт ба хэдхэн секунд. Байхгүй байхын үнэ нь платформын бүх түүх.

Мэдээллийн технологид ийм тэгш бус харьцаа ховор. Тиймээс энд асуулт «хийх үү» биш, «яагаад өчигдөр хийгээгүй байсан бэ» байсан.

Чимээгүй бүтэлгүйтэл

Хэмжигдээгүй нөөц бол нөөц биш

cron бүтэлгүйтэхдээ хашгирдаггүй. Тиймээс амжилттай ажиллагаа бүр Prometheus руу хэзээ болсноо бичдэг. 26 цагаас хуучирвал BackupStale сэрэмжлүүлэг Telegram руу очно.

«Нөөцлөлт байхгүй» гэдэг нь одоо сэрэмжлүүлэг дуугардаг байдал.

02 · ОБЪЕКТ

Нэг файлын анатоми

Өргөтгөл бүр юу болсныг хэлдэг тул нэр өөрөө түүх өгүүлнэ.

postgres.sql.gz→ restic

  • .sql

    Өдөр бүр 02:45-д авсан бүтэн pg_dumpall.

  • .gz

    Шахагдсан. Энэ суулгацынх ойролцоогоор 45 KB.

  • restic

    Хостыг орхихоосоо өмнө шифрлэгдэж, snapshot болно. Давхардсан хэсэг дахин хадгалагдахгүй.

03 · БАТАЛГАА

Объект бүрийн үнэн

Гурван шинж чанар, ач холбогдлын дарааллаар.

Шифрлэлт

Хостыг орхихоосоо өмнө шифрлэгдэнэ

restic нь snapshot бүрийг AES-256-аар шифрлэж, баталгаажуулдаг. Хадгалах сервер дээр зөвхөн шифрлэгдсэн блок байна — нууц үг нь тэнд байхгүй.

Өөр сервер

Платформын хостоос тусдаа

Хуулбар нь core-nas-01 дээрх Garage S3-ийн backups bucket-д очно. Апп-ын сервер эвдэрвэл, volume уствал нөөц хөндөгдөхгүй.

✓ 7 өдөр · 4 долоо хоног · 6 сар

Гадаргуу

Интернэтэд нээлттэй биш

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

04 · ӨДӨР ТУТАМ

02:45 цагт юу болдог вэ

Хост бүр дээр нэг cron мөр. Дараалал нь чухал — алхам бүр өмнөхийнхөө үр дүнг нэрэндээ авч үлддэг.

  1. pg_dumpall

    Postgres контейнерээс бүтэн dump, шууд gzip-ээр шахагдана. Дуусахаас өмнө тасарвал хуучин файл хэвээр үлдэнэ.

  2. restic backup

    Шифрлэж, Garage руу snapshot болгон илгээнэ. Хостын диск дээр сүүлийн нэг dump үлдэнэ — хурдан сэргээхэд.

  3. restic forget --prune

    7 өдөр, 4 долоо хоног, 6 сарын snapshot үлдээгээд бусдыг цэвэрлэнэ.

  4. Үр дүн нь хэмжигдэнэ

    Амжилтын мөч node-exporter-ээр Prometheus руу очно. 26 цаг шинэчлэгдээгүй бол сэрэмжлүүлэг дуугарна.

05 · СЭРГЭЭЛТ

Өгөгдлөө буцааж авах

Сэргээж үзээгүй нөөцлөлт бол нөөцлөлт биш, зөвхөн итгэл найдвар. Дараах алхмуудыг хаях зориулалттай сан дээр ажиллуулж баталгаажуулсан.

# 1 — snapshot-уудыг харах (core-app-02 дээр)
cd /opt/nexus
docker run --rm --env-file backup.env \
  -e RESTIC_REPOSITORY=s3:http://10.130.0.50:3900/backups/core-app-02 \
  -e AWS_DEFAULT_REGION=garage restic/restic:0.19.1 snapshots

# 2 — сүүлийнхийг сэргээх
docker run … -v /tmp/r:/r restic/restic:0.19.1 restore latest --target /r

# 3 — хаях зориулалттай санд сэргээж шалгах
createdb restore_check
gunzip -c /tmp/r/data/nexus/postgres.sql.gz | psql -d restore_check
psql -d restore_check -c 'SELECT count(*) FROM registry.tenants'

restic-ийн нууц үгээ алдвал бүх нөөц ашиггүй болно. Хостын backup.env-ээс гадна нууц үгийн менежерт хуулбартай байх ёстой.

06 · ИЛЭН ДАЛАНГҮЙ

Юунаас хамгаалахгүй вэ

Garage нь платформтой нэг Proxmox кластер, нэг storage дээр байна. Хүснэгт устгасан, буруу migration, апп-ын VM алдсанаас хамгаална — кластерыг бүхэлд нь алдахаас хамгаалахгүй.

Сүүлийн цоорхойг хаах алхам нь энэ санг кластераас гадна (өөр DC эсвэл cloud) толилуулах. Энэ нь хийгдээгүй байна.