بعد تغيير التهيئة، بعض الإعدادات غير متزامنة على العقد الشقيقة في إعداد Discourse متعدد العقد.

مرحباً،

في إعداد متعدد العقد مع حاوية web_only خلف موازن تحميل، لاحظت أن بعض الإعدادات عند تغييرها تُطبق فقط على عقدة واحدة (ربما تلك التي كنت متصلاً بها عبر موازن التحميل عند إجراء التغييرات). لذلك لاحظت هذه الإعدادات تحديداً: Global notice (إشعار عام)، Globally pinned posts (منشورات مثبتة عالمياً) والآن الأحدث، عند تغيير السمة لتحديث سمة مخصصة.

في النهاية، يتم تمثيل التغييرات للمستخدمين فقط إذا قام موازن التحميل بتوصيلهم بنفس العقدة التي تم إجراؤها فيها. مما يؤدي إلى تحميل صفحات مختلطة وعرض فوضوي للموقع في بعض الحالات.

الآن السؤال. هل أحتاج إلى تشغيل أمر إعادة تحميل التكوين في rake على جميع العقد بعد مثل هذه التغييرات أو ربما يجب إضافة متغير بيئة معين للحاوية عند تشغيلها، لإعادة التحميل التلقائي/وضع التجميع لنشر التكوين إلى العقد الشقيقة تلقائياً؟

نعم، يمكنك تجربة ما يلي:

su discourse -c 'bundle exec rake cache:clear'

بدلاً من ذلك، إذا كنت ترغب في الدخول إلى وحدة تحكم Rails، فإن SiteSetting.refresh! من المحتمل أن يفعل الشيء نفسه.

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

فقط للتحقق: هل لديك قاعدة بيانات Redis مشتركة بين جميع العقد؟ هذا ضروري لكي يعمل Discourse.

(تعمل بعض التطبيقات الأخرى مع Redis واحد لكل عقدة، ولكن محاولة القيام بذلك مع Discourse ستتسبب في أنواع المشكلات التي تصفها)

نعم. تتم مشاركة Redis بواسطة جميع مثيلات عقد Discourse. لقد قمت بإنشاء الإعداد ليكون عالي التوفر (HA)، لذلك هناك S3/Redis/PostgreSQL منفصلة.

هل تلاحظ أي رسائل خطأ مشابهة لـ Global messages on xx timed out, message bus is no longer functioning correctly داخل /logs؟

في السابق، اكتشفت أنه عندما تعمل Redis وناقل الرسائل على مضيفين منفصلين، تحدث مهلات زمنية، مما يؤدي إلى فشل في المزامنة بين عمال Unicorn المختلفين.

كان الحل البديل الخاص بي هو إعادة تحميل خادم Unicorn بالكامل بشكل دوري.

تم البحث في السجلات على جميع العقد، ولا تظهر مثل هذه الإدخالات في السجلات.

آه. بعد كل شيء، كانت هناك تلك الرسائل Global messages on xx timed out, message bus is no longer functioning correctly. لكنني بحثت عن طريق الخطأ في دليل السجلات الفعلي. الآن عند النظر في قسم أخطاء سجلات واجهة الويب، لاحظت بالفعل الإدخالات التي ذكرتها. أحتاج إلى التعود على حقيقة أن الأخطاء المختلفة تظهر في أماكن مختلفة لـ discourse. لا يزال من الجيد وجود ميزات في جانب الويب الخاص بـ discourse.