Skip to content

إدارة عنقود O2CB

نظام الملفات المجمع من أوراكل الإصدار 2 (OCFS2) هو نظام ملفات مجمع للأقراص المشتركة متعدد الأغراض مصمم لعمليات القراءة والكتابة المتزامنة النشطة/النشطة (Active/Active) عبر عدة مضيفي افتراضية. في Vapor، يتم التعامل مع البنية التحتية للعنقود وإدارة القفل الموزع من خلال حزمة O2CB (OCFS2 Cluster Base).

يتيح O2CB لعدة عقد Vapor إمكانية تثبيت (Mount) نفس SAN LUN أو هدف iSCSI أو جهاز Multipath NVMe-oF بشكل متزامن، مما يسمح للآلات الافتراضية ومجمعات التخزين المجمعة بالعمل في وقت واحد عبر بنيتك التحتية دون حدوث تلف للبيانات.


الهندسة المعمارية: التكوين الثابت مقابل حالة النواة الحية

يعمل O2CB على طبقتين متميزتين يجب على المسؤولين فهمهما:

+-------------------------------------------------------------+
|                 لوحة تحكم Vapor على الويب / REST API        |
+-------------------------------------------------------------+
                              |
        +---------------------+---------------------+
        |                                           |
        v                                           v
+-------------------------------+   +-------------------------------+
|       ملف التكوين الثابت      |   |       نواة Linux قيد التشغيل  |
|    /etc/ocfs2/cluster.conf    |   |   /sys/kernel/configfs/...    |
| (تعريفات العنقود والعقد وIP)  |   | (كائنات العنقود النشطة بذاكرة)|
+-------------------------------+   +-------------------------------+
        |                                           ^
        +----- التسجيل المباشر الديناميكي (o2cb) ---+
  1. التكوين الثابت (/etc/ocfs2/cluster.conf):
    • ملف التكوين المحفوظ على القرص الذي يحدد اسم العنقود، وخانات العقد، وأسماء العقد، وعناوين IP، والمنافذ (الافتراضي 7777)، ومناطق نبضات القلب العامة.
  2. ذاكرة النواة الحية (/sys/kernel/config/cluster/<cluster>/):
    • نظام ملفات النواة الديناميكي configfs الذي يمثل كائنات العنقود النشطة في الذاكرة. لكي تشارك العقدة في اتصالات العنقود وقفل DLM، يجب أن يكون تعريفها موجودًا في ذاكرة النواة.
  3. التسجيل المباشر الديناميكي:
    • يؤدي تشغيل o2cb register-cluster <cluster> إلى تحليل cluster.conf وتسجيل العقد المضافة حديثًا ديناميكيًا في ذاكرة النواة النشطة دون الحاجة إلى إلغاء تثبيت أنظمة الملفات أو إعادة تشغيل الخدمات.

أوضاع نبضات القلب (Heartbeat Modes)

يراقب O2CB صحة المضيف من خلال آليتين لنبضات القلب:

وضع نبضات القلبالوصفموصى به لـ
Local Heartbeat (الافتراضي)تُكتب بيانات نبضات القلب الوصفية مباشرة إلى كتلة مخصصة في كل نظام ملفات OCFS2 مثبت. إعداد أبسط دون الحاجة لأجهزة مخصصة.معظم عمليات النشر القياسية مع عدد قليل من مخازن البيانات المشتركة.
Global Heartbeatتعمل نبضات القلب على أجهزة كتل منطقة نبضات القلب (Heartbeat region) المستقلة والمخصصة كخدمة خلفية دائمة قبل تثبيت مخازن البيانات.العناقيد واسعة النطاق، أو وجود العديد من LUNs المشتركة، أو بيئات SAN للمؤسسات.

إدارة O2CB في لوحة تحكم Vapor على الويب

في وحدة تحكم Vapor على الويب، انتقل إلى Storage > O2CB Cluster لإدارة ومراقبة حالة عنقود O2CB.

1. حالة العنقود والإجراءات

توفر البطاقة العلوية حالة في الوقت الفعلي وأدوات تحكم تشغيلية:

  • هوية العنقود: يعرض اسم العنقود الفعلي، ووضع نبضات القلب، وإجمالي عدد العقد المهيأة، ومناطق نبضات القلب النشطة.
  • شارات الحالة:
    • Online (أخضر): العنقود مسجل ونشط في ذاكرة النواة.
    • Offline (رمادي): العنقود متوقف أو غير مسجل.
    • Not in Kernel (أصفر): العنقود موجود في ملف التكوين ولكن لم يتم تسجيله في النواة.
  • الإجراءات الأساسية:
    • Register Cluster / Sync to Kernel: يحلل cluster.conf تلقائيًا ويزامن جميع العقد في ذاكرة النواة الحية.
    • Enter Maintenance / Exit Maintenance: يلغي تثبيت أنظمة الملفات النشطة بنظافة ويلغي تسجيل العقدة من العنقود قبل صيانة المضيف.
  • قائمة الإجراءات ():
    • Start Heartbeat / Stop Heartbeat: التحكم في تشغيل نبضات القلب العامة (الوضع العالمي فقط).
    • Set Heartbeat Mode: التبديل بين وضعي نبضات القلب local وglobal.
    • Unregister Cluster: إلغاء تحميل كائنات العنقود من ذاكرة النواة.
    • Delete Cluster: حذف تعريف العنقود من /etc/ocfs2/cluster.conf.

2. إدارة العقد (Nodes Management)

يتيح قسم Nodes للمسؤولين عرض أعضاء العنقود وإضافتهم وإزالتهم:

+---------------------------------------------------------------------------------------------------+
| Node Name    Number    IP Address       Port     Status                          Actions          |
+---------------------------------------------------------------------------------------------------+
| reg2-1       1         10.99.16.20      7777     [Local] [✓ In Kernel]          —                |
| reg2-2       2         10.99.16.21      7777     [✓ In Kernel]                   [Remove]         |
| reg2-3       3         10.99.16.22      7777     [✓ In Kernel]                   [Remove]         |
| reg2-4       4         10.99.16.250     7777     [⚠ Not in Kernel]               [Remove]         |
+---------------------------------------------------------------------------------------------------+

مؤشرات حالة العقدة:

  • شارة Local: تشير إلى أن هذه العقدة تتوافق مع مضيف Vapor المحلي الحالي.
  • ✓ In Kernel (شارة خضراء): تؤكد التعرف على العقدة بشكل نشط في ذاكرة نواة Linux الحية.
  • ⚠ Not in Kernel (شارة صفراء): تشير إلى وجود العقدة في /etc/ocfs2/cluster.conf ولكنها مفقودة من ذاكرة النواة الحية. استخدم Sync to Kernel لتسجيلها مباشرة.

إضافة عقدة:

  1. أسفل قسم Nodes، افتح نموذج Add Node.
  2. أدخل Node Name (مثل n04 أو host-4)، ورقم العقدة Node Number (فهرس الخانة)، وعنوان IP Address، والمنفذ Port (الافتراضي 7777).
  3. انقر فوق Add Node.
  4. يقوم Vapor تلقائيًا بحفظ العقدة في /etc/ocfs2/cluster.conf وينفذ التسجيل المباشر فورًا لمزامنة العقدة في ذاكرة النواة دون أي فترة توقف.

إزالة عقدة:

  • انقر فوق Remove بجانب العقدة لحذف إدخالها من ملف التكوين.

3. مناطق نبضات القلب (الوضع العالمي)

عند تمكين وضع نبضات القلب العالمي، يتيح قسم Heartbeat Regions للمسؤولين:

  • إضافة مسارات أجهزة الكتل (مثل /dev/mapper/mpatha أو /dev/sdb) للمشاركة في نبضات قلب العنقود.
  • إزالة أجهزة نبضات القلب غير المستخدمة.

سير عمل وضع الصيانة (Maintenance Mode)

قبل إجراء صيانة لشبكة التخزين قد تؤدي إلى انقطاع (مثل ترقيات البرامج الثابتة للمحولات، أو إعادة تكوين المسارات المتعددة، أو استبدال HBA/NIC)، ضع المضيف في وضع الصيانة:

  1. انقر فوق Enter Maintenance في رأس العنقود.
  2. يجري Vapor فحص أمان أولي:
    • يحدد جميع أنظمة ملفات OCFS2 المثبتة.
    • يتحقق مما إذا كانت الأقراص الافتراضية للآلات الافتراضية أو أحمال العمل النشطة تستخدم التخزين.
  3. يلغي تثبيت جميع مجمعات تخزين OCFS2 النشطة بنظافة.
  4. يوقف خدمات نبضات القلب ويلغي تسجيل العقدة من حزمة O2CB.
  5. بمجرد اكتمال العمل الفعلي، انقر فوق Exit Maintenance لإعادة تسجيل العنقود وبدء نبضات القلب وإعادة تثبيت مخازن البيانات المشتركة.

لا تقم أبدًا بإلغاء التثبيت القسري أثناء تشغيل الآلات الافتراضية

سيؤدي إيقاف تشغيل المضيف فجأة دون إلغاء تثبيت أنظمة ملفات OCFS2 النشطة إلى تفعيل الحماية الذاتية (Self-fencing / إعادة التشغيل الفوري) لـ O2CB لمنع تلف البيانات الناتج عن انقسام الدماغ (Split-brain).


مرجع REST API

يوفر Vapor واجهة برمجة تطبيقات REST كاملة لإدارة عنقود O2CB:

الطريقةنقطة النهايةالوصف
GET/storage/o2cb/clustersسرد جميع عناقيد O2CB المهيأة.
POST/storage/o2cb/clustersإنشاء تعريف عنقود O2CB جديد.
GET/storage/o2cb/clusters/{name}الحصول على تفاصيل تكوين العنقود والعقد.
DELETE/storage/o2cb/clusters/{name}حذف تكوين عنقود O2CB.
GET/storage/o2cb/clusters/{name}/statusالاستعلام عن حالة النواة الحية للعنقود.
POST/storage/o2cb/clusters/{name}/registerتسجيل العنقود ديناميكيًا ومزامنة العقد مع النواة.
POST/storage/o2cb/clusters/{name}/unregisterإلغاء تسجيل العنقود من ذاكرة النواة الحية.
GET/storage/o2cb/clusters/{name}/nodesسرد جميع العقد الأعضاء مع حالة النواة.
POST/storage/o2cb/clusters/{name}/nodesإضافة عقدة عضو جديدة وتسجيلها تلقائيًا مباشرة.
DELETE/storage/o2cb/clusters/{name}/nodes/{node}إزالة عقدة عضو.
GET/storage/o2cb/clusters/{name}/heartbeatsسرد جميع مناطق نبضات القلب المهيأة.
POST/storage/o2cb/clusters/{name}/heartbeatsإضافة جهاز منطقة نبضات قلب.
DELETE/storage/o2cb/clusters/{name}/heartbeats/{device}إزالة جهاز منطقة نبضات قلب.
PUT/storage/o2cb/clusters/{name}/heartbeat-modeتعيين وضع نبضات القلب (local أو global).
GET/storage/o2cb/clusters/{name}/maintenance/preflightإجراء فحص أولي قبل الدخول في وضع الصيانة.
POST/storage/o2cb/clusters/{name}/maintenance/enterالدخول بأمان في وضع صيانة O2CB.
POST/storage/o2cb/clusters/{name}/maintenance/exitالخروج من وضع الصيانة وإعادة تثبيت مخازن البيانات.

مرجع CLI

يمكن للمسؤولين الذين لديهم وصول عبر SSH أو وحدة التحكم فحص حالة O2CB باستخدام أدوات CLI القياسية:

bash
# التحقق من حالة العنقود في ذاكرة النواة
sudo o2cb cluster-status <اسم-العنقود>

# تسجيل التكوين في النواة قيد التشغيل
sudo o2cb register-cluster <اسم-العنقود>

# إلغاء تسجيل العنقود من النواة
sudo o2cb unregister-cluster <اسم-العنقود>

# فحص العقد النشطة في configfs للنواة
ls -la /sys/kernel/config/cluster/<اسم-العنقود>/node/

# بدء وإيقاف خدمة نبضات القلب العامة
sudo o2cb start-heartbeat <اسم-العنقود>
sudo o2cb stop-heartbeat <اسم-العنقود>

استكشاف الأخطاء وإصلاحها وأفضل الممارسات

1. حل تعارض حالة العقدة "Not in Kernel"

  • السبب: تمت إضافة العقدة إلى /etc/ocfs2/cluster.conf مباشرة أو أثناء عدم اتصال حزمة العنقود.
  • الحل: انقر فوق زر Sync to Kernel في واجهة مستخدم Vapor أو نفذ sudo o2cb register-cluster <اسم-العنقود> عبر CLI.

2. متطلبات الجدار الناري للشبكة

  • يجب أن تكون جميع عقد العنقود المشاركة قادرة على الاتصال ثنائي الاتجاه عبر منفذ TCP 7777. تأكد من أن قواعد الجدار الناري تسمح بحركة المرور بين واجهات شبكة التخزين:
    bash
    sudo ufw allow 7777/tcp
    # أو باستخدام firewalld:
    sudo firewall-cmd --permanent --add-port=7777/tcp && sudo firewall-cmd --reload

3. قواعد الحماية (Fencing) والنصاب القانوني (Quorum)

  • يستخدم OCFS2 خوارزمية نصاب الأغلبية. في حال انقطاع الاتصال بين العقد، ستعزل الأجزاء الأقلية نفسها تلقائيًا (إعادة تشغيل فورية) لحماية سلامة البيانات. تأكد من تكوين روابط شبكة مكررة (Bonds / Multipath) على واجهات التخزين.