تكون صيانة الوكيل المخطط لها أكثر أمانًا عندما يستطيع الوكيل العكسي إعادة التحميل أو إعادة التشغيل بشكل مستقل عن خدمات المصادقة وحالة الجلسات الموجودة خلفه.
عادةً لا تحتاج عملية الوكيل إلى امتلاك حالة تسجيل الدخول التي تمررها. قبل الصيانة، حدّد المكوّن الذي يوقّع ملفات تعريف الارتباط، ويخزّن الجلسات على الخادم، وينهي المصادقة، ويستنزف اتصالات HTTP النشطة. أبقِ هذه المكوّنات التي تدير الحالة قيد التشغيل، وفضّل إعادة تحميل الوكيل بسلاسة عندما تقتصر التغييرات على الإعدادات، وتحقق من أن الاستبدال الكامل للوكيل يعيد الاتصال ببوابة المصادقة نفسها ومخزن الجلسات نفسه مع بقاء الأسرار دون تغيير.
افصل دورة حياة الوكيل عن دورة حياة خدمة المصادقة
تحقق من تبعيات Compose، وسياسات إعادة التشغيل، والبرامج النصية المشتركة، وإجراءات مدير الحزمة، للتأكد من أن إعادة تشغيل الوكيل لا تؤدي تلقائيًا إلى إعادة إنشاء بوابة المصادقة أو التطبيق أو Redis أو قاعدة البيانات.
يستخدم أحد أمثلة بنية الجلسات Redis خارج دورة حياة الوكيل، بحيث يمكن لنسخ متعددة من خدمة المصادقة وإعادة التشغيل مشاركة الواجهة الخلفية نفسها للجلسات.
لا تجمع كل خدمات الحافة ضمن أمر إعادة تشغيل واحد وغير مميز. إذا كان تغيير الشهادة أو المسار يؤثر في الوكيل فقط، فاترك الخدمات التي تتحقق من حالة تسجيل الدخول الحالية دون تغيير.
أعد تحميل الإعدادات بدلًا من إعادة التشغيل متى أمكن
بالنسبة إلى تغييرات المسارات أو الشهادات أو الرؤوس، استخدم مسار إعادة التحميل السلس المدعوم من الوكيل بدلًا من إيقاف الخدمة. تحقّق من الإعدادات قبل تطبيقها حتى لا يحوّل خطأ نحوي الصيانة المخطط لها إلى توقف للخدمة.
يوضح دليل API7 الخاص بـ NGINX كيف تقوم العمليات العاملة القديمة باستنزاف الاتصالات بينما تستقبل العمليات الجديدة الطلبات وفق الإعدادات المحدّثة.
تحافظ إعادة التحميل على مجموعة عمليات الوكيل، لكنها لا تحمي خدمة مصادقة منفصلة إذا كان نص النشر يعيد تشغيل تلك الخدمة أيضًا. أبقِ هذين السؤالين المتعلقين بدورة الحياة مستقلين.
حافظ على تخزين الجلسات الخارجي أثناء استبدال الوكيل
إذا كانت بوابة المصادقة تخزّن بيانات الجلسات خارج ملفات تعريف الارتباط، فأبقِ Redis أو أي واجهة خلفية أخرى للجلسات مستمرة ودون تغيير أثناء عملية الوكيل. سجّل عنوان الواجهة الخلفية والسر المستخدمَين من كل نسخة من خدمة المصادقة.
يدعم OAuth2 Proxy استخدام Redis كتخزين مشترك للجلسات عندما يلزم مشاركة الجلسات بين النسخ.
لا تخلط بين ذاكرة تخزين مؤقتة قابلة للتخلص منها وحالة تسجيل الدخول المعتمدة. إذا كانت الواجهة الخلفية للجلسات مطلوبة للتحقق من المستخدمين الحاليين، فلا تعِد تشغيلها أو تفرغها إلا وفق إجراء الصيانة المختبر الخاص بها.
حافظ على ثبات أسرار ملفات تعريف الارتباط والتوقيع
سجّل سر تشفير ملفات تعريف الارتباط أو توقيعها الذي تستخدمه بوابة المصادقة، وتأكد من أن حزمة الوكيل البديلة تربط مصدر السر نفسه. سيؤدي إنشاء قيمة جديدة أثناء إعادة النشر إلى إبطال ملفات تعريف الارتباط السليمة الموجودة في المتصفحات.
يشير دليل جلسات الوكيل العكسي إلى أن سياسة الجلسات المستقرة تستمر بعد إعادة التشغيل، لا بناءً على عمر اتصال TCP واحد.
دوّر أسرار التوقيع كتغيير أمني منفصل مع توقع صريح لتسجيل الخروج أو استراتيجية تداخل. لا تجمع تدوير الأسرار مع إعادة تحميل عادية للوكيل المخطط لها ما لم يكن إبطال الجلسات مقصودًا.
استنزف الاتصالات أثناء إعادة تشغيل الوكيل بالكامل
عندما يلزم استبدال ملف الوكيل الثنائي أو الحاوية، استخدم آلية إعادة التشغيل السلسة أو دون انقطاع المتاحة لديه، حتى لا تُقطع الطلبات القائمة في منتصف الاستجابة. حدّد مهلة صيانة للاتصالات طويلة الأمد.
يوضح دليل إعادة تحميل HAProxy كيفية إجراء إعادة تحميل دون انقطاع مع الحفاظ على الاتصالات بدلًا من إنهاء العملية القديمة فورًا.
استمرارية الاتصال واستمرارية تسجيل الدخول أمران مختلفان. حتى إذا أعاد WebSocket الاتصال، ينبغي أن تظل الجلسة صالحة لأن الوكيل البديل يصل إلى خدمات المصادقة والحالة نفسها.
اختبر جلسة واحدة قبل الصيانة المخطط لها وبعدها
استخدم متصفحًا واحدًا مسجّل الدخول وجلسة خاصة جديدة واحدة. سجّل ملف تعريف ارتباط الجلسة، ومسار الوكيل، وخدمة المصادقة، والواجهة الخلفية قبل الصيانة، ثم أعد تحميل الوكيل فقط أو استبدله وكرّر الطلب المحمي نفسه.
يوصي دليل عمليات Caddy باستخدام إعادة التحميل بدلًا من إعادة التشغيل الكامل لتحديثات الإعدادات المخطط لها.
يكون تصميم الصيانة ناجحًا عندما تبقى عمليات تسجيل الدخول الحالية صالحة، وتنجح عمليات تسجيل الدخول الجديدة، ولا تتلقى أي تبعية تدير الحالة إعادة تشغيل غير مقصودة. وتظل مقالة ZimaSpace ذات الصلة حول فقدان الجلسات بعد إعادة تشغيل الوكيل مسار الاسترداد الصحيح إذا ظل المستخدمون خارج حساباتهم.
الأسئلة الشائعة
هل تضمن إعادة تحميل الوكيل بسلاسة بقاء المستخدمين مسجّلين الدخول؟
لا. فهي تحمي اتصالات الوكيل، لكن قد يخرج المستخدمون من حساباتهم إذا تغيّرت خدمة المصادقة أو مخزن الجلسات أو سر توقيع ملفات تعريف الارتباط في الوقت نفسه.
هل ينبغي أن يبقى Redis دائمًا بعد إعادة تشغيل الوكيل؟
فقط عندما يخزّن Redis حالة الجلسات أو تبعية مستمرة أخرى للمصادقة. أما نسخة Redis المخصصة للتخزين المؤقت فقط فلها حدود استرداد مختلفة.
هل يكفي الاحتفاظ باسم ملف تعريف الارتباط نفسه؟
لا. يجب أيضًا أن يظل سر التوقيع أو التشفير وحالة الجلسات في الواجهة الخلفية متوافقين مع ملف تعريف الارتباط الموجود لدى المتصفح.
الدعم والنصائح
المزيد للقراءة

هل يمكن لـ Plex مشاركة وحدة معالجة الرسومات (GPU) مع حاوية Docker أخرى؟
يمكن لـ Plex وحاوية أخرى غالبًا الوصول إلى وحدة معالجة الرسومات نفسها، لكن يجب اختبار دعم برنامج التشغيل، وتعيين الجهاز، وحِمل محرّك الفيديو، والذاكرة،...

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

كيفية إعداد ذاكرة التخزين المؤقت وموقع التخزين المؤقت لتحويل الترميز في Plex
احمِ حالة Plex الدائمة مع وضع الملفات المؤقتة للتحويل على مساحة تخزين محلية مناسبة، ثم تحقّق من التنظيف والمساحة الحرة وسلوك إعادة التشغيل.

