‫حسنًا
‫، ما سأفعله هو ، سأستعرض كل واحدة من هذه الخدمات بناءً على هذه البنية
‫، وسأقوم بإنشاء هذا التطبيق بسرعة. سأقوم بالفعل بكتابة الأوامر هنا في الملف التمهيدي ، لأن ذلك
‫يبدو كمكان منطقي بالنسبة لي للقيام بذلك. وبعد ذلك سأقطعها وألصقها في
‫عقدي.
‫إذا كنت تتذكر ، لدي سرب ثلاثي العقد هنا. إذا قمت بعمل docker node ls
‫، فسترى أن لدي ثلاث عقد هنا. كلهم عقد مدير.
‫ليس لدي حاويات قيد التشغيل ، ولا توجد خدمات ، من الواضح. أول شيء ، أعرفه في الجزء العلوي ، يتحدث
‫عن أحتاج إلى شبكات ، وأحتاج إلى وحدة تخزين.
‫لذا ، ربما يمكنني إخراج الشبكات من الطريق ويمكنني على الأرجح جناح ذلك. يمكنني كتابة شبكة
‫عامل ميناء إنشاء تراكب د. تذكر أن شبكة التراكب هي النوع الوحيد من الشبكات التي يمكننا استخدامها
‫في Swarm لأن التراكب يسمح لنا بالامتداد عبر العقد ، كما لو كانت جميعها على الشبكة المحلية.
‫ثم أريد أن أسميها الخلفية.
‫وبعد ذلك ، أريد أن أفعل الشيء نفسه ، فقط أسميه الواجهة الأمامية.
‫الآن ، لا يوجد شيء مميز بطبيعته حول هاتين الشبكتين.
‫سنقوم فقط بتقسيم خدماتنا المختلفة إلى واحدة أو أخرى للمساعدة في التصرف كجدار
‫حماية صغير يوفر فصلًا للحماية.
‫في هذا التصويت الأول
‫، أعلم أنني بحاجة إلى إنشاء خدمة عامل إرساء ، ويجب أن أذكرها ، لذلك قد أضع تصويتًا بالاسم أيضًا. وبعد ذلك يجب أن أنشر المنفذ 80 إلى 80 في الحاوية
‫، ويجب أن يكون على شبكة معينة. لذا ، واجهة الشبكة.
‫أحتاج نسختين طبق الأصل.
‫لذلك ، نسخة طبق الأصل اثنين. وبعد ذلك ، يمكنني أيضًا نسخ هذا الاسم ولصقه.
‫الآن ، سوف أمضي قدمًا وأنشئ كل هذه قبل أن أنشرها بالفعل.
‫سأقوم بنسخ هذا هنا في الأسفل. هذا سيطلق عليه ... لن يُطلق عليه تصويت ، بل
‫سيطلق عليه redis.
‫لا داعي للقلق بشأن نشر أي منافذ على ذلك.
‫سيكون على شبكة الواجهة الأمامية.
‫أريد نسختين متماثلتين ، وبعد ذلك ، سأسميها redis ثلاثة اثنان هي الصورة.
‫في الأسفل هنا ، ستعمل خدمة عامل الإرساء على إنشاء اسم عامل ، على شبكتين. يجب أن أقوم بعمل الواجهة الأمامية
‫للشبكة و ... يصيح.
‫أنا أكتب ما أقوله ... دعونا نرى ، الخلفية للشبكة ، ثم نسخة طبق الأصل واحدة فقط.
‫... لأن
‫نسخة متماثلة واحدة افتراضية
‫، لا يتعين علي تحديد نسخة متماثلة ولا أحدد أي منافذ.
‫أعتقد أن هذا كل ما أحتاجه هناك. أنا فقط بحاجة إلى نسخ الصورة.
‫حسنًا ، تنشئ خدمة عامل الإرساء اسمًا للجهة الخلفية لشبكة db.
‫انظر ، نسخة طبق الأصل.
‫أوه ، أنا بحاجة للقيام بهذا المجلد.
‫هذا هو الشيء المتعلق بالحجم. الأمر -v غير متوافق مع خدمات عامل الإرساء. لأنه ، لأسباب مختلفة ، ستكون الخدمات
‫أكثر تعقيدًا من تشغيل عامل الإرساء المعتاد.
‫وكانت هناك مشاكل وقيود مع -v مرة أخرى في اليوم.
‫لذلك ، تعلم Docker من ذلك وحسّن التنسيق. ولكن قد يكون الأمر أكثر تفصيلاً قليلاً
‫وربما يكون من الصعب قليلاً تذكر بدء التنسيق.
‫يحدث أيضًا أنه لم يتم توثيقه جيدًا حتى الآن في Docker Documentation
‫لأنه أقل من عام كأمر. لذلك ، سنقوم فقط بنسخ ولصق هذا. إذا لم يكن ذلك منطقيًا
‫بالنسبة لك ، فهذه القائمة من القيم هي جزء من أمر تحميل واحد والحد الأدنى
‫هو نوع ومصدر وهدف.
‫هناك أيضًا أشياء أخرى يمكنك إضافتها ، لكن هذه هي الأشياء الثلاثة الوحيدة التي نحتاجها في هذا السيناريو.
‫ويمكنك أن ترى أن مصدري هو مجرد حجم مسمى لأنه ليس لدي أي خطوط مائلة فيه.
‫وإذا كان لدينا خطوط مائلة ، فسيكون ذلك بمثابة ربط ربط وكان علينا تحديد نوع
‫مختلف.
‫حتى أسفل هنا ، - حجم نوع الجبل ، مصدر بيانات ديسيبل ، الهدف.
‫أعتقد أن هذا صحيح.
‫وبعد ذلك يمكنك فقط ، postgres 9. 4.
‫ثم آخرها هو تطبيق النتيجة.
‫لذلك ، تقوم خدمة عامل الإرساء بإنشاء خلفية شبكة نتيجة الاسم.
‫انشر المنفذ. سنستخدم 5001 إلى المنفذ 80 في الحاوية.
‫يمكنني تشغيل واحد منهم فقط. بالمناسبة ، السبب الوحيد الذي يجعلنا نشغل أحد هذه
‫المشكلات هو في الواقع مشكلة غير معروفة على هذا التطبيق ، هو أن هذا في الواقع يستخدم WebSockets ، وأن WebSockets شيء يتطلب
‫اتصالاً مستمراً.
‫لذلك ، في شبكة التوجيه ، لا تعمل WebSockets بشكل جيد حتى الآن لأنها ستستمر في تبديلك
‫ذهابًا وإيابًا بين الحاويات ويجب أن يكون WebSocket هذا إلى حاوية معينة باستمرار.
‫لذلك ، مع هذا التطبيق ، ما يجب أن يكون لدينا حقًا ، هو وكيل أمامه ولكنه ليس موجودًا في هذا التطبيق حتى الآن ، لذا فمن المحتمل في إصدار
‫لاحق أن يقوموا بتحديثه وإصلاحه حتى يكون لدينا وكيل.
‫بهذه الطريقة يمكن أن تكون زائدة عن الحاجة
‫وتأكد من وصولك إلى الحاوية الصحيحة. سنقوم بنسخ
‫هذا ولصقه حتى النهاية. لقد أدركت للتو أنني أفتقد آخر قيمة لهذه.
‫حسنًا ، وبعد ذلك سأبدأ من الأعلى وأقوم فقط بالنسخ واللصق. لقد تم بالفعل إنشاء الشبكات.
‫نعم ، يجب أن تكون هذه نسخًا متماثلة. اسمحوا لي أن أقوم بتحديث ذلك هنا.
‫النسخ المتماثلة. حسنًا ، سننشئ redis. هناك نذهب.
‫حسنًا ، لقد صنعت ذلك. الآن ، ستلاحظ ، بالمناسبة ، أنني أحصل على معرف الخدمة ولكن هذا لا
‫يعني أن الخدمة قد تم نشرها بالفعل بشكل صحيح.
‫سننظر في ذلك خلال دقيقة.
‫اسمحوا لي أن أحضر بقية هؤلاء هناك.
‫حسنا.
‫الآن بعد أن حصلنا على ذلك ، يجب أن نكون قادرين على تنفيذ بقية أوامرنا هنا. لذا ، تُظهر لنا خدمة عامل السفن الخمسة
‫جميعًا. وستلاحظ أن أرقام النسخ المتماثلة متطابقة.
‫هذه علامة جيدة.
‫هذا يعني أنه تم إنشاؤه بنجاح.
‫وإذا كنت أرغب في التعمق أكثر ، فيمكنني القيام بخدمة عامل ميناء PS في كل واحدة.
‫حسنًا ، هذا كان يجري 28 ثانية.
‫تم تشغيل redis لمدة دقيقة. يشغل db 53 ثانية. تصويت.
‫عامل.
‫وسترى هنا في العامل ، أن لدينا مهمة فاشلة تم إغلاقها ، ثم مهمة قيد التشغيل.
‫كان هذا يعمل لمدة 47 ثانية.
‫حسنًا ، أنا في الواقع أعرف سبب حدوث ذلك ، لكنك قد لا تعرف ، لذلك ربما يتعين علينا عمل سجلات.
‫الآن هذا على node2.
‫الميزة التجريبية التي يمكنك تمكينها من خلال تكوين اختياري في Docker ، هي في الواقع القيام بالميزة
‫التجريبية الجديدة ، سجلات خدمة عامل الإرساء. وهو ما يسحب السجلات من العديد من العقد المختلفة.
‫نأمل أن يتم إصداره في الإصدار التالي من Docker في وقت لاحق من هذا العام.
‫لكن في الوقت الحالي ، إنها تجريبية. لذلك اضطررت إلى تمكينه داخل سجل docker daemon أو الخفي.
‫json. ولكي تعرف ، هذه هي الطريقة التي ستمكِّن من إجراء التجربة.
‫هذا ليس جزءًا من هذا.
‫هذا مجرد شيء فعلته ، فقط حتى أتمكن من إظهار هذا بسرعة حقيقية.
‫ربما ترى هذا الخطأ وتفكر ، لا أعرف لماذا يحدث ذلك؟
‫يمكننا أن ننظر إلى هذا السجل. لذلك ، يمكننا عمل عامل سجل خدمة عامل الإرساء ... وجه الفتاة... عامل السجلات.
‫وهذا على ، هذا بالتحديد ، دعنا نرى ، هذان مختلفان ...
‫يمكنك أن ترى هنا هذا واحد ، ثم يتغير الرقم. في الواقع ، أجل.
‫هذا كل واحد هنا.
‫تقول لا يوجد مثل هذا الجهاز أو العنوان.
‫لذا ، ما يعنيه هذا أساسًا هو أنني أنشأت خدمة كانت تبحث عن سجل DNS لم يكن موجودًا لأنني
‫لم أنشِئ الخدمة الأخرى بعد. وقد فعل الشيء الذي من المفترض أن يفعله في "Dockerland"
‫، وهو عندما يكون به خطأ من هذا القبيل ، يجب أن يتعطل التطبيق لأن Docker يمكنه بالفعل إعادة تشغيل الأشياء وإعادة نشرها
‫بشكل صحيح حتى لا تتعطل التطبيقات. وبمجرد إطلاق جميع خدماتي ، توقف
‫كل شيء عن الانهيار ويعمل كل شيء الآن.
‫ويمكننا معرفة ذلك بمجرد الرجوع والنظر إلى عامل ps. نرى أنه يعمل بنجاح لمدة
‫ثلاث دقائق.
‫لذلك دعونا نلقي نظرة على تطبيقنا.
‫إذا قمت للتو بسحب عنوان IP ، فيجب أن أحصل على الكلاب والقطط. سأقوم بالتصويت للقطط.
‫ثم إذا انتقلت إلى نفس عنوان IP على المنفذ 5001 ، فسوف أرى تطبيق النتائج. هذا هو التطبيق.
‫نحن نعلم الآن أنه يعمل لأن الطريقة الوحيدة التي يمكن أن يتغير بها ذلك هي إذا استمر هذا الأمر بالكامل
‫عندما يتم التقاطه بواسطة redis ، ثم معالجته بواسطة العامل ، ثم وضعه في قاعدة البيانات.
‫لذلك نحن نعلم أن كل خدمة من خدمات التطبيقات لدينا قادرة على التحدث مع بعضها البعض. ويمكننا النظر إلى السجلات إذا أردنا
‫ذلك.
‫لكن هذا هو العرض التوضيحي.