تتلقى مهمة cron تعيد تشغيل OpenVPN عند الساعة 04:10 كل يوم، وقد أبقت الأمور مستقرة لمدة سنة. لكنها أيضًا تقطع نفقًا سليمًا في ساعة ثابتة، ولا تفعل شيئًا حيال الانقطاع الذي يحدث فعليًا وقت الغداء. إعادة التشغيل وفق التقويم قرار صيانة. أما الاستعادة فتصميم مختلف بمحفّز محدد.

ثلاث صور للعطل تحتاج إلى ثلاثة مالكين مختلفين. اختر العطل أولًا، ويتبع الأسلوب تلقائيًا.

ثلاثة أعطال، ثلاثة مالكين

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

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

ما يمكن لخيار الاستمرارية فعله وما لا يمكنه

keepalive مساعد يتوسّع إلى زوج من ping و ping-restart، كما يوضّح مرجع خيارات الارتباط، والمهلات الزمنية التي ينتجها ليست متطابقة على الخادم والعميل. كما يمكن للقيم التي يدفعها الخادم أن تتجاوز ما ضبطه العميل محليًا، ولهذا قد لا تكون المهلة التي تبدو صحيحة في ملف محلي هي السارية.

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

ما يملكه مدير الخدمة

إذا خرج الخفير (daemon) من التنفيذ، فالمدير الذي بدأه يقرر ما يحدث بعد ذلك. سياسة إعادة تشغيل مرتبطة بالفشل، مع مهلة وحد لمعدل البدء، تتعامل مع حلقة انهيار دون تحويلها إلى قنبلة تفريع. تلك الإعدادات تتفاعل مع نتائج العملية والمهلات، ولا تكتشف عملية حية لكنها عديمة الفائدة. ليست هذه ثغرة تُرقّع بسياسة أوسع؛ إنها الحد بين دورة الحياة والاستمرارية.

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

متى تكون إعادة التشغيل المجدولة مشروعة

يمكن أن تكون إعادة التشغيل الموقوتة إجراء صيانة معقولًا: لها مالك ونافذة ونسخة محددة بالاسم وسبيل دخول مستقل. لكنها لا يمكن أن تكون سياسة موثوقية عامة تقطع الاتصال عن الجميع في ساعة ثابتة.

إذا كانت إعادة التشغيل موجودة للتحايل على تسرّب معروف أو حالة معلّقة، فاذكر ذلك في وصف الوحدة، وإلا أبقاها الشخص التالي إلى الأبد.

اختبر الحالات المهمة: يختفي النظير بينما تبقى العملية، وتخرج العملية، وتحتاج إعادة المحاولة إلى بيانات اعتماد جديدة، ويعود النفق بينما يبقى التطبيق معطلًا. راقب أي مكوّن يتفاعل وأي حالة يتركها خلفه.

السؤال الصحيح ليس كم مرة نعيد التشغيل، بل ما الذي ينبغي أن يلاحظ العطل أولًا.

مقالات ذات صلة