أقوم بتشغيل نسخة MinIO متعددة الخوادم خلف خادم وكيل Nginx.
للتكامل مع MinIO، واجهت صعوبة في التكامل، واليوم اكتشفت أنه يجب عليّ تعيين “عنوان URL لشبكة توصيل المحتوى لـ S3” ليس كـ “cdn.example.com”، بل كـ “cdn.example.com/bucket_name” لعرض الصور التي تم تحميلها.
قد يكون ذلك بسبب مشكلة في إعدادات MinIO الخاصة بي، لذا دعني أقدم لك المزيد من المعلومات هنا.
لدي خادمان يعملان بنظام MinIO لنفس المحتويات. كلاهما مُعين بعنوان IP داخلي، مثل 192.168.1.1 و 192.168.1.2. منفذ الوصول لواجهة برمجة التطبيقات هو 9000، ومنفذ الوصول للكونسول هو 9001. (على الرغم من أنني أستخدم عناوين IP ومنافذ مختلفة، ولكن لأغراض التوضيح.)
لقد واجهت مشكلة مع “نقطة نهاية S3” في البداية.
مع “https://cdn.example.com” كنقطة نهاية، استمرت في تلقي أخطاء. لقد جربت أيضًا مع الوصول للكونسول، مثل “s3.example.com”، وهو عنوان URL الذي أستخدمه لتوزيع حركة المرور على مستوى خادم وكيل Nginx للكونسول. لم ينجح أي منهما.
اليوم، قمت بتغيير نقطة النهاية إلى “http://192.168.1.1:9000”، كما أفعل مع NextCloud. (واجهت مشاكل مماثلة مع NextCloud). أخيرًا، تمكنت من رؤية أنه تم تحميل الملفات إلى S3. لكنني لم أتمكن من رؤية الصورة على Discourse. عندما تحققت من عنوان URL للصورة الفارغة، كان يبدو مثل “cdn.example.com/original/1x/…” بعبارة أخرى، كان يفتقد اسم حاوية S3 الذي أضفته إلى الإعداد.
لذلك، قمت بتغيير “عنوان URL لشبكة توصيل المحتوى لـ S3” إلى “https://cdn.example.com/my_bucket_name”. أخيرًا، يمكنني رؤية الصورة في تحرير موضوع Discourse وكذلك على الموقع المباشر.
نظرًا لأنه يعمل، كنت سأتوقف وأعود إلى مواقع الويب الأخرى الخاصة بي، ولكن بعد ذلك، يمكنني رؤية أن “حاوية النسخ الاحتياطي لـ S3” يجب أن تكون اسم حاوية مختلفًا عن حاوية التحميل الرئيسية. إذا قمت بتمكين “استخدام عنوان URL لشبكة توصيل المحتوى لجميع الملفات التي تم تحميلها إلى S3 بدلاً من الصور فقط”، فماذا سيحدث للنسخ الاحتياطي لـ S3؟ هل سيتم تحميل ملف النسخ الاحتياطي إلى “https://cdn.example.com/backup_bucket”؟
لذلك حاولت تشغيل نسخة احتياطية. كما هو متوقع، تلقيت رسالة خطأ للنسخ الاحتياطي.
في الوقت الحالي، ما لم أكن قد أخطأت في تكوين MinIO و/أو Discourse، أعتقد أنه من المنطقي أن “عنوان URL لشبكة توصيل المحتوى لـ S3” يجب أن يلحق اسم حاوية التحميل الرئيسية واسم حاوية النسخ الاحتياطي. بعد ذلك، يمكنني العودة من “https://cdn.example.com/my_bucket_name” إلى “https://cdn.example.com”.
بالإضافة إلى ذلك، أفضل عدم استخدام عنوان IP داخلي كنقطة نهاية “S3”. لقد طرحت نفس السؤال على Nextcloud. كيف تعمل وحدة S3 الخاصة بـ Discourse؟ أتساءل فقط لماذا يجب عليّ تقديم عنوان IP داخلي كامل + منفذ بدلاً من اسم النطاق المؤهل بالكامل (FQDN) الذي قمت بتعيينه على مستوى الخادم الوكيل. اسم النطاق المؤهل بالكامل (FQDN) بالتأكيد يساعدني في إعادة توجيه حركة المرور إذا فشل أحد خوادم MinIO. مع الإعداد الحالي، إذا تعطل خادم الواجهة الخلفية الرئيسي، فقد تعمل القراءة (عبر شبكة توصيل المحتوى)، ولكن ليس عمليات الكتابة.