التوفّر العالي (HA) هو أكثر ميزة تُطلَب في بروكسموكس وأقلّها فهماً. الجميع يريد «أن تعود الخدمة تلقائياً إن مات السيرفر»، وقليلون يعرفون أن تفعيله على بنية غير جاهزة يزيد احتمال التوقّف بدل أن ينقصه.
هذه المقالة الأخيرة في السلسلة تشرحه من الواجهة على كلاستر يعمل فعلاً: كيف يبدو وهو مسلَّح، وما الذي غيّره بروكسموكس 9 جذرياً، ومتى الجواب الصحيح هو «لا تفعّله».
كل لقطة في هذه السلسلة من بروكسموكس حقيقي يعمل. نسخة Proxmox VE 9.2 كاملة بأجهزة وحاويات ومخزّنات ومهامّ نسخ فعلية، شغّلناها معزولة لهذا الغرض حتى لا يظهر اسم زبون واحد، ودخلنا لوحتها عبر نفق مشفّر لا عبر الإنترنت. وما تراه في كل صورة هو ما ستراه أنت حرفياً على شاشتك.
ما الذي يفعله HA بالضبط؟
| يحمي من | لا يحمي من |
|---|---|
| موت عقدة كاملة | خطأ داخل نظام الضيف |
| انقطاع كهرباء عن سيرفر واحد | حذف بيانات خاطئ |
| عطل عتاد مفاجئ | تلف قاعدة بيانات |
| انفصال عقدة عن الشبكة | هجوم فدية |
| تجمّد نواة العقدة | خطأ في إعداد التطبيق |
⚠️ HA ليس بديلاً عن النسخ الاحتياطي، ولا عن المراقبة، ولا عن تصميم تطبيق سليم. هو يعالج حالة واحدة بالضبط: سقوط عقدة. وكل ما عدا ذلك يحتاج أدوات أخرى — وقد شرحناها في مسارات هذه السلسلة السابقة.
قبل التفعيل
بروكسموكس نفسه يكتب لك الشرط في الحوار. ثلاثة أصوات، لا عقدتان. والسبب من مقالة الكلاستر: بعقدتين، سقوط واحدة يُفقد النصاب — فلا تستطيع الباقية أن تقرّر شيئاً، ولا أن تشغّل ما سقط. وبذلك يصير HA بعقدتين ديكوراً لا حماية.
خانات الحوار وماذا تعني
| الخانة | الافتراضي | ماذا تفعل |
|---|---|---|
| VM / CT | — | المورد الذي سيُدار |
| Max. Restart | 1 | كم مرّة يُحاوَل تشغيله على نفس العقدة قبل نقله |
| Max. Relocate | 1 | كم مرّة يُنقَل إلى عقدة أخرى قبل الاستسلام |
| Failback | مفعّل | هل يعود إلى عقدته المفضّلة حين تتعافى |
| Auto-Rebalance | مفعّل | هل يُنقَل تلقائياً لتوزيع الحمل |
| Request State | started | الحالة المطلوبة دائماً — أو stopped أو ignored |
⚠️ Request State = started يعني «شغّله دائماً». إن أطفأت الجهاز يدوياً فسيعيده HA تشغيله. وهذا يفاجئ الجميع أوّل مرّة. لإطفاء مورد مُدار فعلياً غيّر حالته المطلوبة إلى stopped — لا تضغط Shutdown وتتعجّب.
⭐ بعد التفعيل — هكذا يبدو HA وهو يعمل
هذا الجدول هو كل ما يجب أن تعرفه لقراءة الشاشة:
| السطر | ماذا يعني | ماذا لو كان خطأ |
|---|---|---|
| quorum: OK | الكلاستر يملك أغلبية | أي شيء آخر ⇒ HA مجمّد |
| fencing: armed (CRM watchdog active) | مؤقّت الحراسة يعمل — النظام قادر على عزل عقدة فاشلة | standby ⇒ لا حماية فعلية بعد |
| master | العقدة التي تتّخذ القرارات حالياً | غيابه ⇒ لا قرارات تُتَّخذ |
| lrm لكل عقدة | الوكيل المحلّي الذي ينفّذ على تلك العقدة | عقدة بلا lrm نشط لا تستقبل موارد |
التقسيم بسيط: CRM واحد في الكلاستر يقرّر، وLRM على كل عقدة ينفّذ. ولو مات العقل انتُخب غيره؛ ولو مات الوكيل على عقدة اعتُبرت تلك العقدة خارج الخدمة.
⭐ تغيير جوهري في بروكسموكس ٩: المجموعات صارت قواعد
من يعرف بروكسموكس 7 و8 يبحث عن HA Groups ولن يجدها. وحين جرّبنا إنشاء مجموعة من سطر الأوامر كان الجواب صريحاً:
| ما جرّبناه | ما ردّه النظام |
|---|---|
| إنشاء مجموعة HA | cannot create group: ha groups have been migrated to rules |
| إضافة مورد مع تحديد مجموعته | invalid parameter 'group': ha groups have been migrated to rules |
⚠️ هذا يكسر كل سكربت أو دليل مكتوب لبروكسموكس ٨. إن كانت لديك أتمتة تنشئ مجموعات HA فستفشل صامتةً أو بخطأ غامض بعد الترقية. راجعها قبل أن ترقّي، لا بعد أن تكتشف أن مواردك بلا تفضيل عقدة.
البديل: قواعد التقارب
لاحظ ثلاثة تفاصيل في هذه اللقطة تجعلها أفضل من المجموعات القديمة:
| التفصيل | لماذا يهمّ |
|---|---|
| جدول العقد يعرض الذاكرة والمعالج لحظياً | تختار العقدة المفضّلة وأنت ترى حملها لا تخمّنه |
| عمود Priority لكل عقدة | الأعلى رقماً يُفضَّل؛ والمتساوون يتقاسمون |
| خانة Strict | مُطفأة ⇒ العقد الأخرى بديل عند الضرورة. مفعّلة ⇒ لا يعمل المورد إلا على المحدّد |
⚠️ Strict سلاح ذو حدّين. فعّلها فقط حين يكون تشغيل المورد على عقدة أخرى مستحيلاً — كترخيص مربوط بعتاد، أو جهاز ممرَّر. وفي غير ذلك تجعل HA يُبقي الخدمة متوقّفة بدل أن يشغّلها على عقدة سليمة.
النوع الثاني: تقارب الموارد ببعضها
| النمط | مثال عملي |
|---|---|
| معاً | خادم تطبيق وقاعدة بياناته — قربهما يقلّل زمن الاستجابة |
| متفرّقان | خادما DNS أو نسختا موازن حمل — وجودهما على عقدة واحدة يُلغي الغرض منهما |
قاعدة «متفرّقان» هي أكثر ما يُنسى. كثيرون يبنون نسختين احتياطيتين من خدمة ثم يترك HA الاثنتين على نفس العقدة — فتسقط العقدة وتسقط النسختان معاً. سطر واحد في هذا الحوار يمنع ذلك نهائياً.
Fencing — الجزء المخيف والضروري
المشكلة التي يحلّها fencing اسمها «الدماغ المنقسم»: عقدة فقدت اتصالها بالشبكة لكنها ما تزال تعمل وتكتب على التخزين. لو شغّل الكلاستر نسخة ثانية من نفس الجهاز على عقدة أخرى، لكتبت نسختان على نفس الأقراص — وهذا تلف مؤكّد للبيانات.
| الخطوة | ماذا يحدث |
|---|---|
| ١ | العقدة تفقد النصاب |
| ٢ | وكيلها المحلّي يتوقّف عن تجديد مؤقّت الحراسة |
| ٣ | المؤقّت ينتهي فيُعيد تشغيل العقدة قسرياً |
| ٤ | الكلاستر يتيقّن أنها لم تعد تكتب |
| ٥ | عندها فقط تُشغَّل الموارد في مكان آخر |
⚠️ HA يعيد تشغيل عقدتك قسرياً — بالتصميم. ومن ثمّ: عقدة تفقد اتصالها بسبب سويتش متذبذب ستُعاد تشغيلها. شبكة كلاستر غير مستقرّة + HA مفعّل = إعادات تشغيل عشوائية، وهذا هو المقصود بأن التفعيل على بنية غير جاهزة أسوأ من تركه.
موازن الحمل التلقائي (CRS)
| الخيار | ماذا يفعل | التوصية |
|---|---|---|
| أساس الاختيار | الذاكرة وحدها، أو الذاكرة والمعالج | الذاكرة عادةً — هي المورد النادر فعلاً |
| إعادة التوازن عند البدء | يختار أفضل عقدة عند كل تشغيل مورد | مفيد ومنخفض المخاطرة |
| إعادة التوازن الدورية | يرحّل الموارد تلقائياً لتوزيع الحمل | ⚠️ فعّله فقط مع تخزين مشترك |
⚠️ إعادة التوازن الدورية بلا تخزين مشترك كارثة صامتة. كل ترحيل سينسخ القرص كاملاً عبر الشبكة — تلقائياً وبلا إذنك. فيصير الكلاستر مشغولاً بنقل أقراص بدل تشغيل الخدمات.
شاهدناه يعمل فعلاً
متطلّبات HA الحقيقية
| المتطلّب | لماذا | إلزامي؟ |
|---|---|---|
| ثلاث عقد (أو عقدتان + شاهد) | النصاب | نعم |
| تخزين مشترك | وإلّا فالبيانات لا تنتقل مع المورد | عملياً نعم |
| شبكة كلاستر مستقرّة | وإلّا إعادات تشغيل عشوائية | نعم |
| وقت متزامن | قرارات HA مبنية على الزمن | نعم |
| عتاد متقارب | ليستقبل أي مورد على أي عقدة | مستحسن بقوّة |
| سعة احتياطية | عقدة ساقطة يجب أن يستوعب حملَها الباقون | نعم |
حساب السعة الذي يُنسى: ثلاث عقد كلٌّ منها ممتلئة ٩٠٪ تعني أن سقوط واحدة لا يجد مكاناً لمواردها. القاعدة العملية: لا تتجاوز (N−1)/N من السعة — أي ٦٦٪ لثلاث عقد و٧٥٪ لأربع. وإلّا فإن HA سيحاول ويفشل.
متى لا تفعّل HA؟
| الحالة | البديل الأفضل |
|---|---|
| عقدتان بلا شاهد | أضف شاهداً أولاً |
| تخزين محلّي فقط | نسخ متزامن + استرجاع مُجرَّب |
| شبكة كلاستر مشتركة ومزدحمة | افصل شبكة النبضات أولاً |
| خدمة تحتمل توقّف ١٥ دقيقة | استرجاع يدوي أبسط وأأمن |
| تطبيق يملك تجميعه الخاصّ | دَعه يديره — HA قد يتعارض معه |
أخطاء شائعة وحلولها
| العرَض | السبب | الحلّ |
|---|---|---|
| المورد عالق في queued | وكيل LRM غير نشط | شغّل خدمتَي HA على العقد |
| جهاز أطفأته يعود وحده | Request State = started | غيّرها إلى stopped |
| عقد تُعاد تشغيلها عشوائياً | شبكة كلاستر متذبذبة | أوقف HA وأصلح الشبكة أولاً |
| المورد لا ينتقل رغم سقوط عقدته | قاعدة Strict على عقدة واحدة | راجع قواعد التقارب |
| fencing: standby دائماً | خدمات HA لم تبدأ بعد | تبدأ تلقائياً عند أوّل مورد مُدار |
| سكربت مجموعات لا يعمل | المجموعات أُلغيت في الإصدار ٩ | حوّله إلى قواعد تقارب |
أسئلة شائعة
كم يستغرق التعافي؟
دقيقة إلى دقيقتين عادةً: كشف السقوط، ثم انتهاء مؤقّت الحراسة والتيقّن من العزل، ثم تشغيل المورد. ليس فورياً — ولا يُفترض أن يكون.
هل يعمل HA مع الحاويات؟
نعم، تماماً كالأجهزة. لكن تذكّر من مقالة الترحيل أن الحاويات لا تُرحَّل حيّاً — أي أن النقل المخطَّط لها يعني انقطاعاً.
هل أستطيع تفعيله لجهاز واحد فقط؟
نعم، وهذه أفضل طريقة للبدء: مورد واحد غير حرج، جرّب عليه سقوط عقدة عمداً، ثم وسّع.
ماذا لو سقطت كل العقد؟
لا شيء يعمل. HA يعالج سقوطاً جزئياً لا كلّياً — وللكارثة الكاملة تحتاج نسخاً خارج الموقع.
هل يكلّف أداءً؟
لا يُذكر. خدمتان خفيفتان ومؤقّت حراسة. الكلفة في المتطلّبات لا في الاستهلاك.
ما أوّل خطوة عملية؟
ثلاث عقد وتخزين مشترك وشبكة نبضات منفصلة. بدون هذه الثلاثة، تفعيل HA يمنحك شعوراً بالأمان لا أماناً.
خلاصة السلسلة — خمسة وعشرون مقالة
بدأنا من شاشة تسجيل الدخول وانتهينا بعقدتين تتبادلان الأجهزة وهي تعمل. وفي الطريق: الأساسيات والأجهزة والحاويات والصلاحيات؛ والتخزين بأنواعه وZFS ونقل الأقراص وامتلاء المخزّن؛ والشبكة والجدار الناري وSDN وتأمين اللوحة والسجلّات؛ والتشغيل اليومي من ضبط الموارد إلى النسخ والاسترجاع واللقطات وقراءة الرسوم؛ وأخيراً التوسّع بالكلاستر والترحيل والتمرير والترقية والتوفّر العالي.
وكل لقطة في المقالات الخمس والعشرين من بروكسموكس حقيقي يعمل — بما فيها اللقطات التي أظهرت رسائل خطأ وقوائم فارغة، لأن ما ستراه أنت على شاشتك هو هذا لا صورة مثالية.
وإن أردت أن تجرّب كل هذا بلا شراء عتاد: أجهزة مرام هوست الافتراضية تدعم الافتراضية المتداخلة، أي أنك تستطيع تنصيب بروكسموكس داخل جهاز افتراضي وتكرار كل ما في هذه السلسلة — بما فيه بناء كلاستر من عقدتين وتجربة الترحيل الحيّ بنفسك.
سلسلة «بروكسموكس من الداخل» — بلقطات حقيقية من الواجهة.
الأساسيات:
١. الواجهة ·
٢. أول جهاز ·
٣. الحاويات ·
٤. الصور والقوالب ·
٥. الصلاحيات
التخزين:
٦. أنواع التخزين ·
٧. إضافة قرص وتوسيعه ·
٨. ZFS ·
٩. نقل قرص ·
١٠. امتلاء التخزين
الشبكة والأمان:
١١. تبويب الشبكة ·
١٢. الجدار الناري ·
١٣. SDN ·
١٤. تأمين اللوحة ·
١٥. السجلّات
التشغيل اليومي:
١٦. ضبط الموارد ·
١٧. مهمّة النسخ ·
١٨. الاسترجاع ·
١٩. اللقطات ·
٢٠. قراءة الرسوم
التوسّع:
٢١. الكلاستر ·
٢٢. الترحيل الحيّ ·
٢٣. تمرير الأجهزة ·
٢٤. التحديث والترقية ·
٢٥. التوفّر العالي