كيف يمكنك توسيع discourse أفقيًا؟

مرحبًا،
أنا مرتبك بشأن تعليمات التثبيت. هل توجد طريقة لتوسيع نطاق Discourse أفقيًا؟
على سبيل المثال: تشغيل حاويتين Docker أو أكثر على خوادم مختلفة، كل منها يشغل Discourse؟

في التعليمات من GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub

إعداد تكوين الحاويات المتعددة أكثر مرونة ومتانة، لكنه أيضًا أكثر تعقيدًا في الإعداد. يسمح لك إعداد الحاويات المتعددة بما يلي:

  • تقليل وقت التوقف عند الترقية إلى إصدارات جديدة من Discourse. يمكنك بدء تشغيل عمليات الويب الجديدة بينما يعمل موقعك، والتبديل إلى الصورة الجديدة فقط بعد اكتمال بنائها.
  • توسيع نطاق المنتدى الخاص بك ليشمل خوادم متعددة.
  • إضافة خوادم لأغراض التكرار.
  • تشغيل بعض الخدمات المطلوبة (مثل قاعدة البيانات) على أجهزة أكثر قوة.

إذا كنت ترغب في إعداد حاويات متعددة، راجع قوالب data.yml و web_only.yml في مجلد العينات. لتبسيط هذه العملية، سيقوم launcher بحقن متغير بيئة يسمى DISCOURSE_HOST_IP سيكون متاحًا داخل الصورة.

هل توجد مكان يمكنني فيه العثور على مزيد من المعلومات حول كيفية تشغيل الحاويات على خوادم مختلفة، وليس العديد من الحاويات على نفس الخادم؟

شكرًا لك

هناك الكثير من المناقشات ذات الصلة حول هل يمكن لـ Discourse إصدار صور Docker متكررة لا تحتاج إلى التمهيد؟.

ملخص الأمر هو:

  1. قم بتوفير خدمات خارجية لـ PostgreSQL و Redis وموزع الأحمال وقم بإعداد ملف app.yml لاستخدامها، مثل مثال تشغيل Discourse مع خادم PostgreSQL منفصل.

  2. قم بتشغيل ./launcher bootstrap app في مكان ما. سيؤدي هذا إلى إنشاء صورة حاوية على الجهاز المحلي. قم برفع هذه الصورة إلى خدمة سجل الحاويات الخاصة بك.

  3. الآن يمكنك تشغيل عدد غير محدود من النسخ، مع إخبار الجميع بتشغيل الصورة التي تم تصديرها في الخطوة السابقة.

4 إعجابات

يمكنك فعل شيء مثل تشغيل Docker الخاص بـ Discourse بجانب Apache وإنشاء حاويتين ويب مع وجود عكسي للوكيل في المقدمة.

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

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

في الغالب، أي إجراء غير التثبيت القياسي الرسمي لـ Discourse غير مدعوم لأن هناك عددًا لا نهائيًا من الطرق للقيام بهذه الأمور.

لدي سؤالان:

  • السؤال الأول حول Sidekiq في حالة تشغيل العديد من web_only.yml docker، كل منها في جهاز افتراضي مختلف: في هذه الحالة الأولى، قد تقوم مثيلات Sidekiq المختلفة التي تشترك في نفس خادم Redis بتشغيل نفس المهمة مرتين، هل Discourse قوي لمثل هذا الخطأ؟ هل من الأكثر موثوقية استخدام واحد Sidekiq في جهاز افتراضي مخصص (أو Docker)، وكيف يمكن فصله عن web_only Discourse؟
  • بخصوص ملاحظاتك الأخيرة حول التثبيت المدعوم: أتفهم أن الناس قد يكون لديهم طرق لا نهائية لإنشاء تكوينات حاويات متعددة، ولكن في رأيي، نحتاج إلى طريقة مدعومة لتشغيل مثيلات متعددة للتوسع الأفقي و/أو التوفر العالي في حالتين: بناءً على الأجهزة الافتراضية (مختلفة web_only Discourse docker في أجهزة افتراضية مختلفة و Redis/Postgres مثبتة في أجهزة افتراضية منفصلة أخرى مباشرة دون استخدام docker) وبناءً على الحاويات (كل شيء يعتمد على الحاويات).