Skip to content

تشغيل الشبكة الافتراضية

بمجرد أن يمتلك مركز البيانات شبكة افتراضية، تصبح مهمة Cockpit هي الحفاظ على تطابق وتزامن بيئة التشغيل ومركز البيانات: كل مضيف ينتمي إلى مركز البيانات يجب أن يكون عضوًا، وكل عضو يجب أن يكون سليمًا، ويجب أن يعرف كل مضيف عن كل مضيف آخر. هذه الصفحة مخصصة لعمليات الصيانة والإدارة تلك.


من هو العضو

يحتوي جدول الأعضاء (Members) في تبويب الشبكة الافتراضية لمركز البيانات على صف واحد لكل مضيف في شجرة مركز البيانات الفرعية. ويحمل كل صف:

الحقلالمعنى
Role (الدور)central تدير قواعد بيانات OVN (في وضع vapor-native فقط)؛ وchassis هي hypervisor على النسيج.
Encap IPالعنوان الذي تستخدمه أنفاق Geneve لهذا المضيف.
Status (الحالة)synced — منضم وسليم. pending — قيد التطبيق. error — فشل التطبيق الأخير؛ ويُعرض السبب. excluded — مستبعد عمدًا؛ ويُعرض السبب.

تحدث حالة excluded فقط في وضع Kube-OVN، للمضيفات التي ليست عقد kube-ovn أو تفتقر إلى أدوات عميل OVN. لا يتم تطبيق أي شيء على المضيف المستبعد، ولا يُحتسب ضمن حالة بيئة التشغيل، ولا يُسجل كحالة انحراف (drift). أصلح السبب ثم قم بعمل Sync لضمه.

تستند حالة بيئة التشغيل نفسها إلى حالة الأعضاء: active عندما يكون كل عضو مشارك متزامنًا (synced)، وpartial عندما يكون بعضهم فقط متزامنًا، وerror عندما لا يكون أي منهم متزامنًا.


المضيفون المنضمون والمنتقلون والمغادرون

يحافظ Cockpit على توافق العضوية مع شجرة المخزون تلقائيًا:

  • المضيف المضاف إلى مركز البيانات — مباشرة، أو في مجلد، أو في أحد عناويده — يتم تسجيله كهيكل (chassis) بمجرد المطالبة به ومزامنته. وإذا فشل التسجيل، يُضاف المضيف مع ذلك؛ ويحمل صف عضويته الخطأ وسيعيد Sync المحاولة.
  • المضيف المنقول إلى مركز البيانات من مكان آخر يتم تسجيله بالطريقة نفسها.
  • المضيف المنقول خارج مركز البيانات يتم إلغاء تفعيله أولاً. يطلب Cockpit منك التأكيد، لأن هذا يقطع اتصال كل واجهة جهاز افتراضي على ذلك المضيف موجودة على بدّال منطقي. انقل تلك الأجهزة الافتراضية أو أوقفها أولاً.
  • لا يصبح المضيف الجديد عقدة مركزية أبدًا. إن تغيير نصاب RAFT هو قرار صريح؛ وينضم المضيفون الجدد دائمًا كهياكل (chassis). لترقية أحدهم، استخدم إضافة عضو (Add member) مع دور العقدة المركزية (central).

يظهر شريط الانحراف (Drift) عندما يتعارض مركز البيانات مع بيئة التشغيل — مثل فقدان مضيف من قائمة الأعضاء، أو عدم وجود عضو في مركز البيانات، أو عدم مزامنة عضو. يتحقق Cockpit من ذلك كل دقيقة ويميز بيئة التشغيل كـ partial طالما استمر هذا التعارض. ويقوم Sync بتسويته ومطابقته.

إزالة مضيف واحد

في صفحة المضيف نفسه — المضيف › تكوين › الشبكات › الشبكة الافتراضية — يؤدي خيار إزالة من بيئة OVN إلى إخراج ذلك المضيف بمفرده: يقوم Cockpit بإلغاء تفعيل OVN عليه عبر Vapor وإعادة دفع قائمة الأعضاء إلى بقية الأجهزة. وينطبق نفس التأكيد: تفقد واجهات الأجهزة الافتراضية على البدّالات المنطقية في ذلك المضيف اتصالها.


المزامنة (Sync)

يقوم إجراء Sync في تبويب مركز البيانات بثلاثة أمور في تمريرة واحدة: إعادة تطبيق التكوين على كل عضو غير متزامن، ودفع قائمة الأعضاء الكاملة إلى كل عضو، وإعادة حساب الانحراف والحالة.

الجزء الثاني ليس مجرد إجراء روتيني اختياري. يتحدث عملاء قواعد بيانات OVN فقط مع قائد العنقود الحالي، لذا يجب على كل مضيف معرفة كل عقدة مركزية لمواصلة العمل عند انتقال القيادة. لذلك، يتم دفع أي تغيير في العضوية — إضافة أو إزالة عقدة مركزية — إلى جميع المضيفين، وليس فقط المضيف الذي تغير. وSync هو وسيلتك لفرض ذلك بعد حدوث عطل.

لا يقوم إجراء Sync أبدًا باستبدال ملفات قواعد البيانات، مهما كانت حالة العقدة المركزية. فهذا الإذن يُمنح مرة واحدة فقط عند التفعيل من قبلك.


إلغاء التفعيل (Deactivating)

يؤدي زر إلغاء التفعيل (Deactivate) في تبويب مركز البيانات إلى إخراج كل عضو من النسيج وإزالة بيئة التشغيل من Cockpit. ويعتمد ما يحدث على كل مضيف على الوضع المستخدم:

الوضععلى كل مضيف
Vapor-nativeيتم تحرير الهيكل: يتوقف ovn-controller وينسى المضيف عناوين قواعد البيانات. تُترك ملفات قواعد البيانات على العقد المركزية كما هي — فهي تحتوي على التكوين المنطقي الكامل، وحذفها قرار يخص مالك المضيف وليس Cockpit.
Externalيتم تحرير الهيكل بالطريقة نفسها. وتظل قواعد البيانات الخارجية دون أي تعديل.
Kube-OVNلا يُمس أي شيء على المضيف. يمتلك الـ CNI الهيكل؛ ويكتفي Cockpit بنسيان الاتصال. وتحتفظ الكبسولات (pods) بشبكتها.

بعد إلغاء التفعيل، تظل بدّالات النسيج في مخزون Cockpit لفترة وجيزة: لا تتم إزالة مخزون OVN الخاص بالمضيف إلا بعد إبلاغ عمليتي مزامنة متتاليتين بأنه غير نشط، وذلك حتى لا تؤدي القراءة العابرة إلى حذف حالة حقيقية. وتختفي الصفوف في غضون دقيقتين عادةً.

لإعادة تفعيل مركز بيانات vapor-native لاحقًا، سيعثر الفحص المسبق على قواعد بيانات العقد المركزية الموجودة — ولأنها لا تزال تشكل عنقودًا — يتركها في مكانها، ويعود التكوين المنطقي معها.


عندما تكون بيئة التشغيل جزئية (partial)

تعني الحالة partial أن عملية التوزيع قد انتهت ولكن بعض المضيفين لم ينجحوا في الانضمام. اقرأ الخطأ الخاص بكل مضيف؛ فهو يحدد الفحص أو الخطوة التي فشلت. الأسباب الشائعة وما يجب فعله:

تعذر الوصول إلى المضيف وقت التطبيق. أصلح الاتصال واضغط على Sync.

فشل "Existing cluster member reachable" على عقدة مركزية منضمة. تم إقلاع أول عقدة مركزية، لكن المنفذ الذي تنضم العقد الأخرى من خلاله لا يجيب. يعني هذا عادةً أن قاعدة البيانات على تلك العقدة المركزية الأولى لا تعمل فعليًا — تفقد المضيف › تكوين › الشبكات › الشبكة الافتراضية لذلك المضيف، والأمر journalctl -u ovn-ovsdb-server-nb عليه. وبمجرد عملها، سيقوم Sync بضم البقية.

"OVN client tools missing" أو "not a kube-ovn node". المضيف مستبعد وليس فاشلاً. انظر العضوية.

تم تطبيق العقدة المركزية ولكنها لم تُسجل. قبل Vapor التكوين لكن المضيف غير موجود في قاعدة بيانات southbound. على المضيف، تأكد من تشغيل ovn-controller ومن أن ovn-remote الخاص به يشير إلى عناوين southbound الخاصة ببيئة التشغيل. تعرض صفحة Vapor للمضيف كلا الأمرين.

تمت الموافقة على تحذير MTU وتعذر على الأجهزة الافتراضية تمرير حركة المرور. تتصل الأجهزة، وتحصل على عنوان، ثم تتوقف عند إرسال أي حزمة أكبر من حزمة صغيرة. هذا هو نقص هامش Geneve الرأسي. ارفع MTU للشبكة الأساسية على واجهة التغليف لكل مضيف إلى 1558 على الأقل، أو اضبط MTU للنظام الضيف على 1442 (لشبكة أساسية بحجم 1500 بايت).

لأي مشكلة تقع تحت مستوى Cockpit — بدّال منطقي موجود لكنه لا يمرر البيانات، أو عدم استجابة DHCP، أو نفق لا يعمل — فإن الفحص على مستوى المضيف هو المكان الذي توجد فيه الإجابة: Vapor: استكشاف أخطاء الشبكة الافتراضية وإصلاحها. على وجه الخصوص، تقبل قاعدة بيانات northbound في OVN تكوينات يرفض ovn-controller تصريفها لاحقًا، والمكان الوحيد الذي يُسجل فيه ذلك هو /var/log/ovn/ovn-controller.log على المضيف.


ما يفعله Cockpit وما لا يفعله

من المفيد توضيح حدود المسؤولية بدقة، حيث وُضعت عن قصد:

  • Cockpit يقوم بالتفعيل، والحفاظ على التزامن، وإعادة دفع العضوية، والتحقق من التسجيل، وعرض المخزون.
  • Cockpit لا يستبدل ملفات قواعد البيانات دون التأكيد الممنوح عند التفعيل، ولا يعيد تشغيل قواعد بيانات العقدة المركزية أثناء المزامنة الروتينية، ولا يلمس المضيف على الإطلاق في وضع Kube-OVN.
  • يتم إنشاء وتعديل كائنات الشبكة نفسها — شبكات VPC، البدّالات، الموجهات، ACLs، موازنات الأحمال — على صفحات مضيف Vapor. ويقرأها Cockpit من أحد الأعضاء ويستخدمها.