← العودة إلى جميع المقالات
المدونة

بنية موزعة بعدة خوادم تحويل وخادم تخزين أو تشغيل واحد

ينطبق الدرس على النسخة الخالصة theoneffmpeg والتحويل المتقدم express-ffmpeg-vip. يمكنك بناء هذه البنية لموازنة الحمل، أو للتحويل بأجهزة قوية رخيصة والتشغيل بأجهزة أضعف ذات أقراص كبيرة ونطاق مرتفع.

المبدأ

صُممت mongodb للبنية الموزعة منذ البداية. المفتاح هو OBJECTID التلقائي، وهو ID من 24 حرفاً ورقماً مثل 5d6de52360e715be825959dd، يتضمن الطابع الزمني وID الخادم. لذلك يكون OBJECTID فريداً حتى عند توليده في اللحظة نفسها على أجهزة مختلفة، فلا تعارض في ID. وهذا أساس الدرس.

لقطة شاشة

الخطوات

الخطوة الأولى، ثبّت theoneffmpeg أو express-ffmpeg-vip على أجهزة التحويل من الأول إلى الرابع. اجعل مسارات التثبيت متماثلة، مثل /www/express-ffmpeg.

الخطوة الثانية، نزّل عميل mc على كل جهاز للتحويل. يتصل بـ Amazon S3 وminio وتخزين google السحابي.

cd /~
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
./mc --help

الخطوة الثالثة، ثبّت MINIO على خادم التخزين أو التشغيل. يجعل نظام minio الموزع للكائنات أي خادم خادم تخزين فوراً.

الخطوة الرابعة، اضبط عملية المزامنة في خوادم التحويل لمزامنة الشرائح الحالية والمستقبلية تلقائياً إلى التخزين. إن لم تنشئ MINIO في الخطوة الثالثة، استخدم Amazon S3 أو Google بالنتيجة نفسها.

مثال: تخزين MinIO السحابي

احصل من MinIO على URL وaccess key وsecret key.

./mc config host add minio http://192.168.1.51 BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 S3v4

مثال: تخزين Amazon S3

راجع AWS Credentials للحصول على AccessKeyID وSecretAccessKey.

./mc config host add s3 https://s3.amazonaws.com BKIKJAA5BMMU2RHO6IBB V7f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 S3v4

مثال: تخزين Google السحابي

راجع Google Credentials Guide للحصول على AccessKeyID وSecretAccessKey.

./mc config host add gcs  https://storage.googleapis.com BKIKJAA5BMMU2RHO6IBB V8f1CwQqAcwo80UEIJEjc5gVQUSSx5ohQ9GSrr12 S3v2

أنشئ حاوية في minio أو Amazon S3 أو Google. سميت حاويتي expressffmpegvip.

حدد مجلد المزامنة وشغله خلفياً. إذا كانت خوادم التخزين الأربعة تستخدم الإصدار المتقدم، فمجلد الشرائح /www/express-ffmpeg/public/videos.

./mc mirror -w --older-than 1h /www/express-ffmpeg/public/videos minio/expressffmpegvip &

يزامن الأمر محتوى /www/express-ffmpeg/public/videos المحلي، ويراقب تغيراته باستمرار، إلى حاوية expressffmpegvip في خادم minio. كما يزامن فقط المحتوى الأقدم من 1 ساعة.

لماذا 1 ساعة؟ إذا ظهر m3u8 فور التقسيم فقد يُزامن وفي M3U8 سجل TS واحد فقط؛ يتيح التأخير مزامنة أفضل.

اكتملت بذلك البنية الموزعة بعدة خوادم تحويل وخادم تخزين أو تشغيل واحد.