ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme
Yola dayalı yönlendirme için ECS hizmetlerine bir ALB bağlayın ve CPU ya da özel CloudWatch ölçümlerine yanıt verecek hizmet otomatik ölçeklendirmesini yapılandırın.
ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme, CoddyKit'te ücretsiz bir AWS Solutions Architect dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AWS Solutions Architect öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
ECS Hizmeti Otomatik Ölçeklendirmesine Duyulan İhtiyaç
Bir ECS hizmetindeki sabit desired count değeri, trafik dalgalanmalarına yanıt veremez; ya kapasiteyi gereğinden fazla ayırarak para harcarsınız ya da yetersiz kapasite ayırarak performansı düşürürsünüz. ECS Service Auto Scaling, CloudWatch ölçümlerine yanıt olarak görevlerin istenen sayısını otomatik biçimde ayarlar. Arka planda DynamoDB, Aurora ve ElastiCache tarafından da kullanılan aynı çerçeve olan Application Auto Scaling hizmetinden yararlanır. ECS hizmeti otomatik ölçeklendirmesi, hedef izleme, adımlı ölçeklendirme ve zamanlanmış ölçeklendirme politikalarını destekler.
ECS'yi Ölçeklenebilir Hedef Olarak Kaydetme
Ölçeklendirme politikaları eklemeden önce ECS hizmetini Application Auto Scaling içinde scalable target olarak kaydedin. Minimum ve maksimum görev sayılarını, küme adını ve kaynak kimliği olarak hizmet adını belirtin. Bu işlem, otomatik ölçeklendirmenin çalışacağı sınırları oluşturur. Minimum sayı, her zaman temel kapasiteye sahip olmanızı sağlar; maksimum sayı ise kontrolsüz ölçeklendirmenin Fargate kapasitesini veya EC2 bulut sunucularını tüketmesini önler.
aws application-autoscaling register-scalable-target \
--service-namespace ecs \
--scalable-dimension ecs:service:DesiredCount \
--resource-id 'service/MyAppCluster/MyAppService' \
--min-capacity 2 \
--max-capacity 20ECS Hizmetleri için Hedef İzleme
Target Tracking, çoğu ECS hizmeti için önerilen otomatik ölçeklendirme politikasıdır. En yaygın hedef ölçüm ECSServiceAverageCPUUtilization değeridir. %50-70 arasında bir hedef belirlediğinizde ECS, CPU düzeyini korumak için görev ekler veya kaldırır. Bir diğer güçlü ölçüm olan hedef başına ALB istek sayısı, görev başına düşen ALB isteklerini izleyerek her bulut sunucusundaki hedef istek hızını koruyacak şekilde ölçeklendirme yapar. AWS, uygun bekleme süreleriyle yatay büyütme ve yatay küçültme işlemlerini otomatik olarak yönetir.
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 Trafiğini ECS Hizmetlerine Yönlendirme
Bir Application Load Balancer (ALB)'ı ECS hizmetine bağlamak, HTTP/HTTPS trafiğini çalışan tüm görevlere dağıtır. ALB hedef grubu, her görevin IP adresini (Fargate/awsvpc için) veya kapsayıcı bağlantı noktasını (bridge modu için) kaydeder. ECS, yeni görevler başlatıldıkça bunları otomatik olarak hedef grubuna kaydeder ve durduklarında kayıtlarını kaldırır. ALB her görev üzerinde durum denetimleri gerçekleştirir; sağlıksız görevler, hizmet tarafından sonlandırılmadan önce bağlantılar düzgün biçimde kapatılarak boşaltılır.
Birden Çok Hizmet için Yola Dayalı Yönlendirme
Güçlü bir yaklaşım, ALB path-based routing kullanarak farklı URL yollarını farklı ECS hizmetlerine yönlendirmektir. Tek bir HTTPS dinleyicisine sahip tek bir ALB şu yönlendirmeleri yapabilir: /api/orders/* Orders ECS hizmetine, /api/users/* Users ECS hizmetine, /api/products/* Products ECS hizmetine. Her biri bağımsız ölçeklendirmeye sahip kendi ECS hizmeti tarafından desteklenir. Böylece her mikro hizmet için ayrı yük dengeleyicilere duyulan ihtiyaç ortadan kalkar, maliyet azalır ve DNS yönetimi basitleşir.
# 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"}]'Bağlantıların Boşaltılması ve Kayıt Silme Gecikmesi
Bir ECS görevi sonlandırılırken (yatay küçültme veya dağıtım sırasında) ALB görevi draining olarak işaretler ve devam eden isteklerin tamamlanmasına izin verirken yeni istekleri bu göreve yönlendirmeyi durdurur. deregistration delay (varsayılan olarak 300 saniye, 0-3600 saniye arasında yapılandırılabilir), ALB'nin bağlantıları zorla kapatmadan önce ne kadar bekleyeceğini belirtir. İstek süreleri kısa olan ECS hizmetlerinde, dağıtımları ve yatay küçültme işlemlerini hızlandırmak için daha düşük bir kayıt silme gecikmesi (30-60 saniye) belirleyin. Uzun bağlantılar (WebSocket, dosya yüklemeleri) için daha yüksek bir gecikme kullanın.
# 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 Ölçeklendirmesi için Özel Ölçümler
CPU ve belleğin yanı sıra uygulamanızdan custom CloudWatch metrics (kuyruk derinliği, etkin oturumlar, iş KPI'ları) yayımlayın ve bunları ölçeklendirmeyi yönlendirmek için kullanın. Örneğin her ECS görevi aynı anda 50 kuyruk iletisini işleyebiliyorsa SQS kuyruk derinliğini özel bir ölçüm olarak yayımlayın ve görev başına 50 iletiyi hedefleyen bir hedef izleme politikası oluşturun. Böylece uygulama yüküyle ilişkili olmayabilecek altyapı ölçümlerine güvenmek yerine doğrudan iş mantığına dayalı ölçeklendirme yapılır.
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 ecsGörevler için Yatay Küçültme Koruması
EC2 Auto Scaling'e benzer şekilde ECS, task scale-in protection özelliğini destekler. Çalışan bir görev, kritik bir işi işlerken yatay küçültme sırasında sonlandırılmasını önlemek için ECS API aracılığıyla kendi yatay küçültme koruması işaretini ayarlayabilir. Bu özellik, SQS çalışanı olarak görev yapan ECS görevleri için kullanışlıdır: Uzun bir işi kuyruktan yeni alan çalışan kendisini korumaya alabilir, işi tamamlayabilir ve ardından korumayı kaldırabilir. Bu özellik olmadan yatay küçültme, işlenmekte olan bir görevi sonlandırarak işin yinelenmesine veya veri kaybına neden olabilir.
# 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}'Ölçeklendirme Ölçümleri: CPU ve Bellek ile ALB Karşılaştırması
Ölçeklendirme ölçümünüzü dikkatle seçin. CPU utilisation varsayılan ölçümdür ve işlemciye bağlı iş yüklerinde iyi çalışır. Memory utilisation (ECSServiceAverageMemoryUtilization), belleğe bağlı uygulamalar için kullanışlıdır; ancak belleği artırmak görev eklemeyi gerektirir. Göreviniz eşzamanlı işleme yerine görev başına bellekle sınırlıysa görev tanımındaki bellek ayırmasını düzeltmek daha iyi olabilir. ALBRequestCountPerTarget, kullanıcı deneyimiyle doğrudan ilişkilidir ve web API'leri için en uygulanabilir ölçümdür; gerçek istek hızına, yani görev başına istek sayısına göre ölçeklendirme yapın.
ECS Dağıtım Devre Kesicisi
ECS Deployment Circuit Breaker, başarısız dağıtımları otomatik olarak algılar ve son kararlı sürüme geri döner. Bu özellik olmadan, durum denetimlerinden geçemeyen bir kapsayıcı içeren hatalı bir dağıtım, ECS'nin süresiz olarak yeni görevler başlatmayı denemesine neden olurdu. Devre kesici etkinleştirildiğinde, yeni başlatılan görevlerin belirli bir yüzdesi algılama süresi içinde durum denetimlerinden geçemezse ECS dağıtımı FAILED olarak işaretler ve otomatik olarak önceki görev tanımı revizyonuna geri döner. Bu, hatalı dağıtımların hizmette uzun süreli bozulmaya yol açmasını önler.
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
}'Uçtan Uca Mimari: ECS + ALB + Otomatik Ölçeklendirme
Üretime hazır kapsayıcılı bir web API mimarisinde Route 53, etki alanını bir ALB DNS adına çözümler; ALB HTTPS bağlantısını sonlandırır (ACM sertifikası), WAF kurallarını uygular ve istekleri bir ECS service target group'una yönlendirir; 3 AZ'deki özel alt ağlarda bulunan Fargate görevleri istekleri işler; ECS Service Auto Scaling, ALBRequestCountPerTarget üzerinde hedef izleme kullanarak görev sayısını 2 ile 50 arasında ayarlar; görevler özel alt ağlardaki RDS Aurora ve ElastiCache'e bağlanır. Tüm günlükler CloudWatch Logs'a gönderilir; ölçümler CloudWatch panolarını ve alarmlarını yönlendirir.
Kısa Kontrol
Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: ECS Service Auto Scaling, görev sayısını yapılandırılmış minimum ve maksimum sınırlar arasında ayarlamak için hedef izlemeyle (CPU, ALB istekleri veya özel ölçümler) Application Auto Scaling'i kullanır; ALB path-based routing, URL yollarını farklı hedef gruplarına yönlendirerek tek bir yük dengeleyicinin birden çok ECS mikro hizmetine hizmet vermesini sağlar; Deployment Circuit Breaker ise başarısız dağıtımları uzun süreli hizmet bozulmasına yol açmadan önce otomatik olarak geri alır. Böylece ECS ve kapsayıcılar modülü tamamlanır; sırada AWS üzerinde Kubernetes için Amazon EKS'i inceleyeceğiz.
Sıkça Sorulan Sorular
“ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme” dersi ücretsiz mi?
Evet — “ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AWS Solutions Architect kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AWS Solutions Architect kursu toplamda 4 dersten oluşur.
“ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme” dersinde ne öğreneceğim?
Yola dayalı yönlendirme için ECS hizmetlerine bir ALB bağlayın ve CPU ya da özel CloudWatch ölçümlerine yanıt verecek hizmet otomatik ölçeklendirmesini yapılandırın. AWS Solutions Architect ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AWS Solutions Architect öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AWS Solutions Architect, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AWS Solutions Architect dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AWS Solutions Architect dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- ECS Kümeleri, Görev Tanımları ve Hizmetler
- EC2 Başlatma Türü ve Fargate Karşılaştırması
- ECR: Konteyner İmajlarını Depolama ve Çekme
- ECS Hizmeti Otomatik Ölçeklendirme ve Yük Dengeleme