إعداد خادم عالي التوفر 3

هل يدعم Discourse تشغيل عدة آلات (كل منها يحتوي على حاوية Docker واحدة) خلف موزع أحمال مستقل؟

أحتاج إلى إعداد Discourse يتحمل فشل أحد الخوادم، لذا فإن ردي القياسي هو تكوين 3 خوادم خلف موزع أحمال (حيث يتولى موزع الأحمال إدارة شهادة SSL).

لقد قمت بتكوين خوادم PostgreSQL و Redis خارجية مستقلة لـ Discourse. (يتم ذلك كله على منصة Google Cloud). أستخدم أداة تشغيل Discourse لتكوين حاوية Docker مخصصة للويب فقط.

  1. هل يدعم Discourse تشغيل حاويات متعددة عندما تكون كل حاوية على آلة مختلفة؟
  2. هل يجب أن أنسخ حاوية Docker المنشأة من الآلة الأولى إلى الآلات الأخرى؟
  3. كيف يتم التعامل مع الشعارات المرفوعة؟
  4. هل تُخزن الشعارات المرفوعة وأيقونات المفضلة (favicons) وما شابه ذلك في قاعدة البيانات؟

شكرًا جزيلاً على المساعدة.

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

  1. نعم
  2. نعم
  3. يجب عليك إعداد استخدام التخزين الكائني للرفع (S3 ونسخه)
  4. لا، حيث يتم إرسالها إلى التخزين الكائني كما ذُكر في النقطة 3.

شكرًا لك يا رافائيل. نقدر ذلك كثيرًا.

واجهت مشكلة تتعلق بإنهاء SSL في موزع الأحمال. حيث يحدد Discourse جميع روابطه كـ HTTP.

هل توجد طريقة لجعل Discourse يدرك أن روابطه يجب أن تكون https؟

نعم، انتقل إلى وحدة تحكم Rails وقم بتعيينها على https باستخدام:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.force_https = true

ممتاز. شكرًا مرة أخرى.

أفترض أنني يمكنني إضافة ذلك إلى ملف app.yml:
- exec: rails c "SiteSetting.force_https = true"

لست على دراية بـ Rails. في الأمر أعلاه، هل يجب أن يكون ‘rails c’ أم ‘rails r’؟

لدينا بالفعل مثال على تغيير إعدادات الموقع أثناء التمهيد في ملفنا النموذجي:

نعم، هذا هو المكان الذي نسخت منه الأمر الخاص بي.

سؤال أخير. هل يتم مراقبة حاوية Docker؟ إذا توقفت حاوية Docker لأي سبب، هل قام launcher بإعداد أي شيء لإعادة تشغيلها؟

نعم، يطلب launcher من Docker إعادة تشغيل الحاويات تلقائيًا.

حسناً، إذن لدي الآن نظام Discourse يعمل على جهاز واحد. لدي جهازان آخران. تم توجيه مجلد Docker المشترك /shared إلى دليل NFS للسماح لجميع الأجهزة بالوصول إلى الملفات المرفوعة (خاصة الشعارات وما إلى ذلك).

لقد قمت بنسخ صور Docker إلى الجهازين 2 و 3 (docker save -o app-image local_discourse/app ثم docker load -i app-image).

كنت أعتقد أن الأمر ./launcher start app البسيط سيعمل، لكنه يحاول التحقق من containers/app.yml.

هل سأواجه مشاكل إذا سمحت بـ app.yml بالتحقق (وإجراء تغييرات) على قاعدة البيانات من الجهازين 2 و 3؟

هل توجد طريقة أفضل لتشغيل ثلاث أجهزة في إعداد واحد؟

لديك خياران:

  • استخدم – أعتقد أنه ./launcher start-command app – على الجهاز المُعد بالكامل (جهاز البناء) للحصول على سطر أوامر Docker كامل
  • انسخ ملف app.yml وقم بما حاولت للتو (launcher start).

يمكنك تعيين المتغير البيئي DISCOURSE_FORCE_HTTPS: true