إنتقل إلى المحتوى الرئيسي

النسخ الاحتياطي والتعافي من الكوارث

لتحقيق هدف زمن التعافي (RTO) وهدف نقطة التعافي (RPO) بشكل موثوق، تستخدم البنية استراتيجية تعافٍ من الكوارث ثنائية الطبقات: طبقة واحدة تحمي عنقود OpenShift النشط، والأخرى تحمي طبقة الأجهزة الافتراضية الخارجية.

مصفوفة الأهداف والتغطية​

يتم ضبط الأهداف لكل عميل؛ والجدول أدناه هو خط الأساس المرجعي.

المكوّنالطريقةالتكرارRPO (خط الأساس)
PostgreSQLكامل + تزايدي + لقطة للجهاز الافتراضيWAL مستمر + كامل يومي≤ 5 دقائق
OpenBao / محرك الأسرارلقطة Raftكل ساعة≤ ساعة واحدة
حالة التطبيق (PVs)لقطة Velero CSIيومي≤ 24 ساعة
بيانات K8s / التهيئةنسخ احتياطي لبيانات Velero الوصفيةيومي≤ 24 ساعة
GitLab (المصدر)نسخ احتياطي مدمجيومي≤ 24 ساعة
مادة HSMتبقى في HSM (منسوخة حسب المورّد)غير متاحغير متاح
السيناريوRTO المستهدف (خط الأساس)
فشل حاوية / عقدة واحدةتلقائي، خلال ثوانٍ (تعافٍ ذاتي)
استعادة مكوّن ذي حالة< ساعة واحدة
تجاوز فشل كامل للموقع (عنقود ثانوي)< 4 ساعات

دورة حياة التعافي من الكوارث​


الطبقة 1 — عمليات النسخ الاحتياطي (العنقود النشط)​

  • التنسيق — يقوم مشغّل Velero بتشغيل لقطات مجدولة ومؤتمتة داخل عنقود OpenShift.
  • حالة البيانات — ينسّق Velero مع ODF أو مكوّن CSI الإضافي لالتقاط لقطات كتلية متسقة مع الأعطال للوحدات التخزينية الداعمة للأحمال ذات الحالة.
  • البيانات والبيانات الوصفية — يلتقط Velero في الوقت نفسه كائنات Kubernetes API: مساحات الأسماء، وحسابات الخدمة (ServiceAccounts)، وتطبيقات ArgoCD.
  • الوجهة — تُشفَّر جميع البيانات الوصفية للنسخ الاحتياطي وحمولات الوحدات التخزينية وتُكتب خارج العنقود إلى تخزين كائني متوافق مع S3.
# Example: a daily scheduled backup of the duokey namespace
velero schedule create duokey-daily \
--schedule="0 2 * * *" \
--include-namespaces duokey \
--snapshot-volumes

الطبقة 2 — النسخ الاحتياطي للبنية التحتية (الأجهزة الافتراضية الخارجية)​

  • OpenBao — يُنسخ احتياطياً بشكل مستقل عن طريق تشغيل لقطات تخزين Raft مؤتمتة. تُخزَّن ملفات اللقطات المشفّرة خارج العقدة في التخزين الكائني.
  • GitLab — يستخدم مهام النسخ الاحتياطي المدمجة لديه لأرشفة المستودعات وقواعد البيانات والتهيئة إلى التخزين الكائني.
  • PostgreSQL — بوصفه أكثر طبقات البيانات حساسية، يستخدم عدة طرق تكميلية: لقطات الجهاز الافتراضي بالإضافة إلى نسخ احتياطية مجدولة كاملة وتزايدية لقاعدة البيانات.
# OpenBao Raft snapshot (illustrative)
bao operator raft snapshot save openbao-$(date +%F).snap

إجراءات التعافي (الموقع الثانوي / السلبي)​

في حال حدوث فشل كارثي يؤثر على العنقود النشط:

  1. تجهيز العنقود المستهدف — قم بتفعيل أو تهيئة عنقود OpenShift ثانوي مصغّر في موقع التعافي / منطقة التوفر.
  2. استعادة محرك الأسرار — يقوم مثيل OpenBao الثانوي بفك الختم وتحميل لقطة Raft المنسوخة، مستعيداً قدرات المفاتيح.
  3. تشغيل استعادة Velero — يتصل Velero بالتخزين الكائني المنسوخ في موقع التعافي وينفّذ استعادة شاملة.
  4. إعادة تضخيم الوحدات التخزينية — يستعيد مشغّل CSI اللقطات الكتلية ويربطها بحاويات StatefulSet جديدة لـ PostgreSQL وRedis.
  5. مواءمة GitOps — يعيد ArgoCD الاتصال بـ GitLab عبر HTTPS/SSH، ويفحص البيانات، ويعيد مواءمة أي انحراف نحو الامتثال.
  6. استعادة PostgreSQL — الاستعادة من أحدث نسخة احتياطية لقاعدة البيانات في التخزين الكائني، أو الرجوع إلى لقطة كاملة للجهاز الافتراضي إذا تعذّر إعادة تشغيل النسخ الاحتياطية.
# Restore from the most recent Velero backup
velero restore create --from-backup duokey-daily-<timestamp>

اختبار خطة التعافي من الكوارث لديك​

لا تنتظر كارثة حقيقية

تدرّب على إجراء التعافي بوتيرة منتظمة (ربع سنوية على الأقل). تحقّق من أن أهداف RTO/RPO تُحقَّق فعلياً وأن كتيّبات التشغيل محدّثة.

العنصرالتكرار
التحقق من اكتمال النسخ الاحتياطيةيومياً (تنبيه مؤتمت)
اختبار الاستعادة (مكوّن واحد)شهرياً
تدريب كامل على تجاوز فشل التعافي من الكوارثربع سنوي
مراجعة أهداف RTO/RPOسنوياً