‫قبل أن نوسع خدماتنا لبدء التشغيل عبر مجموعة من العقد وجميع الخدمات التي تتحدث مع بعضها البعض
‫، دعنا نتطرق إلى مفاهيم جديدة يقدمها Swarm إلى الطاولة.
‫الأول هو برنامج تشغيل شبكة جديد يسمى Overlay ، وأنت حقًا تقوم بإنشاء شبكة مثلما
‫اعتدت على إنشائها
‫، وإنشاء شبكة عامل إرساء ، ووضع تراكب - driver.
‫ما يشبه ذلك هو إنشاء شبكة جسر على نطاق Swarm حيث يمكن للحاويات عبر المضيفين على نفس الشبكة الافتراضية
‫الوصول إلى بعضها البعض كما لو كانوا على شبكة محلية ظاهرية.
‫هذا فقط للتواصل داخل السرب.
‫لا يلعب برنامج التشغيل المتراكب قدرًا هائلاً من حركة المرور القادمة إلى الداخل ، حيث
‫إنه يحاول التقاط عرض سرب شامل للشبكة حتى لا تتلاعب باستمرار بإعدادات الشبكة على
‫العقد الفردية.
‫يمكنك أيضًا تمكين تشفير الشبكة بالكامل باستخدام IPiece SEC حيث ستقوم بالفعل بإعداد أنفاق IPSec
‫بين جميع العقد المختلفة لسربك.
‫لكنها معطلة بشكل افتراضي لأسباب تتعلق بالأداء فقط.
‫عند إنشاء خدماتك ، يمكنك إضافتها إلى أي شبكات تراكب ، أو شبكة أو أكثر من شبكات Overlay.
‫يعتمد الأمر حقًا على تصميم التطبيق الخاص بك.
‫كما تعلم ، فإن الكثير من التصميمات التقليدية سيكون لها قواعد البيانات على شبكة خلفية وخوادم
‫الويب على شبكة الواجهة الأمامية. ثم ربما سيكون لديك واجهة برمجة تطبيقات بين الاثنين والتي ستكون على كلتا الشبكتين
‫، أو شيء من هذا القبيل.
‫ويمكنك فعل ذلك تمامًا في Swarm.
‫دعونا نرى هذا في العمل. ما أريد أن أفعله هو أن أريكم كيف سيكون
‫الأمر إذا نشرنا مثال دروبال من مهمة سابقة مع قاعدة بيانات Postgres ، كخدمات ، ثم أنشأنا شبكة تراكب
‫لهم للتحدث مع بعضهم البعض.
‫نحتاج أولاً إلى إنشاء شبكة ، لذلك يتم إنشاء شبكة عامل ميناء ، وهذا لم يتغير بالنسبة لـ Swarm
‫بخلاف حقيقة أننا سنستخدم برنامج تشغيل جديد.
‫أنا فقط سأسميها mydrupal.
‫نعم.
‫لذا ، سأقوم بعمل شبكة لرسو السفن ، وسترى أن لدي تراكب جديد. دخول واحد هناك بشكل افتراضي.
‫سترى أيضًا واحدة جديدة لأن سربًا ، وهو في الواقع شبكة صادرة لن نحتاج إلى العبث
‫بها.
‫لذلك ، لنقم بإنشاء خدمة Postgres الخاصة بنا ... خدمة عامل ميناء إنشاء اسم ... دعونا نسميها شبكة psql.
‫سنقوم بتوصيله بشبكة mydrupal.
‫هناك بالفعل علامة تبويب مكتملة على أسماء الشبكات.
‫ثم تذكر أنني بحاجة إلى إضافة متغير البيئة هذا لكلمة مرور Postgres.
‫حتى نتمكن من الاتصال به لاحقًا.
‫ثم سنستخدم صورة Postgres. تبدو جيدا.
‫ستلاحظ هنا أننا لا نحصل على تنزيل الصورة بالكامل وكل ذلك ، لأنه لا يمكن تشغيل الخدمات في المقدمة
‫، لأنه يتعين عليهم المرور عبر المنسق والجدولة. لذلك ، يمكننا عمل ls لخدمة
‫عامل الإرساء ، ويمكننا أن نرى أن أحدهم يعمل.
‫إذا قمنا بعمل خدمة عامل إرساء psql ، فيمكننا أن نرى أن هذا يعمل بالفعل على العقدة 1.
‫لذا يمكنني عمل سجلات حاوية عامل الإرساء psql ، وبعد ذلك يمكنني رؤية سجلات ذلك.
‫نعم. يبدو أنه يعمل.
‫حسنا.
‫دعنا ننشئ خدمتنا الأخرى لذا سأمضي قدمًا
‫وأسميها دروبال.
‫نحتاج أيضًا إلى الارتباط بنفس الشبكة. ثم نريد نشر المنفذ 80:80 كما فعلنا
‫مع أمر Docker run. وسنستخدم صورة دروبال.
‫نعم.
‫يمكننا أن نرى أنه بدأ من هناك.
‫هناك خدعة. يمكنك بالفعل استخدام أمر الساعة في Linux للمشاهدة. سوف ...
‫ما يفعله هو إعادة تشغيل أمر مرارًا وتكرارًا. يتم
‫تثبيته افتراضيًا على Ubuntu.
‫إذا قمت للتو بوضع الساعة أمام docker service ls ، فستستمر في تشغيلها كل ثانيتين افتراضيًا
‫حتى ... آه ، انظر؟
‫الآن لدينا واحد تلو الآخر.
‫حسنًا ، وبعد ذلك سأقوم فقط بالتحكم في c للخروج من ذلك. يمكننا القيام بخدمة عامل
‫ميناء ps دروبال ونرى أن دروبال يعمل بالفعل على العقدة 2.
‫لدينا قاعدة بيانات تعمل على العقدة 1.
‫لدينا موقع Drupal يعمل على Node 2.
‫لذا ، كيف يعرفون كيف يتحدثون مع بعضهم البعض؟
‫حسنًا ، باستخدام أسماء الخدمات.
‫إذا قمت بلصق أحد عناوين IP ، فيجب أن يظهر في تثبيت دروبال. وإذا أخبرتها بقاعدة البيانات هنا ، اسم قاعدة البيانات
‫، سنقوم فقط بعمل postgres مرة أخرى ، postgres ، كلمة
‫المرور الخاصة بي.
‫بالنسبة للمضيف ، تمامًا مثلما كنا مع Compose ، صنعنا أسماء الخدمة في ملف Compose ، هنا ، سنستخدم
‫اسم الخدمة الذي أنشأناه لخادم قاعدة البيانات. لذلك ، كان هذا psql.
‫تخبرنا هذه الشاشة بشكل أساسي أنها قادرة على التحدث إلى قاعدة البيانات عبر العقد
‫وإعداد النظام.
‫هذا هو الشيء العظيم في التراكب هو أنه يتصرف مثل كل شيء على نفس الشبكة الفرعية.
‫حسنا.
‫لذلك لم نعد بحاجة إلى هذا بعد الآن.
‫سأقوم بإنهاء هذا المثال بسرعة حقيقية فقط لأظهر لك الشيء الرائع التالي حول Swarm. نعم.
‫الآن ، هذا الموقع قيد التشغيل. لكن لدي ثلاث عقد ، فكيف أعرف العقدة التي ستكون عليها والمنفذ
‫الذي أحتاجه للتأكد من أن DNS الخاص بي يشير إليه عندما أقوم بإنشاء اسم موقع الويب هذا؟
‫في حالتي ، لدي ثلاثة عناوين IP ، ويمكنني نسخ كل منهم ووضع عناوين IP
‫الثلاثة في
‫و ... وجه الفتاة... حصلت على الخطأ هناك.
‫لذلك ، إذا رأيت ، يبدو أن موقع الويب يعمل على العقد الثلاثة لأنني أبحث في جميع عناوين
‫IP الثلاثة.
‫ولكن إذا ذهبت إلى هنا وقمت بهذه الخدمة ps drupal ، فأنا أعلم أنها تعمل فقط العقدة 2.
‫يمكنني حتى إجراء فحص لخدمة عامل الإرساء ، وأرى أنه بالفعل يحتوي على عنوان IP واحد فقط على شبكة التراكب
‫هذه ... هنا.
‫إذن ، لماذا يستجيب لجميع المضيفين الثلاثة؟
‫هذا يقودنا إلى الميزة الجديدة التالية.