عناقيد ECS وتعريفات المهام والخدمات
عرّف تعريفات مهام ECS باستخدام صور الحاويات وحدود الموارد، وسجّلها في عنقود، وأنشئ خدمة للحفاظ على العدد المطلوب
عناقيد ECS وتعريفات المهام والخدمات درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
لماذا نستخدم الحاويات على AWS؟
تجمع الحاويات التطبيق وجميع تبعياته في وحدة معزولة قابلة للنقل، وتعمل بطريقة متسقة عبر البيئات المختلفة. إن Amazon ECS (Elastic Container Service) هي خدمة AWS المُدارة بالكامل لتنسيق الحاويات، إذ تشغّل حاويات Docker دون أن تضطروا إلى إدارة مستوى التحكم. تتكامل ECS بعمق مع خدمات AWS (IAM وALB وCloudWatch وSecrets Manager)، وهي الطريقة الموصى بها لتشغيل الحاويات على AWS دون تعقيدات Kubernetes.
عناقيد ECS: وحدة التجميع
إن ECS Cluster تجميع منطقي لموارد الحوسبة التي تعمل فيها الحاويات. ويمكن أن يضم العنقود مثيلات EC2 (نوع تشغيل EC2)، أو سعة Fargate (نوع تشغيل Fargate)، أو كليهما. ويمكنكم تشغيل خدمات متعددة ومهام مستقلة في عنقود واحد. تكون العناقيد إقليمية لكنها تمتد عبر مناطق التوافر. ومن الأنماط الشائعة استخدام عنقود واحد لكل بيئة (التطوير/الاختبار/الإنتاج)، مع خدمات متعددة داخل كل عنقود للخدمات المصغرة المختلفة.
aws ecs create-cluster \
--cluster-name 'MyAppCluster' \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1,base=1تعريفات المهام: المخطط
إن Task Definition هو المخطط الخاص بتشغيل الحاويات في ECS، وهو مماثل لملف Docker Compose. ويحدد: صور الحاويات (عناوين ECR أو Docker Hub)، وتخصيصات وحدة المعالجة المركزية والذاكرة، وتعيينات المنافذ، ومتغيرات البيئة، وإعدادات التسجيل، والأحجام، ودور مهمة IAM. ويُدار إصدار تعريف المهمة، إذ إن كل مراجعة غير قابلة للتغيير. ويمكنكم تعريف حاويات متعددة لكل مهمة لتطبيق نمط sidecar (التطبيق الرئيسي + ناقل السجلات + وكيل المراقبة).
{
'family': 'myapp-task',
'networkMode': 'awsvpc',
'requiresCompatibilities': ['FARGATE'],
'cpu': '512',
'memory': '1024',
'executionRoleArn': 'arn:aws:iam::123456789012:role/ecsTaskExecutionRole',
'taskRoleArn': 'arn:aws:iam::123456789012:role/myAppTaskRole',
'containerDefinitions': [{
'name': 'myapp',
'image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp:latest',
'portMappings': [{'containerPort': 8080}]
}]
}دور المهمة مقابل دور التنفيذ
تستخدم مهام ECS دورَي IAM منفصلين لغرضين مختلفين. يُستخدم Task Execution Role من قِبل وكيل ECS لسحب صور الحاويات من ECR، وإرسال السجلات إلى CloudWatch، واسترداد الأسرار من Secrets Manager أو Parameter Store عند بدء المهمة. ويُستخدم Task Role من قِبل رمز التطبيق الذي يعمل داخل الحاوية لاستدعاء خدمات AWS (S3 وDynamoDB وSQS). امنحوا دائمًا كل دور أذونات أقل قدر من الامتيازات بشكل منفصل، ولا تمنحوا دور التنفيذ أذونات لا يحتاج إليها التطبيق.
خدمات ECS لأحمال العمل طويلة التشغيل
تحافظ ECS Service على عدد محدد من مثيلات المهام قيد التشغيل في الوقت نفسه (وهو العدد المطلوب). وإذا تعطلت مهمة أو توقفت، يشغّل مجدول الخدمة بديلًا لها تلقائيًا. كما تتكامل الخدمات مع Elastic Load Balancing لتوزيع حركة المرور، وتدعم عمليات النشر التدريجي وعمليات النشر blue/green. استخدموا خدمة لأي عملية طويلة التشغيل (خادم ويب أو خادم API أو عامل في الخلفية). أما المهام التي تُنفذ مرة واحدة، فشغّلوها كمهمة مستقلة بدلًا من ذلك.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--launch-type FARGATE \
--network-configuration '{
"awsvpcConfiguration": {
"subnets": ["subnet-aaa111", "subnet-bbb222"],
"securityGroups": ["sg-xyz"],
"assignPublicIp": "DISABLED"
}
}'أوضاع الشبكة: awsvpc مقابل bridge
يمنح وضع الشبكة awsvpc كل مهمة ECS واجهة شبكة مرنة (ENI) وعنوان IP خاصًا بها داخل VPC، تمامًا مثل مثيل EC2. ويتيح ذلك تحكمًا دقيقًا في مجموعات الأمان لكل مهمة، وهو مطلوب لمهام Fargate. أما وضع الشبكة bridge فيستخدم الشبكة الافتراضية المضمنة في Docker على المضيف، مع تعيين المنافذ من المضيف إلى الحاوية، ويشارك واجهة ENI الخاصة بمثيل EC2 المضيف. بالنسبة إلى اختبار SAA-C03، يستخدم Fargate دائمًا awsvpc، بينما يمكن لنوع تشغيل EC2 استخدام أي من الوضعين.
إرفاق موازن تحميل بخدمة ECS
سجّلوا خدمة ECS الخاصة بكم في مجموعة أهداف ALB لتوزيع حركة المرور عبر مثيلات المهام. عند بدء مهمة جديدة، تسجلها ECS تلقائيًا في مجموعة الأهداف، وعند توقفها تلغي ECS تسجيلها. اضبطوا فترة سماح لفحص السلامة (مثل 60 إلى 120 ثانية) لمنح الحاويات وقتًا لبدء التشغيل قبل تنفيذ فحوصات السلامة. ومن دون فترة سماح، قد يضع ALB علامة تفيد بأن الحاوية بطيئة البدء غير سليمة قبل جاهزيتها، مما يؤدي إلى حلقات استبدال.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--load-balancers \
'targetGroupArn=arn:aws:elasticloadbalancing:...,containerName=myapp,containerPort=8080' \
--health-check-grace-period-seconds 120 \
--task-definition 'myapp-task:5' \
--desired-count 3النشر التدريجي مقابل النشر blue/green
تدعم خدمات ECS استراتيجيتين للنشر: يستبدل Rolling Update المهام القديمة بالجديدة تدريجيًا، ويمكن ضبطه باستخدام minimumHealthyPercent (الحد الأدنى) وmaximumPercent (الحد الأقصى). ويعني ضبط القيمتين على 100/200 تشغيل المهام القديمة أثناء بدء تشغيل الجديدة (اشتراط سلامة 100%، مع سعة تصل إلى 200%). أما النشر Blue/Green (عبر AWS CodeDeploy)، فينشئ مجموعة مهام جديدة إلى جانب القديمة، ويحوّل حركة المرور تدريجيًا باستخدام التوجيه الموزون في ALB، ثم ينهي المهام القديمة بعد التحقق. ويوفر النشر blue/green إمكانية التراجع دون توقف.
التسجيل في CloudWatch من ECS
اضبطوا برنامج تشغيل السجلات awslogs في تعريف المهمة لإرسال مخرجات stdout/stderr الخاصة بالحاوية مباشرةً إلى CloudWatch Logs. وحددوا مجموعة سجلات ومنطقة وبادئة تدفق. يحتاج دور تنفيذ المهمة إلى الأذونات logs:CreateLogStream وlogs:PutLogEvents. ولتجميع السجلات مركزيًا عبر خدمات متعددة، يمكنكم استخدام FireLens (حاوية sidecar مع Fluent Bit أو Fluentd) لتوجيه السجلات إلى S3 أو OpenSearch أو أنظمة تسجيل تابعة لجهات خارجية.
'logConfiguration': {
'logDriver': 'awslogs',
'options': {
'awslogs-group': '/ecs/myapp',
'awslogs-region': 'us-east-1',
'awslogs-stream-prefix': 'myapp'
}
}اكتشاف خدمات ECS باستخدام Cloud Map
عندما تحتاج الخدمات المصغرة في ECS إلى التواصل فيما بينها، لن تنجح عناوين IP المضمّنة مباشرةً، لأن المهام مؤقتة وتحصل على عناوين IP جديدة عند كل تشغيل. استخدموا AWS Cloud Map (اكتشاف خدمات ECS) لتسجيل عنوان IP ومنفذ كل مهمة في مساحة أسماء DNS. وتحل الخدمات الأخرى myservice.namespace.local إلى عناوين IP الحالية للمهام السليمة. وتسجل ECS المهام الجديدة تلقائيًا وتلغي تسجيل المهام الفاشلة، مما يحافظ على دقة سجلات DNS دون إدارة يدوية.
الأسرار في تعريفات مهام ECS
لا تضعوا بيانات الاعتماد مباشرةً في تعريفات المهام. بدلًا من ذلك، ارجعوا إلى أسرار Secrets Manager أو Parameter Store في تعريف المهمة، إذ تحقنها ECS كمتغيرات بيئة عند بدء المهمة. يجب أن يمتلك دور تنفيذ المهمة أذونات استرداد الأسرار. بالنسبة إلى Secrets Manager، استخدموا secretsmanager:GetSecretValue، وبالنسبة إلى Parameter Store، استخدموا ssm:GetParameters. تُسترد الأسرار مرة واحدة عند بدء الحاوية، ولذلك يتطلب تدوير الأسرار استبدال المهمة لالتقاط القيم الجديدة.
'secrets': [
{
'name': 'DB_PASSWORD',
'valueFrom': 'arn:aws:secretsmanager:us-east-1:123456789012:secret:myapp/db-password-AbCdEf'
},
{
'name': 'API_KEY',
'valueFrom': 'arn:aws:ssm:us-east-1:123456789012:parameter/myapp/api-key'
}
]تحقق سريع
اختبروا فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلمتم في هذا الدرس أن ECS Clusters تجمع موارد الحوسبة التي تعمل فيها المهام، وأن Task Definitions تحدد صور الحاويات ووحدة المعالجة المركزية والذاكرة والأدوار والتسجيل باعتبارها مخططات ذات إصدارات، وأن ECS Services تحافظ على عدد المهام المطلوب، وتتکامل مع ALB لتوزيع حركة المرور، وتدعم عمليات النشر التدريجي أو blue/green. وسنقارن بعد ذلك بين نوع تشغيل EC2 ونوع تشغيل Fargate عديم الخوادم.
الأسئلة الشائعة
هل درس «عناقيد ECS وتعريفات المهام والخدمات» مجاني؟
نعم — نص درس «عناقيد ECS وتعريفات المهام والخدمات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «عناقيد ECS وتعريفات المهام والخدمات»؟
عرّف تعريفات مهام ECS باستخدام صور الحاويات وحدود الموارد، وسجّلها في عنقود، وأنشئ خدمة للحفاظ على العدد المطلوب تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «عناقيد ECS وتعريفات المهام والخدمات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عناقيد ECS وتعريفات المهام والخدمات
- نوع تشغيل EC2 في مقابل Fargate
- ECR: تخزين صور الحاويات وسحبها
- التوسّع التلقائي لخدمات ECS وموازنة التحميل