في هذه الوحدة، ستستخدم خدمة Amazon Elastic Container (Amazon ECS) لضرب مثال على مثيلات حساب مجموعة EC2 المُدارة ونشر صورتك كحاوية مهام يتم تنفيذها على المجموعة. بدء الإنشاء

نظرة عامة على التصميم

أ. العميل
يُرسل العميل طلبًا إلى موازن الأحمال عبر المنفذ رقم 80.

ب. موازن الأحمال
يعمل موازن الأحمال على توزيع الطلبات على جميع المنافذ المُتاحة.

ج. المجموعات المستهدفة
تم تسجيل المثيلات في المجموعة المُستهدفة للتطبيق.

د. منافذ حاوية المهام
تعمل كل حاوية مهام على تنفيذ عملية واحدة من التطبيق التي تُثبّت مجموعة node.js الأصلية على المنفذ 80 ضمن مساحة الاسم الخاصة بها.

هـ. تعبئة تطبيق node.js الموحد في حاويات
تكون مجموعة node.js الأصلية مسؤولة عن توزيع تدفق البيانات إلى العاملين داخل تطبيق البرنامج الموحد. يُدمج هذا التصميم في حاوية مهام، لكنه يظل برنامجًا موحدًا نظرًا لأن كل حاوية مهام تتمتع بنفس المزايا التي تتمتع بها جميع حاويات المهام الأخرى.

تعد Amazon Elastic Container Service (ECS) عبارة عن خدمة إدارة للحاوية قابلة للتكيف بشكل كبير وعالية الأداء تدعم حاويات Docker وتتيح لك تشغيل التطبيقات على مجموعة مُدارة من مثيلات Amazon EC2. وبإجراءات استدعاء بسيطة لواجهة برمجة التطبيقات، يمكنك تشغيل وإيقاف التطبيقات الممكنة بخدمة Docker، والاستعلام عن الحالة الكاملة لمجموعتك، والاستفادة بالعديد من المزايا الشائعة، مثل مجموعات الأمن وElastic Load Balancing، ومخازن EBS وأدوار IAM.

يمكنك استخدام Amazon ECS في التخطيط لموعد تطبيق حاويات المهام عبر مجموعتك بناءً على احتياجاتك من الموارد وتوفر المتطلبات. ويمكنك أيضًا إدراج محدد الجدول الزمني الخاص بك أو الخاص بأي طرف خارجي لتلبية المتطلبات الخاصة للشركة أو للتطبيق.

لا توجد رسوم إضافية على Amazon ECS. تدفع مقابل موارد AWS (مثل، مثيلات EC2 أو مخازن EBS) التي تنشئها لتخزين تطبيقك وتشغيله.

الوقت اللازم للإكمال: 30 دقيقة

الخدمات المُستخدَمة:


اتبع تعليمات التنفيذ خطوة بخطوة لنشر تطبيق node.js باستخدام Amazon ECS. حدِّد رقم كل خطوة لتوسيع القسم.

  • الخطوة 1. تشغيل مجموعة ECS باستخدام AWS CloudFormation

    إنشاء مجموعة Amazon ECS ليتم نشرها على خلفية Application Load Balancer.

    1. انتقل إلى ‏‏‏وحدة التحكم في AWS CloudFormation‏‏‏.
    2. حدِّد إنشاء حزمة.
    3. حدد تحميل ملف قالب واختر ملف ecs.yml من مشروع GitHub على ‏amazon-ecs-nodejs-microservice/2-containerized/infrastructure/ecs.yml‏‏ ثم حدد التالي.
    4. بالنسبة لاسم الحزمة، أدخل ‏BreakTheMonolith-Demo‏. تأكد من ضبط قيم المعلمات الأخرى وفقًا لما يلي:
      1. السعة المرغوبة = 2
      2. نوع المثيل = t2.micro
      3. أقصى حجم = 2
    5. حدِّد التالي‏‏‏.
    6. من صفحة خيارات تكوين الحزمة، اترك الخيارات الافتراضية وانتقل لأسفل ثم حدِّد التالي.
    7. في صفحة ‏‏‏Review BreakTheMonolith-Demo‏ ، انتقل إلى أسفل الصفحة، لتقر بموافقتك على بيان القدرات باختيار مربع التحديد، ثم حدِّد إنشاء الحزمة.

    سترى حزمتك وحالتها CREATE_IN_PROGRESS. يمكنك تحديد زر التحديث الموجود أعلى يمين الشاشة للتحقق من معدل الإنجاز. تستغرق هذه العملية في الغالب 5 دقائق.

    إنشاء حزمة

    ⚐ ملحوظة: يمكنك أيضًا استخدام واجهة سطر أوامر AWS‏ (AWS CLI) بشكل اختياري لنشر حزم AWS CloudFormation. شغّل الكود التالي على المحطة الطرفية من مُجلّد ‏amazon-ecs-nodejs-microservices/3-microservices‏ واستبدل [region] بمنطقة AWS الخاصة بك.

    $ aws cloudformation deploy \
       --template-file infrastructure/ecs.yml \
       --region [region] \
       --stack-name BreakTheMonolith-Demo \
       --capabilities CAPABILITY_NAMED_IAM
  • الخطوة 2. التأكد من تشغيل مجموعتك

    يعمل Amazon ECS على التحقق من المجموعة
    • حدِّد المجموعة BreakTheMonolith-Demo، ثم حدِّد علامة تبويب المهام للتحقق من عدم تشغيل أي مهام.
    مهام مجموعة Amazon ECS
    • حدِّد علامة تبويب مثيلات ECS‏ للتحقق من إنشاء اثنين من مثيلات Amazon EC2 باستخدام نموذج AWS CloudFormation.
      ⚐ ملحوظة: إذا تلقيت رسالة بتقادم وكيل ECS، فحدِّد معرفة المزيد للاطلاع على إرشادات تحديث وكيل ECS.
    مثيلات Amazon ECS
  • الخطوة 3. كتابة تعريف للمهمة

    تُحدد تعريفات المهمة طريقة نشر Amazon ECS لحاويات مهام التطبيق عبر المجموعة.

    • من قائمة الانتقال اليسرى في Amazon ECS، حدِّد تعريفات المهمة.
    • حدِّدإنشاء تعريف مهمة جديد.
    • من صفحة تحديد توافق نوع التشغيل، حدِّد خيار EC2 ثم حدِّد الخطوة التالية.
    • من صفحة تكوين المهمة وتعريفات حاوية المهام، اتبع الخطوات التالية:
      • في حقل اسم تعريف المهمة، اكتب api.
      • مرر لأسفل حتى تعريفات حاوية المهام، واختر إضافة حاوية مهام.
      • في نافذة إضافة حاوية مهام:
        • يمكن ترك المعلمات غير المُحددة إما فارغة وإما بإعداداتها الافتراضية.
        • في حقل اسم حاوية المهام، اكتب api.
        • في حقل الصورة، اكتب ‏[account-ID].dkr.ecr.[region].amazonaws.com/api:v1‏‏‏
          استبدل كل من [account-ID] و[region] بمعلوماتك الخاصة. تأكد من تطابق علامة التبويب ‏v1‏مع القيمة التي استخدمتها في الوحدة 1 لوسم الصورة ودفعها. هذا رابط URL الخاص بصورة مستودع ECR الخاصة بك، والذي سبق أن أنشأته في الوحدة السابقة.
        • في حقل حدود الذاكرة، تأكد من تحديد حد القرص الصلب ثم اكتب في القيمة 256.
        • أسفل علامة تبويب تخصيص المنفذ، منفذ المضيف = 0 ومنفذ حاوية المهام = 3000.
        • مرر حتى اختيار البيئة، وحدات المعالجة المركزية (CPU) ‏= 256.
    • حدد إضافة.
      ستعود إلى صفحة تكوين المهمة وتعريفات حاوية المهام.
    • مرر حتى أسفل الصفحة وحدِّد إنشاء.

    يُدرج تعريف مهمتك في قائمة وحدة التحكم.

    تعريف المهمة
  • الخطوة 4. تكوين Application Load Balancer: المجموعة المستهدفة

    يسمح Application Load Balancer (ALB) لخدماتك بقبول تدفق البيانات الواردة. حيث يعمل موازن أحمال التطبيق على توجيه تدفق البيانات إلى مثيلات حاوية المهام قيد التشغيل على مجموعتك باستخدامها باعتبارها مجموعة مُستهدفة.

    تحقق من اسم VPC الخاص بك: إذا لم تكن هذه مرتك الأولى لاستخدام هذا الحساب على AWS، يحتمل أن تمتلك العديد من أسماء VPC. ينبغي أن تختر اسم VPC الصحيح لتكوين المجموعة المُستهدفة.

    • انتقل إلى القسم «موازن الأحمال» من وحدة تحكم EC2.
    • حدد موقع موازن الأحمال الذي يحمل الاسم العرض التجريبي.
    • حدِّد مربع الاختيار بجوار العرض التجريبي لرؤية تفاصيل موازن الأحمال.
    • من علامة تبويب الوصف، حدد مكان سمة ‏VPC‏ (الظاهرة بهذه الصيغة:vpc-xxxxxxxxxxxxxxxxx).
      ⚐ ملاحظة: ستحتاج إلى سمة VPC في الخطوة التالية عند تكوين مجموعة ALB المُستهدفة.
    سمة vpc

    تكوين مجموعة ALB المستهدفة

    • انتقل إلى قسم ‏‏المجموعة المُستهدفة في وحدة تحكم EC2‏.
    • حدِّد إنشاء مجموعة مُستهدفة.
    • قم بتكوين المعلمات التالية للمجموعة المُستهدفة (واترك المعلمات غير الواردة أدناه بقيمتها الافتراضية):
      • في اسم المجموعة المُستهدفة، اكتب epi.
      • في البروتوكول، حدِّد HTTP.
      • في المنفذ، اكتب 80.
      • في VPC، حدِّد القيمة المتوافقة مع أحد خيارات وصف موازن الأحمال. في الغالب لن تكون هي قيمة VPC الافتراضية الخاصة بك.
      • ادخل إلى إعدادات فحص الصحة المتقدم، وعدّل المعلمات التالية حسبما يلزم: 
        • في الحد السليم، اكتب 2.
        • في الحد غير السليم، اكتب 2.
        • في المُهلة، اكتب 5.
        • في الفاصل الزمني، اكتب 6.
    • حدِّد إنشاء.
    إنشاء مجموعات مُستهدفة
  • الخطوة 5. تكوين Application Load Balancer: وحدة إصغاء

    تتحقق وحدة إصغاء ALB من طلبات الاتصال الواردة إلى ALB الخاص بك.

    إضافة وحدة إصغاء إلى ALB‏

    • انتقل إلى القسم «موازن الأحمال» من وحدة تحكم EC2.
    • حدِّد مربع الاختيار بجوار العرض التجريبي لرؤية تفاصيل موازن الأحمال.
    • حدِّد علامة التبويب «وحدة الإصغاء».
    • حدِّد إضافة وحدة إصغاء ثم عدّل المعلمات التالية، حسبما يلزم:
      • في Protocol:port، حدِّدHTTP واكتب 80.
      • في الإجراء (الإجراءات) الافتراضي، حدِّدالتمرير إلىوفي حقل المجموعة المُستهدفة، اكتب api.
    • حدِّد حفظ.
    وحدة الإصغاء إلى ALB
  • الخطوة 6. نشر التطبيق الموحد كخدمة

    نشر التطبيق الموحد كخدمة عبر المجموعة.

    • انتقِل إلى وحدة تحكم Amazon ECS‏ وحدِّد المجموعات من شريط القوائم الأيسر.
    • حدِّد المجموعة BreakTheMonolith-Demo، وحدِّد علامة التبويب الخدمات ثم حدِّد إنشاء.
    • في صفحة تكوين الخدمات، عدّل المعلمات التالية (وحافظ على القيم الافتراضية للمعلمات غير المذكورة أدناه): 
      • بالنسبة إلى نوع التشغيل، حدِّد EC2.
      • بالنسبة إلى اسم الخدمة، اكتب api
      • بالنسبة إلى عدد المهام، اكتب 1.
      • حدِّد الخطوة التالية.
    • في صفحة تكوين الشبكة، قسم موازنة الأحمال، حدِّد Application Load Balancer.
      فستظهر معلمات إضافية، هي: دور خدمة IAM‏ واسم موازن الأحمال.
      • بالنسبة لـService IAM role، حدِّد BreakTheMonolith-Demo-ECSServiceRole.
      • بالنسبة إلى اسم موازن الأحمال، تأكد من تحديد العرض التجريبي.
    • في قسم حاوية مهام موازن الأحمال، حدِّد إضافة إلى موازن أحمال.
      تظهر المعلومات الإضافية المعنونة بالعنوان api:3000.
    • في قسم api:3000، نفّذ ما يلي:
      • بالنسبة إلى حقل منفذ وحدة إصغاء الإنتاج، حدِّد ‏‏‏‏80:HTTP‏.
      • بالنسبة إلى حقل اسم المجموعة المُستهدفة، حدِّد مجموعتك: ‏api‏.
      • حدِّد الخطوة التالية.
    • من صفحة ضبط Auto Scaling‏، اترك الإعدادات الافتراضية، ثم حدِّد الخطوة التالية.
    • من صفحة المراجعة، راجع الإعدادات ثم حدِّد إنشاء الخدمة.
    • بعد إتمام إنشاء الخدمة، حدِّد عرض الخدمة.
    واجهة برمجة تطبيقات Amazon ECS Service

    أحسنت! أصبح لديك الآن خدمة سارية. قد يستغرق تسجيل حاوية المهام كحاوية سليمة والبدء في تلقي تدفق البيانات دقيقة من الزمن.

  • الخطوة 7. اختبار تطبيقك الموحّد

    تحقق من نجاح عملية النشر عن طريق التأكد من توفر الخدمة على الإنترنت واختبار اتصالها.

    للعثور على رابط URL لخدمتك:

    • انتقل إلى قسم ‏Load Balancers‏ من وحدة تحكم EC2.
    • حدد العرض التوضيحي لموازن الأحمال.
    • في علامة التبويب الوصف، انسخ اسم DNS والصقه في علامة تبويب أو نافذة متصفح جديدة.
    • من المفترض أن تظهر لك رسالة جاهز لتلقي الطلبات.


    راجع كل جزء من الخدمة:
    يقوم تطبيق node.js بتوجيه حركة المرور إلى كل عامل بناءً على عنوان URL. لرؤية العامل، ما عليك سوى إضافة اسم العامل api/[worker-name] إلى نهاية اسم DNS كما يلي:

    • http://[DNS name]/api/users
    • http://[DNS name]/api/threads
    • http://[DNS name]/api/posts

    يمكنك أيضًا إضافة رقم قياسي في نهاية عنوان URL للتنقل إلى سجل معين. على سبيل المثال: ‏http://[DNS name]/api/posts/1‏ أو ‏http://[DNS name]/api/users/2‏

    العرض التوضيحي للمستخدم