في هذا البرنامج التعليمي، أود أن أوضح لك كيفية نشر تطبيق Rails نموذجي باستخدام خدمة حاويات أمازون المرنة (ECS).
لنقم بإنشائه عن طريق تشغيل القضبان نموذج جديد-قضبان-التطبيقثم توليد إجراء تحكم أساسي مؤشر الترحيب بوحدة تحكم القضبان زاي وتعيين المسارات إلى المسار الجذري كـ "جذر إلى: مرحبًا#index".
هدفنا هو نشر صفحة الترحيب هذه باستخدام ECS.
إنشاء مستودع باستخدام سجل حاويات أمازون المرن (ECR)
أمازون ECR هو سجل الحاويات. سوف نستخدمه لتخزين صور تطبيقاتنا وسحبها منه بحيث تعمل على ECS.
انتقل إلى لوحة AWSابحث عن حاوية مرنة السجل وانقر فوق ابدأ الآن. سترى الشاشة أدناه:
سننشئ مستودعًا خاصًا ونسميه نموذج-قضبان-التطبيق.
المستودع موجود، لكنه فارغ. نريده أن يحتوي على صورة تطبيقنا. هذه هي الخطوة التالية.
# طرح أخطاء إذا تم تعديل ملف Gemfile منذ Gemfile.lock
تشغيل تكوين الحزمة --عالمي مجمد 1
WORKDIR / التطبيق
نسخ ملف Gemfile Gemfile.lock ./ ./
تشغيل تثبيت الحزمة
نسخ .
CMD ["القضبان"، "الخادم"، "-b"، "0.0.0.0.0"]
ثم يجب علينا إنشاء صورة ودفعها إلى مستودع ECR.
قبل ذلك، لنقم قبل ذلك بتجميع الأصول مسبقًا باستخدام "تجميع الأصول: التجميع المسبق".
الآن، انتقل إلى المستودع الذي تم إنشاؤه. في الجزء العلوي من الشاشة، سترى في الجزء العلوي من الشاشة عرض أوامر الدفع مع تفاصيل حول كيفية القيام بذلك.
في حالتي (لينكس)، أقوم بتشغيله باستخدام تعليمات AWS هذه:
تأكد من أن المستخدم مسموح له بالقيام بهذه العملية. لقد أضفتُ سياسة AmazonElasticContainerRegistryPowerPowerUser إلى المستخدم الخاص بي، والتي تبدو كالتالي:
أريد أن يتمكن العالم الخارجي من الاتصال بموازن تحميل التطبيق الخاص بي فقط. سيمرر حركة المرور إلى الحاويات التي تعمل داخل مجموعة ECS الخاصة بنا.
انتقل إلى خدمات EC2 -> موازنة التحميل -> موازنات التحميل، انقر إنشاء موازن التحميلاختر موازن تحميل التطبيقات وانقر على إنشاء الزر.
تعيين اسمها إلى نموذج-قضبان-التطبيق-الب، استخدم VPC الافتراضي الخاص بك وحدد جميع شبكاته الفرعية.
يتبقى لدينا المجموعات الأمنية و المستمعون والتوجيه الأقسام.
المجموعات الأمنية
سننشئ مجموعة أمان جديدة لموازن التحميل الخاص بنا. إنه يعمل مثل جدار الحماية؛ سنقوم بتعيين القواعد لحركة المرور الواردة والصادرة. نريد أن نقبل حركة مرور http الواردة (منفذ TCP 80) ونسمح بكل حركة المرور الصادرة.
للقيام بذلك، انقر على "إنشاء مجموعة أمان جديدة" رابط.
في قسم "التفاصيل الأساسية"، قم بتعيين الاسم والوصف، اترك VPC الافتراضي.
في حالتي - الاسم: "عينة-قضبان-التطبيق-التطبيق-الب-سغ-سغ"، الوصف: "http من الخارج، كل ذلك من الداخل"
أضف القاعدة الواردة مع النوع: HTTP والمصدر: في أي مكان-IPv4. اترك القواعد الصادرة كما هي.
انقر فوق إنشاء مجموعة أمان، ثم ارجع إلى علامة التبويب حيث كنت تنشئ موازن تحميل التطبيق، وقم بتحديث مجموعات الأمان وأضف المجموعة التي أنشأناها للتو، وقم بإزالة المجموعة الافتراضية.
المستمعون والتوجيه
في هذا القسم، سنحدد إلى أين نريد أن يمرر موازن التحميل حركة المرور. اترك المستمعالبروتوكول و الميناء مثل HTTP و80، لأن هذا بالضبط ما نريده، وانقر على "إنشاء مجموعة مستهدفة" رابط.
تعيين الاسم إلى "عينة-قضبان-التطبيق-التطبيق-الب-تغ". التغيير الوحيد هو رقم المنفذ. سنقوم بتمريره إلى المنفذ 3000 لأن هذا هو المنفذ الخاص بتطبيق Rails الخاص بنا. تجاهل الخطوة التالية (الأهداف المسجلة) وإنشاء المجموعة المستهدفة.
عد الآن إلى علامة التبويب حيث كنا ننشئ موازن تحميل التطبيق، وقم بتحديث المجموعة المستهدفة وحدد المجموعة التي أنشأناها للتو.
لدينا موازن تحميل التطبيقات جاهز، والآن لنلعب مع ECS.
إنشاء مجموعة ECS العنقودية
هناك الكثير من المصطلحات المخيفة التي ستراها - الكتلة والمهام وتعريف المهام والخدمات. لتبسيط الأمر، فكر في الكتلة كمجموعة من الخوادم (مثيلات EC2). على كل واحد منها، نقوم بتشغيل المهام، وهي مجرد مجموعة من الحاويات التي تعمل معًا. يصف تعريف المهمة الحاويات الموجودة في مجموعة معينة والموارد التي نرغب في منحها لها (الذاكرة، وحدة المعالجة المركزية). تراقب الخدمات هذه المهام للتأكد من وجود عدد صحيح دائمًا من المهام السليمة التي تعمل في مجموعتنا.
مع وضع ذلك في الاعتبار، دعنا ننشئ مجموعتنا العنقودية.
انتقل إلى صفحة ECS وانقر على التكتلات الرابط و إنشاء مجموعة عنقودية زر. اختر "شبكات EC2 + لينكس EC2 + لينكس" واحد وانقر الخطوة التالية.
تعيين اسم المجموعة إلى "عينة-قضبان-تطبيق-مجموعة التطبيقات". اختر نوع مثيل EC2، وقد اخترتُ مثيل t2-micro لأنه متاح ضمن خطة المستوى المجاني. اترك عدد المثيلات 1.
في قسم الشبكات، استخدم VPC الافتراضي الخاص بك وحدد جميع شبكاته الفرعية. انقر فوق إنشاء، انتظر قليلاً وفويلا، لدينا مجموعة ECS Cluster جديدة تم إنشاؤها.
تعريف المهمة
انقر على تعريفات المهام الرابط، ثم إنشاء تعريف مهمة جديدة زر. حدد الزر EC2 وانقر فوق الخطوة التالية. التطبيق الذي سنقوم بتشغيله بسيط للغاية، لذلك نحن بحاجة إلى بعض الخيارات فقط هنا.
مجموعة تعريف المهمة الاسم إلى "نموذج-قضبان-التطبيق"، ثم انتقل مباشرة إلى تعريفات الحاويات وانقر على "إضافة حاوية". قم بتسمية الحاوية باسم "نموذج-قضبان-التطبيق"، وتعيين موقع الصورة بالصيغة "مستودع-url/صورة/صورة:علامة". في علامة تبويب المتصفح الجديدة، انتقل إلى ECR لنسخ URI الصورة. في حالتي، كان "212516879399.dkr.ecr.eu-central-1.amazonaws.com/sample-rails-app:latest".
اضبط حد الذاكرة على 300-500 ميغابايت الموصى به. الآن، الأمر الأكثر صعوبة - تعيين المنفذ.
يعمل تطبيقنا داخل حاوية على منفذ 3000. لذا ضع 3000 كمنفذ للحاوية. سندخل 0 كمنفذ مضيف، مما يعني بشكل أساسي أنه يختار منفذًا عشوائيًا. لحسن الحظ، سيعرف موازن تحميل التطبيق لدينا تعيين المنفذ هذا وسيكون قادرًا على توجيه حركة المرور بشكل صحيح. يمكننا حتى تشغيل مهام متعددة على هذا المثيل الواحد.
إضافة متغير البيئة RAILS_ENV وضبطه على الإنتاج.
انقر الآن إضافة لإضافة تعريف الحاوية الخاصة بنا والنقر على إنشاء لإنهاء إعداد تعريف المهمة.
الخدمة
لدينا مجموعتنا وموازن التحميل وتعريف المهام. الآن علينا تشغيل هذه المهام بطريقة ما داخل مجموعتنا. هذه هي مهمة الخدمات. انتقل إلى المجموعة التي تم إنشاؤها حديثًا، وحدد الخدمات وانقر على علامة التبويب إنشاء الزر.
قم بتعيين نوع التشغيل على EC2، أضف الاسم "عينة-قضبان-تطبيق-تطبيق-خدمة". اضبط عدد المهام على 1 وانقر فوق الخطوة التالية. في هذه الصفحة، حدد زر الاختيار "موازن تحميل التطبيق" واختر دور IAM الموجود له. في قسم "حاوية لموازنة التحميل"، يجب أن تكون قد أدخلت بالفعل حاوية صحيحة "نموذج-قضبان-التطبيق:0:3000"، ثم انقر فوق "إضافة إلى موازن التحميل".
بالنسبة لمنفذ "منفذ مستمع الإنتاج"، اختر 80:HTTP؛ كاسم مجموعة الهدف، استخدم الاسم الذي أنشأناه من قبل - "عينة-قضبان-التطبيق-التطبيق-الب-تغ" وانقر فوق الخطوة التالية. الإجازة التحجيم التلقائي الخيارات كما هي، انقر فوق الخطوة التالية و إنشاء الخدمة.
تحديث مجموعة أمان ECS
يمكنك الانتقال إلى صفحة المجموعة التي تم إنشاؤها والتحقق من المهام علامات التبويب، يجب أن تكون هناك مهمة واحدة قيد التشغيل. لقد بدأت الخدمة تشغيلها. انتقل الآن إلى صفحة خدمة EC2، وانقر على موازنات التحميل وشاهد تفاصيل موازن تحميل التطبيقات. يجب أن يكون لديك هناك اسم DNS الخاص به. انسخه وافتحه في المتصفح. يجب أن يوجهك إلى تطبيقنا. لسوء الحظ، نحصل على "504 مهلة البوابة 504" خطأ.
تكمن المشكلة في مجموعة الأمان في مجموعتنا. قواعدها الواردة لا تسمح بحركة المرور الواردة من موازن التحميل. لإصلاح ذلك، ارجع إلى لوحة EC2 وانقر على المجموعات الأمنية الارتباط. هناك مجموعة جديدة تم إنشاؤها أثناء عملية إنشاء المجموعة. يجب أن يكون لها اسم يبدأ بـ "EC2ContainerService-عينة-قضبان-تطبيق-مجموعة تطبيقات-مجموعة تطبيقات- EC2ContainerService". انقر فوقه وقم بتحرير القواعد الواردة. نظرًا لأننا نريد السماح بأي حركة مرور من VPC الخاص بنا، انتقل إلى لوحة Amazon VPC وتحقق من VPC IPv4 CIDR الخاص بك. اضبط نوع القاعدة على "كل حركة المرور" والمصدر إلى IPv4 CIDR. احفظ هذه القاعدة وحاول تحميل اسم DNS الخاص بالموازن.