مرحباً، لقد قمت للتو بإعداد تثبيت جديد لـ discourse - شكراً جزيلاً على كل العمل الشاق الذي جعل الأمر بهذه السهولة!
من الناحية المثالية، أود أن أجعل خادم discourse الخاص بي قابلاً للتصرف، بحيث إذا قام شخص ما بقتله عن طريق الخطأ في وحدة تحكم EC2، على سبيل المثال، فلن أفقد أي بيانات.
وظيفة النسخ الاحتياطي/الاستعادة المضمنة رائعة، وقد قمت بالفعل ببعض الاختبارات بها. أقوم بتخزين app.yml، والتحميلات، والنسخ الاحتياطية في S3.
الخطوة التالية ستكون نقل قاعدة البيانات إلى Amazon RDS، وهناك دليل رائع لذلك هنا.
سؤالي هو - إذا فعلت ذلك، هل يجب أن أكون آمناً نظرياً لإنهاء المثيل، ثم على خادم جديد ببساطة استنساخ discourse، والحصول على app.yml الخاص بي وتشغيل ./launcher rebuild app؟ أم أن هناك حالة أخرى تتجاوز postgres/uploads/app.yml؟ ربما في Redis؟
أعتقد أن هذا صحيح إلى حد كبير. سترغب في التأكد من عدم تشغيل اثنين في وقت واحد. عند بناء الحاوية الجديدة، ستقوم بترحيل قاعدة البيانات، مما قد يجعلها غير قابلة للاستخدام للحاوية الأخرى (يمكنك تجنب ذلك باستخدام skip_post_deployment_migrations). تعتبر الأشياء الموجودة في Redis غير دائمة ولا يتم نسخها احتياطيًا. لست متأكدًا تمامًا من كيفية استعادة بعض الأشياء هناك أو ما إذا كان يتم استعادتها، ولكنك على الأرجح لا تهتم.
@phil22 - لقد عملت على إعداد مشابه لما تقترحه وهو أكثر دقة مما تعتقد:
يصدر فريق Discourse إصدارات متعددة شهريًا، لذا تحتاج إلى البقاء مع إصدارك الأصلي عند استنساخ مثيلك الجديد على ec2. عادةً ما يكون من المقبول ترقية التطبيق بشكل أعمى، ولكن بعض الإصدارات تتضمن ترقيات رئيسية لقاعدة البيانات (PG 12 → PG 13) وإذا لم تتبع ذلك وأهملت ترقية RDS الخارجي الخاص بك، فقد تتعثر.
وجدنا نجاحًا في جعل ec2 يستخدم وحدة تخزين EBS والتي تم تكوينها أيضًا ليتم تحميلها داخل حاوية التطبيق الخاصة بك. باستخدام هذا، نقوم بتخزين جميع محتويات مجلد /shared. بهذه الطريقة، عندما تأتي مثيلات ec2 الخاصة بك وتذهب، يكون لديك كل محتوى مجلد /shared هذا ثابتًا على EBS. علاوة على ذلك، في بعض الأحيان تغير رأيك بشأن تخزين الملفات في s3. وجود مكان بديل لتخزين الملفات التي تم تحميلها (مثل مجلد /shared) أمر جيد في هذه الحالة.
بناءً على نصيحتكما، أعتقد أنني سأختار RDS ولكن لتثبيت إصدار محدد من مستودع discourse_docker. في حين أن هذا يبدو أنه سيجعل الترقيات أكثر تعقيداً، آمل أن يعني ذلك أنه إذا واجهنا مشكلة في الخادم، فسيكون لدينا كل شيء آمن على RDS وسنتمكن بسرعة كبيرة من استعادة نفس الحالة العاملة دون استعادة يدوية.
(يمكننا تحقيق نفس الشيء باستخدام EBS أعتقد، ولكن مع تشفير وحدة التخزين وسحر يونكس لتركيب/إلغاء تركيب وحدة التخزين بين المثيلات، أنا خائف قليلاً من عملية أتمتة ذلك)