إدارة عنقود 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) ---+- التكوين الثابت (
/etc/ocfs2/cluster.conf):- ملف التكوين المحفوظ على القرص الذي يحدد اسم العنقود، وخانات العقد، وأسماء العقد، وعناوين IP، والمنافذ (الافتراضي
7777)، ومناطق نبضات القلب العامة.
- ملف التكوين المحفوظ على القرص الذي يحدد اسم العنقود، وخانات العقد، وأسماء العقد، وعناوين IP، والمنافذ (الافتراضي
- ذاكرة النواة الحية (
/sys/kernel/config/cluster/<cluster>/):- نظام ملفات النواة الديناميكي
configfsالذي يمثل كائنات العنقود النشطة في الذاكرة. لكي تشارك العقدة في اتصالات العنقود وقفل DLM، يجب أن يكون تعريفها موجودًا في ذاكرة النواة.
- نظام ملفات النواة الديناميكي
- التسجيل المباشر الديناميكي:
- يؤدي تشغيل
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: يلغي تثبيت أنظمة الملفات النشطة بنظافة ويلغي تسجيل العقدة من العنقود قبل صيانة المضيف.
- Register Cluster / Sync to Kernel: يحلل
- قائمة الإجراءات (
⋮):- 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 لتسجيلها مباشرة.
إضافة عقدة:
- أسفل قسم Nodes، افتح نموذج Add Node.
- أدخل Node Name (مثل
n04أوhost-4)، ورقم العقدة Node Number (فهرس الخانة)، وعنوان IP Address، والمنفذ Port (الافتراضي7777). - انقر فوق Add Node.
- يقوم Vapor تلقائيًا بحفظ العقدة في
/etc/ocfs2/cluster.confوينفذ التسجيل المباشر فورًا لمزامنة العقدة في ذاكرة النواة دون أي فترة توقف.
إزالة عقدة:
- انقر فوق Remove بجانب العقدة لحذف إدخالها من ملف التكوين.
3. مناطق نبضات القلب (الوضع العالمي)
عند تمكين وضع نبضات القلب العالمي، يتيح قسم Heartbeat Regions للمسؤولين:
- إضافة مسارات أجهزة الكتل (مثل
/dev/mapper/mpathaأو/dev/sdb) للمشاركة في نبضات قلب العنقود. - إزالة أجهزة نبضات القلب غير المستخدمة.
سير عمل وضع الصيانة (Maintenance Mode)
قبل إجراء صيانة لشبكة التخزين قد تؤدي إلى انقطاع (مثل ترقيات البرامج الثابتة للمحولات، أو إعادة تكوين المسارات المتعددة، أو استبدال HBA/NIC)، ضع المضيف في وضع الصيانة:
- انقر فوق Enter Maintenance في رأس العنقود.
- يجري Vapor فحص أمان أولي:
- يحدد جميع أنظمة ملفات OCFS2 المثبتة.
- يتحقق مما إذا كانت الأقراص الافتراضية للآلات الافتراضية أو أحمال العمل النشطة تستخدم التخزين.
- يلغي تثبيت جميع مجمعات تخزين OCFS2 النشطة بنظافة.
- يوقف خدمات نبضات القلب ويلغي تسجيل العقدة من حزمة O2CB.
- بمجرد اكتمال العمل الفعلي، انقر فوق 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 القياسية:
# التحقق من حالة العنقود في ذاكرة النواة
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. تأكد من أن قواعد الجدار الناري تسمح بحركة المرور بين واجهات شبكة التخزين:bashsudo ufw allow 7777/tcp # أو باستخدام firewalld: sudo firewall-cmd --permanent --add-port=7777/tcp && sudo firewall-cmd --reload
3. قواعد الحماية (Fencing) والنصاب القانوني (Quorum)
- يستخدم OCFS2 خوارزمية نصاب الأغلبية. في حال انقطاع الاتصال بين العقد، ستعزل الأجزاء الأقلية نفسها تلقائيًا (إعادة تشغيل فورية) لحماية سلامة البيانات. تأكد من تكوين روابط شبكة مكررة (Bonds / Multipath) على واجهات التخزين.