التوسّع التلقائي لخدمات ECS وموازنة التحميل
اربط موازن تحميل التطبيقات ALB بخدمات ECS لتوجيه الطلبات حسب المسار، واضبط التوسّع التلقائي للخدمة للاستجابة لمقاييس CPU أو مقاييس CloudWatch مخصّصة
التوسّع التلقائي لخدمات ECS وموازنة التحميل درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
الحاجة إلى التوسّع التلقائي لخدمة ECS
لا يمكن لـالعدد المطلوب الثابت في خدمة ECS الاستجابة لتقلبات حركة المرور؛ فإما أن تفرطوا في توفير الموارد (فتهدرون المال)، أو تقللوا من توفيرها (فتتراجع الأداء). يعمل التوسّع التلقائي لخدمة ECS على ضبط العدد المطلوب من المهام تلقائيًا استجابةً لمقاييس CloudWatch. ويستخدم في الخلفية خدمة Application Auto Scaling، وهي الإطار نفسه المستخدم مع DynamoDB وAurora وElastiCache. ويدعم التوسّع التلقائي لخدمة ECS سياسات تتبّع الهدف، والتوسّع المرحلي، والتوسّع المجدول.
تسجيل ECS كهدف قابل للتوسّع
قبل إضافة سياسات التوسّع، سجّلوا خدمة ECS باعتبارها هدفًا قابلًا للتوسّع في Application Auto Scaling. حدّدوا الحد الأدنى والأقصى لعدد المهام، واسم العنقود، واسم الخدمة باعتبارها معرّف المورد. يؤدي ذلك إلى إنشاء النطاق الذي سيعمل التوسّع التلقائي ضمنه. يضمن الحد الأدنى توفر سعة أساسية دائمًا، بينما يمنع الحد الأقصى التوسّع غير المنضبط الذي قد يستنفد سعة Fargate أو مثيلات EC2.
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--min-capacity 2 \
--max-capacity 20تتبّع الهدف لخدمات ECS
يُعد تتبّع الهدف سياسة التوسّع التلقائي الموصى بها لمعظم خدمات ECS. والمقياس الأكثر شيوعًا هو ECSServiceAverageCPUUtilization؛ إذ تحدّدون هدفًا يتراوح بين 50 و70%، وتضيف ECS المهام أو تزيلها للحفاظ على مستوى استخدام وحدة المعالجة المركزية هذا. ومن المقاييس الفعالة الأخرى ALBRequestCountPerTarget، الذي يتتبّع عدد طلبات ALB لكل مهمة ويُجري التوسّع للحفاظ على معدل طلبات مستهدف لكل مثيل. تتولى AWS تلقائيًا عمليتي التوسّع الأفقي والتقليص، مع فترات تهدئة مناسبة.
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--policy-name 'ECSTargetTracking' \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ECSServiceAverageCPUUtilization"
},
"TargetValue": 60.0,
"ScaleOutCooldown": 60,
"ScaleInCooldown": 300
}'توجيه ALB إلى خدمات ECS
يؤدي إرفاق Application Load Balancer (ALB) بخدمة ECS إلى توزيع حركة مرور HTTP/HTTPS على جميع المهام قيد التشغيل. وتسجّل مجموعة أهداف ALB عنوان IP لكل مهمة (في Fargate/awsvpc) أو منفذ الحاوية (في وضع bridge). وتسجّل ECS المهام الجديدة تلقائيًا في مجموعة الأهداف عند بدء تشغيلها، وتلغي تسجيلها عند توقفها. يُجري ALB فحوصات سلامة لكل مهمة؛ وتُستنزف المهام غير السليمة (إذ تُغلق الاتصالات بسلاسة) قبل أن تنهيها الخدمة.
التوجيه القائم على المسار لخدمات متعددة
يتمثل أحد الأنماط الفعالة في توجيه مسارات URL المختلفة إلى خدمات ECS مختلفة باستخدام التوجيه القائم على المسار في ALB. ويمكن لـ ALB واحد مزود بمستمع HTTPS واحد توجيه: /api/orders/* إلى خدمة Orders في ECS، و/api/users/* إلى خدمة Users في ECS، و/api/products/* إلى خدمة Products في ECS؛ وتستند كل منها إلى خدمة ECS مستقلة ذات توسّع منفصل. يلغي ذلك الحاجة إلى موازنات تحميل منفصلة لكل خدمة مصغّرة، مما يقلل التكلفة ويسهّل إدارة DNS.
# ALB listener rule for ECS microservice routing
aws elbv2 create-rule \
--listener-arn 'arn:aws:elasticloadbalancing:...' \
--priority 10 \
--conditions '[{"Field": "path-pattern", "Values": ["/api/orders/*"]}]' \
--actions '[{"Type": "forward", "TargetGroupArn": "arn:...OrdersTargetGroup"}]'استنزاف الاتصالات وتأخير إلغاء التسجيل
عندما تكون مهمة ECS قيد الإنهاء (أثناء التقليص أو النشر)، يضعها ALB في حالة draining ويوقف توجيه الطلبات الجديدة إليها، مع السماح بإكمال الطلبات قيد التنفيذ. ويحدد تأخير إلغاء التسجيل (300 ثانية افتراضيًا، وقابل للضبط من 0 إلى 3600 ثانية) المدة التي ينتظرها ALB قبل إغلاق الاتصالات إجباريًا. بالنسبة إلى ECS ذات مدد الطلبات القصيرة، اضبطوا تأخير إلغاء التسجيل على قيمة أقل (30–60 ثانية) لتسريع عمليات النشر والتقليص. أما الاتصالات طويلة الأمد (WebSocket وعمليات تحميل الملفات)، فأبقوا التأخير مرتفعًا.
# Set deregistration delay on target group to 60 seconds
aws elbv2 modify-target-group-attributes \
--target-group-arn 'arn:aws:elasticloadbalancing:...' \
--attributes 'Key=deregistration_delay.timeout_seconds,Value=60'المقاييس المخصصة لتوسّع ECS
بالإضافة إلى وحدة المعالجة المركزية والذاكرة، انشروا مقاييس CloudWatch مخصصة من تطبيقكم (مثل عمق قائمة الانتظار، والجلسات النشطة، ومؤشرات الأداء الرئيسية للأعمال)، واستخدموها للتحكم في التوسّع. على سبيل المثال، إذا كانت كل مهمة ECS قادرة على معالجة 50 رسالة من قائمة الانتظار بالتزامن، فانشروا عمق قائمة انتظار SQS كمقياس مخصص، وأنشئوا سياسة تتبّع هدف تستهدف 50 رسالة لكل مهمة. يتيح ذلك توسّعًا مباشرًا مدفوعًا بمنطق الأعمال، بدلًا من الاعتماد على مقاييس البنية التحتية التي قد لا ترتبط بحِمل التطبيق.
aws application-autoscaling put-scaling-policy \
--policy-name 'QueueDepthScaling' \
--policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{
"CustomizedMetricSpecification": {
"MetricName": "QueueDepth",
"Namespace": "MyApp",
"Statistic": "Average"
},
"TargetValue": 50.0
}' \
--resource-id 'service/MyCluster/WorkerService' \
--scalable-dimension ecs:service:DesiredCount \
--service-namespace ecsحماية المهام من التقليص
على غرار التوسّع التلقائي في EC2، تدعم ECS حماية المهام من التقليص. ويمكن لمهمة قيد التشغيل ضبط علامة الحماية الخاصة بها عبر واجهة ECS API لمنع إنهائها أثناء التقليص، ما دامت تعالج مهمة مهمة. يفيد ذلك في مهام ECS التي تعمل كعمّال SQS؛ إذ يستطيع العامل الذي أزال مهمة طويلة من قائمة الانتظار للتو حماية نفسه، وإكمال المهمة، ثم إزالة الحماية. ومن دون ذلك، قد ينهي التقليص مهمة قيد المعالجة، مما يؤدي إلى تكرار المهمة أو فقدان البيانات.
# From inside the ECS task container
curl -X PUT 'http://169.254.170.2/v3/tasks/scale-in-protection' \
-H 'Content-Type: application/json' \
-d '{"ProtectionEnabled": true, "ExpiresInMinutes": 60}'مقاييس التوسّع: وحدة المعالجة المركزية مقابل الذاكرة مقابل ALB
اختاروا مقياس التوسّع بعناية. يُعد استخدام وحدة المعالجة المركزية الخيار الافتراضي، ويناسب أعباء العمل المحدودة بوحدة المعالجة المركزية. ويفيد استخدام الذاكرة (ECSServiceAverageMemoryUtilization) التطبيقات المحدودة بالذاكرة، لكن زيادة الذاكرة تتطلب إضافة مهام؛ فإذا كانت المهمة محدودة بالذاكرة المتاحة لكل مهمة وليس بالمعالجة المتزامنة، فقد يكون من الأفضل إصلاح تخصيص الذاكرة في تعريف المهمة. ويرتبط ALBRequestCountPerTarget مباشرة بتجربة المستخدم، وهو المقياس الأكثر قابلية لاتخاذ إجراء بالنسبة إلى واجهات API الويب؛ إذ يتيح التوسّع استنادًا إلى معدل الطلبات الفعلي لكل مهمة.
قاطع دائرة نشر ECS
يكتشف قاطع دائرة نشر ECS عمليات النشر الفاشلة تلقائيًا، ويجري التراجع إلى آخر إصدار مستقر. ومن دونه، سيواصل نشر سيئ (مثل حاوية تفشل في فحوصات السلامة) محاولة تشغيل مهام جديدة في ECS إلى أجل غير محدد. عند تمكين قاطع الدائرة، إذا فشلت نسبة معينة من المهام التي شُغّلت حديثًا في فحوصات السلامة خلال نافذة الكشف، تضع ECS علامة FAILED على عملية النشر، وتتراجع تلقائيًا إلى مراجعة تعريف المهمة السابقة. ويمنع ذلك استمرار تدهور الخدمة بسبب عمليات النشر السيئة.
aws ecs create-service \
--cluster 'MyAppCluster' \
--service-name 'MyAppService' \
--task-definition 'myapp-task:5' \
--desired-count 3 \
--deployment-configuration '{
"deploymentCircuitBreaker": {
"enable": true,
"rollback": true
},
"minimumHealthyPercent": 100,
"maximumPercent": 200
}'البنية الشاملة من البداية إلى النهاية: ECS + ALB + التوسّع التلقائي
تتكون بنية واجهة API ويب حاوية جاهزة للإنتاج مما يلي: يحل Route 53 النطاق إلى اسم DNS الخاص بـALB؛ وينهي ALB اتصالات HTTPS (باستخدام شهادة ACM)، ويطبق قواعد WAF، ويوجه الطلبات إلى مجموعة أهداف خدمة ECS؛ وتعالج مهام Fargate الموجودة في شبكات فرعية خاصة عبر 3 مناطق توافر الطلبات؛ ويضبط التوسّع التلقائي لخدمة ECS، باستخدام تتبّع الهدف على ALBRequestCountPerTarget، عدد المهام من 2 إلى 50؛ وتتصل المهام بـRDS Aurora وElastiCache في شبكات فرعية خاصة. وتُرسل جميع السجلات إلى CloudWatch Logs، بينما تقود المقاييس لوحات معلومات CloudWatch والتنبيهات.
اختبار سريع
اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلّمتم في هذا الدرس أن التوسّع التلقائي لخدمة ECS يستخدم Application Auto Scaling مع تتبّع الهدف (وحدة المعالجة المركزية أو طلبات ALB أو المقاييس المخصصة) لضبط عدد المهام ضمن الحدين الأدنى والأقصى المُعدّين، وأن التوجيه القائم على المسار في ALB يتيح لموازن تحميل واحد خدمة عدة خدمات مصغّرة في ECS عبر توجيه مسارات URL إلى مجموعات أهداف مختلفة، وأن قاطع دائرة النشر يتراجع تلقائيًا عن عمليات النشر الفاشلة قبل أن تسبب تدهورًا ممتدًا في الخدمة. وبذلك تكتمل وحدة ECS والحاويات؛ وسنستكشف بعد ذلك Amazon EKS لتشغيل Kubernetes على AWS.
الأسئلة الشائعة
هل درس «التوسّع التلقائي لخدمات ECS وموازنة التحميل» مجاني؟
نعم — نص درس «التوسّع التلقائي لخدمات ECS وموازنة التحميل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AWS Solutions Architect، انتقل إلى CoddyKit PRO. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.
ماذا ستتعلم في «التوسّع التلقائي لخدمات ECS وموازنة التحميل»؟
اربط موازن تحميل التطبيقات ALB بخدمات ECS لتوجيه الطلبات حسب المسار، واضبط التوسّع التلقائي للخدمة للاستجابة لمقاييس CPU أو مقاييس CloudWatch مخصّصة تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟
لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «التوسّع التلقائي لخدمات ECS وموازنة التحميل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟
نعم. كل درس في AWS Solutions Architect يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عناقيد ECS وتعريفات المهام والخدمات
- نوع تشغيل EC2 في مقابل Fargate
- ECR: تخزين صور الحاويات وسحبها
- التوسّع التلقائي لخدمات ECS وموازنة التحميل