تكوين إجراءات مواجهة الكوارث

يمكنك استخدام الاسكربتات المتوفرة مع دفتر تشغيل الحلول هذا لإنشاء لقطة YAML في مجموعة Kubernetes أساسية واستعادتها في مجموعة Kubernetes أخرى (ثانوية). من المهم تخطيط التكوين وفهم المتطلبات قبل تنزيل الاسكربتات واستخدامها لتكوين لقطة YAML الخاصة بك.

ملاحظة:

يفترض هذا الحل وجود كل من مجموعات Kubernetes، بما في ذلك خطة التحكم ونقاط توصيل العامل.

تخطيط التكوين

قم بتخطيط الموارد والتكوين على النظام الثانوي بناءً على النظام الأساسي. تتطلب الاسكربتات وجود كل من مجموعات Kubernetes بالفعل. يجب أن تكون قادرًا على الوصول إلى كلتا المجموعتين باستخدام أداة سطر أوامر Kubernetes، kubectl، لتشغيل الأوامر مقابلهما.

ملاحظة:

يفترض هذا الحل وجود كل من مجموعات Kubernetes، بما في ذلك خطة التحكم ونقاط توصيل العامل. لا تتحقق التوصيات والاسكربتات المقدمة في هذا الدفتر من تكوين نقطة توصيل العامل أو مستوى التحكم أو الموارد.

يوضح المخطط التالي أنه عند تكوينه، يمكنك استعادة لقطة البيانات الاصطناعية في مجموعات Kubernetes مختلفة تمامًا.

فيما يلي وصف kube-api-dr.png
وصف الشكل التوضيحي kube-api-dr.png

استكمل المتطلبات التالية الخاصة بـ Restore عند تخطيط التكوين:

  1. تأكد من إتاحة الموارد ونقاط توصيل العامل المطلوبة في المرحلة الأساسية في المرحلة الثانوية.
    يتضمن ذلك وحدات التخزين المشتركة الخاصة بـ pod، وموازنات التحميل، وقواعد البيانات. كما يتضمن أية أنظمة خارجية تستخدمها مساحات الأسماء التي تتم استعادتها.
  2. قم بتكوين وحدات التخزين الدائمة المطلوبة يدويًا والتي تستخدمها مساحات الأسماء المضمنة قبل تشغيل الاسكربتات.

    هذا هو الإجراء الافتراضي. ستقوم السكريبتات بإنشاء مطالبات الحجم الدائم المستخدمة في الأساس. ومع ذلك، نظرًا لإمكانية مشاركة وحدات التخزين الدائمة بواسطة مطالبات مختلفة في مساحات أسماء مختلفة، تتوقع سكريبتات الأتمتة تكوين وحدات تخزين دائمة يدويًا في المجموعة الثانوية قبل تشغيل سكريبتات extract-apply.

    أو بدلاً من ذلك، يمكنك إضافة pv إلى المتغير nons_artifacts_types في ملف maak8DR-apply.env (أي استخدام export nons_artifacts_types="crd clusterrole clusterrolebinding pv). يؤدي ذلك إلى توجيه السكريبتات لإنشاء وحدات التخزين الدائمة أيضًا في الثانوية. في هذه الحالة الثانية، الأمر متروك لك لتحديد ما إذا كان قد تنشأ تعارضات مع مطالبات الحجم الدائم الأخرى.

  3. تأكد من أن المجموعة الثانوية لها حق الوصول المناسب إلى صور الحاويات المستخدمة بواسطة مساحات الأسماء التي يتم استنساخها:
    • يتم نسخ الأسرار المستخدمة للوصول إلى سجلات الحاويات الموجودة في مساحات الأسماء المطلوب نسخها بواسطة السكريبتات المتوفرة مع هذا الكتيب. إذا كانت الصلاحيات الخاصة بالسجلات مخزنة في مساحات أسماء أخرى، فلا بد من تكوينها يدويًا في مكان ثانوي. يمكنك بدلاً من ذلك تسمية الصلاحيات بـ maak8sapply: my_ns (حيث my_ns هي مساحة الاسم التي تتم استعادتها) بحيث يتم تضمين السر أيضًا في لقطة YAML. على سبيل المثال،
      kubectl label secret regcredfra -n other_namespace 
      maak8sapply=namespace_being_backedup
    • إذا كنت تستخدم أية صور يتم تحميلها يدويًا في نقاط توصيل العامل الأساسي، يجب أيضًا تحميلها يدويًا في نقاط توصيل العامل الثانوي.

      ملاحظة:

      تقوم الاسكربتات المقدمة بالإبلاغ عن الصور المستخدمة في مساحات الأسماء الجاري استنساخها.
  4. توفير الوصول إلى المجموعات الأساسية والثانوية من خلال نقاط توصيل الحصن القادرة على تشغيل عمليات kubectl مقابل نقاط انتهاء Kube API لكل مجموعة.
    من الممكن استخدام نقطة توصيل ثالثة يمكن أن ssh أو scp لكل من (الأساسي والبديل) وتنسيق مزامنة DR. ومع ذلك، لتجنب الخطوات غير الضرورية والنفقات الإضافية للجلسات، توصي Oracle باستخدام الحصن الرئيسي كمنسق DR. تتطلب الخيارات الأخرى تخصيص الاسكربتات المقدمة.
  5. استخدم تسمية maak8sapply: my_ns إذا كنت تريد تطبيق الموارد التي ليس بها اسم المضمنة في النسخة الاحتياطية على النسخة الثانوية عند استعادة my_ns namespace.

    بالنسبة للبيانات الاصطناعية الموجودة في جذر المجموعة (أي ليست جزءًا من مساحة اسم دقيقة)، تبحث الاسكربتات عن مراجع الحقلين namespace: وgroup: التي تحتوي على أسماء مساحات الأسماء. إذا احتجت إلى أي موارد أخرى ليس لها اسم مضمّنة في النسخة الاحتياطية، يمكنك تسميتها لتتم إضافتها.

    على سبيل المثال، تعريف المورد المخصص domains.weblogic.oracle ليس جزءًا من أية مساحة اسم، ولكن يمكنك استخدام ما يلي لتضمينه في تسمية العملية apply: kubectl label crd domains.weblogic.oracle maak8sapply=opns.

تكوين

تكوين استعادة لقطات YAML بعد الكوارث.

  1. تنزيل كل اسكربتات استعادة القدرة على العمل بعد الكوارث للقطة YAML من "تعليمات التنزيل البرمجية".

    ملاحظة:

    يجب أن تكون كل السكريبتات في نفس المسار لأن السكريبتات الرئيسية تستخدم سكريبتات مساعدة أخرى.
  2. قم بتحرير الاسكربت maak8DR-apply.env وتحديث العناوين ومفتاح ssh المطلوب للوصول إلى النظام الثانوي.
    على سبيل المثال،
    export user_sec=opc
    export ssh_key_sec=/home/opc/Key.ppk
    #Secondary bastion node
    export sechost=10.10.0.23
  3. قم بتخصيص قيم exclude_list وnons_artifacts_types حسب الحاجة.
    • exclude_list: هذه قائمة مفصولة بمسافات تضم مساحات الأسماء التي يجب استبعادها من النسخة الاحتياطية حتى عند محاولة عمل نسخة احتياطية لكافة مساحات الأسماء المخصصة. هذا لتجنب نسخ مساحات الأسماء المرتبطة بمستوى التحكم والتي لن تكون قابلة للتطبيق على النسخة الثانوية.
    • nons_artifacts_types: هذه هي القائمة أو البيانات الاصطناعية التي تنتمي إلى الشبكة الأولية (أي ليست جزءًا من مساحة اسم دقيقة) ولكن يجب تضمينها أيضًا في اللقطة. سيبحث إطار العمل عن مراجع في هذا الصدد إلى مساحات الأسماء التي يتم نسخها احتياطيًا.
    بشكل عام، يمكنك استخدام القيم الافتراضية المقدمة في الملف:
    #List of namespaces that will be excluded from the backup
    export exclude_list="kube-system kube-flannel kube-node-lease kube-public"
    #Root artifacts that will be included
    export nons_artifacts_types="crd clusterrole clusterrolebinding"
    
  4. قم بتشغيل الاسكربت maak8DR-apply.sh الذي يوفر وسائط لمساحات الأسماء المحددة لاستنساخها.
    • إذا لم تقم بتقديم وسائط، فستقوم الاسكربتات باستنساخ جميع مساحات الأسماء باستثناء مساحات الأسماء المقدمة في المتغير exclude_list.

    • في حالة استخدام قائمة دقيقة بمساحات الأسماء، يجب ترتيبها وفقًا للتبعيات مع مساحات الأسماء الأخرى.

      بمعنى أنه إذا كانت مساحة الاسم soans تعتمد على الخدمات أو تستخدمها في مساحة الاسم opns، فيجب أن يظهر opns أولاً في القائمة. على سبيل المثال، بدلاً من ./maak8DR-apply.sh soans opns، قم بتشغيل ما يلي:

      ./maak8DR-apply.sh opns soans

تحقق

بعد تشغيل اسكربت maak8DR-apply.sh، تحقق من استنساخ جميع البيانات الاصطناعية الموجودة في المجموعة الأساسية إلى المجموعة الثانوية. انظر إلى المجموعة الثانوية وتحقق من أن وحدات التنفيذ الأساسية في الموقع الثانوي قيد التشغيل بدون أخطاء.

عند تشغيل الاسكربت maak8DR-apply.sh، يقوم إطار العمل بتكوين الدليل working_dir على أنه /tmp/backup.date. عند تشغيل الاسكربتين maak8-get-all-artifacts.sh وmaak8-push-all-artifacts.sh بشكل فردي، يتم توفير دليل العمل في كل حالة كوسيطة في سطر الأوامر.

  1. تحقق من حالة العنصر الثانوي حتى تتطابق وحدات التنفيذ الأساسية المطلوبة مع الحالة في العنصر الأساسي.
    وبشكل افتراضي، تبدأ وحدات التنفيذ الأساسية وعمليات النشر في المنطقة الثانوية. في نهاية الاستعادة، تظهر حالة المجموعة الثانوية. قد تستغرق بعض وحدات التنفيذ الأساسية وقتًا إضافيًا للوصول إلى حالة التشغيل.
  2. تحقق من ملف $working_dir/date/backup-operations.log في الملف الأساسي لمعرفة الأخطاء المحتملة في عمليات الاستخراج والتطبيق.
  3. راجع الملفين $working_dir/restore.log و$working_dir/date/restore-operations.log في الملف الثانوي لمعرفة الأخطاء المحتملة في عمليات الاستخراج والتطبيق.
    يحتوي ملف restore-operations.log على عمليات الاستعادة المفصلة.