Amazon ANS-C01: Yük Dengeleme ve Trafik Yönetimi — Çalışma kılavuzu
Şunun bir parçası: AWS Advanced Networking Specialty ANS-C01 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Amazon sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Temel kavram
AWS’te yük dengeleme, iki temel katmanda çalışır: L4 (taşıma) ve L7 (uygulama). Network Load Balancer (NLB), L4 (TCP/UDP/TLS) dağıtımı sağlar ve olağanüstü performans için optimize edilmiştir; istemci kaynak IP’sini korur ve çok düşük gecikme süresi ve bağlantı yıpranması (churn) ile milyonlarca eş zamanlı bağlantıyı destekler. Application Load Balancer (ALB), L7’de (HTTP/HTTPS/WebSocket ve HTTP/2/gRPC) çalışır, ana bilgisayar (host) ve yol (path) tabanlı yönlendirme, başlık (header) denetimi, HTTP tabanlı sağlık kontrolleri ve çerez (cookie) tabanlı kalıcılık (stickiness) sağlar ve ACM’deki sertifikalarla yapılandırıldığında TLS sonlandırması gerçekleştirir. Gateway Load Balancer (GWLB), GENEVE kapsülleme ve Gateway Load Balancer uç noktalarını (GWLBe) kullanarak üçüncü taraf sanal cihazları (güvenlik duvarları, IDS/IPS) ölçeklendirmek için amaca özel oluşturulmuş bir yük dengeleyicidir ve cihazları manuel olarak ölçeklendirmeden hat içi (inline) trafik denetimine olanak tanır.
Dinleyiciler (Listener) ve dinleyici kuralları, protokolleri/portları hedef gruplara eşleyen L4/L7 giriş noktalarıdır. Bir ALB üzerindeki bir dinleyici; ana bilgisayar (host), yol (path), başlıklar (header), kaynak IP CIDR’ını denetleyen ve farklı hedef gruplara yönlendiren karmaşık kurallara sahip olabilir. ALB ayrıca TLS yükünü boşaltabilir (sonlandırabilir) ve hedeflere X-Forwarded-For, X-Forwarded-Proto ve X-Forwarded-Port başlıklarını sunabilir. Bir NLB dinleyicisi, genellikle yükü (payload) ayrıştırmadan (NLB’de TLS sonlandırmasını etkinleştirmediğiniz sürece) trafiği hedef gruplara ileten bir TCP/UDP/TLS dinleyicisidir: TCP geçişi (passthrough) kullandığınızda uçtan uca TLS’yi korursunuz, bu nedenle arka ucun (backend) karşılıklı TLS (mutual TLS) için sertifikaları sunması ve doğrulaması gerekir. Hedef gruplar, bir yük dengeleyici dinleyicisi ile uç noktalar (örnek (instance), IP veya Lambda) kümesi arasındaki bağlantıdır ve sağlık kontrolü protokolü/portu/yolu, kayıt silme gecikmesi (bağlantı boşaltma - connection draining) ve kalıcılık (stickiness) özellikleri gibi nitelikleri (attribute) ortaya çıkarır.
Önemli hizmetler ve yapılandırma
Trafik özelliklerine ve güvenlik gereksinimlerine uygun doğru dengeleyiciyi seçin. Ana bilgisayar/yol tabanlı yönlendirmeye, WebSockets veya HTTP/2/gRPC gibi uygulama farkındalığına sahip yönlendirme gerektiren HTTP/HTTPS özelliklerine ve çerez tabanlı kalıcılığa (stickiness) ihtiyacınız olduğunda ALB kullanın. ALB dinleyicilerini
undefined
veya AWS::ElasticLoadBalancingV2::Listener aracılığıyla yapılandırın, ACM’den sertifikaları ekleyin ve koşullarla (Field=path-pattern, host-header, http-header)
undefined
kullanarak dinleyici kurallarını ayarlayın. Yük dengeleyici tarafından oluşturulan çerezleri kullanmak için ALB hedef gruplarında
undefined
ile Key=stickiness.enabled,Value=true ve Key=stickiness.lb_cookie.duration_seconds,Value=<seconds> ayarlarını yaparak kalıcılığı etkinleştirin.
Yüksek verimli, uzun ömürlü TCP bağlantıları için ve arka uçta istemci kaynak IP’sinin korunması gerektiğinde NLB kullanın.
undefined
ile bir NLB oluşturun ve
undefined
ile bir TCP dinleyicisi ekleyin. Geçişli (passthrough) TLS ve mTLS için, TLS’nin arka uç tarafından sonlandırılması amacıyla NLB dinleyicisini TCP olarak yapılandırın; Kubernetes için pod IP’lerini kaydederken hedef grubu target-type ip olarak ayarlayın. Bağlantıların boşaltılmasına (connection draining) izin vermek için
undefined
kullanarak Key=deregistration_delay.timeout_seconds,Value=<seconds> ayarını yapın; NLB için uygun durumlarda kaynak IP afinitesini (hedef grup kalıcılığı) de etkinleştirebilirsiniz.
Gateway Load Balancer,
undefined
Type=gateway ile yapılandırılır ve cihaz örneklerinizin (veya bir otomatik ölçeklendirme grubundaki ölçek kümesinin) hedef grupları tarafından desteklenir ve trafiği hizmet VPC’sindeki cihazlara yönlendirmek için tüketici VPC’lerinde bir Gateway Load Balancer uç noktası kullanır. Şeffaf denetime ihtiyacınız olduğunda ve cihazların trafikle birlikte otomatik olarak ölçeklenmesini istediğinizde bu modeli kullanın; 6081 numaralı portta (GENEVE kapsülleme) dinleyiciler oluşturun ve cihaz ENI’lerini GWLB hedef grubuna kaydedin.
Programatik olarak kontrol etmeniz gereken operasyonel ayarlar arasında bölgeler arası (cross-zone) yük dengeleme, kayıt silme gecikmesi (bağlantı boşaltma) ve sağlık kontrolü ayarları bulunur. Bölgeler arası dengeleme için, trafiğin AZ başına kapasiteye göre çarpık dağılması yerine tüm AZ’lere dağıtılmasını sağlamak amacıyla yük dengeleyicideki nitelikleri (
undefined
) ayarlayın. Otomatik ölçeklendirme olayları sırasında kararsızlığı (flapping) önlemek için hedef gruplarda sağlık kontrolü aralığını, zaman aşımını ve sağlıklı/sağlıksız eşiklerini ayarlayın.
Tasarım desenleri ve ödünleşimler
Trafiğin şifreli kalması ve istemci sertifikalarının arka uca (backend) sunulması gereken uçtan uca TLS ve karşılıklı TLS (mTLS) için, TCP dinleyicileri (listener) olan NLB kullanarak L4 geçişini (passthrough) tercih edin. Bu, TLS oturumunu bozulmadan korur, böylece arka uçlar istemci X.509 sertifikalarını doğrulayabilir; hedef gruplarını (target group) IP hedeflerini kullanacak şekilde yapılandırın, böylece Kubernetes pod IP’leri doğrudan kaydedilebilir ve AWS Load Balancer Controller hedef yaşam döngüsünü yönetebilir. Bunun ödünleşimi, yük dengeleyici katmanında ana bilgisayar/yol tabanlı yönlendirme (host/path routing), Web Application Firewall entegrasyonları ve yerel HTTP çerez yapışkanlığı (cookie stickiness) gibi ALB L7 özelliklerini kaybetmektir.
İçerik tabanlı yönlendirme, TLS sonlandırma ve gelişmiş HTTP özelliklerine ihtiyacınız olduğunda, ALB kullanın ve TLS’i ALB’de sonlandırın (ACM tarafından yönetilen sertifikalarla). Günlüğe kaydetme (logging) ve WAF kuralları için istemci IP’sini korumak amacıyla, ALB’nin doldurduğu X-Forwarded-For başlığını okuyun veya orijinal istemci IP’sini başlıklara enjekte eden bir katman kullanın. Arka uç işletim sistemi/ağ yığınının (OS/network stack) istemci IP’sini soket seviyesinde görmesi gerekiyorsa, NLB kullanın (veya orijinal IP’yi iletmek için Proxy Protocol’ü etkinleştirin), ancak Proxy Protocol’ün hedef grubunda etkinleştirilmesi ve uygulamanızın veya proxy’nizin (örneğin, Envoy) bunu ayrıştırması (parse) gerektiğini unutmayın.
Otomatik ölçeklenen (autoscaling) bir ortamda yapışkan oturumları (sticky sessions) yönetmek dikkatli bir değerlendirme gerektirir. ALB çerez yapışkanlığı, bir istemciyi bir süre boyunca bir hedefe bağlayabilir; bu durum, oturum trafiği yoğunsa pod’lar arasında dengeli ölçeklenmeyi engelleyebilir. Alternatif desenler arasında, oturum durumunu ElastiCache (Redis) veya DynamoDB’ye dışsallaştırma ile birleştirilmiş kısa süreli yapışkanlık kullanmak veya tutarlı hash (consistent hashing) ile oturum benzeşimini (session affinity) yönetmek için bir sidecar proxy (Envoy) kullanmak yer alır. Bağlantı boşaltma (connection draining) (kayıt silme gecikmesi - deregistration delay), sorunsuz kapatma (graceful shutdown) için kritik öneme sahiptir: pod sonlandırması sırasında ani kesintileri ve istemci hatalarını önlemek için deregistration_delay.timeout_seconds değerini en uzun RPC/HTTP isteğinden daha uzun bir süreye ayarlayın; pod yaşam döngüsünü kayıt silme ile koordine etmek için Kubernetes preStop kancalarını (hook) yapılandırın.
Çok sayıda VPC genelinde ölçeklenebilir satır içi denetime (inline inspection) ihtiyacınız olduğunda ve merkezi güvenlik kontrolleri istediğinizde GWLB uygun desendir. Gerektiğinde GWLB’yi Transit Gateway veya VPC peering mimarileriyle birleştirin; cihaz yönetiminin maliyeti ve operasyonel karmaşıklığı, AWS Network Firewall gibi yönetilen hizmetleri kullanmaya kıyasla ödünleşimlerdir.
Sık karşılaşılan tuzaklar ve karar kriterleri
Sık yapılan bir hata, istemci kimlik doğrulaması veya orijinal kaynak IP’si gibi alt sistem (downstream) ihtiyaçlarını hesaba katmadan TLS’i ALB’de sonlandırmaktır. Arka uç (backend) sistemler, istemci sertifikasını veya TCP katmanındaki gerçek kaynak IP’sini (loglama veya yetkilendirme için) gerektiriyorsa, TLS’i NLB passthrough aracılığıyla arka uçta sonlandırın veya Proxy Protocol kullanıp uygulamanın bunu ayrıştırdığından (parse) emin olun. Diğer bir yaygın tuzak, Horizontal Pod Autoscaler kullanırken harici bir oturum depolama alanı olmadan yapışkan oturumları (sticky sessions) etkinleştirmektir: pod’lar yatay olarak genişledikçe veya daraldıkça, yapışkanlık (sticky affinity) etkin noktalara (hotspots) ve kapasite israfına neden olabilir; durumsuz (stateless) arka uçları tercih edin veya oturum durumunu harici bir servise taşıyın.
Operasyonel hatalar ayrıca, ölçeklendirme sırasında isteklerin düşmesine yol açan yanlış yapılandırılmış sağlık kontrolleri (health checks) ve kayıt silme gecikmelerinden (deregistration delays) kaynaklanır. Uygulamanın ısınma (warm-up) süresini yansıtacak şekilde sağlık kontrolü yollarını ve eşiklerini daima ayarlayın ve uzun ömürlü bağlantıların boşalmasına (drain) izin vermek için deregistration_delay.timeout_seconds kullanın. Bölgeler arası yük dengeleme (cross-zone load balancing) bilinçli olarak ayarlanmalıdır: etkinleştirmek kuyruk gecikmesini (tail latency) azaltır ve yükü eşitler, ancak AZ’ler arası veri transferi maliyetlerini artırabilir; AZ kapasitesi ve trafik modellerine göre değerlendirin. Son olarak, GWLB kapsülleme (GENEVE) ve cihaz (appliance) yönetimi ek yükü getirir—AWS API’lerini (CreateTargetGroup/RegisterTargets) kullanarak cihaz kaydını otomatikleştirin ve otomatik ölçeklendirme politikalarını yönlendirmek için CloudWatch metrikleri ile izleyin.
Pratik Problem: Kullanım Senaryosu
Şirket: Acme Telemetry. Zorluk: Bir Amazon EKS kümesinde dağıtılan bir gRPC hizmeti (TCP port 443 üzerinde TLS ile gRPC) için uçtan uca şifreleme sağlamak, binlerce eş zamanlı uzun ömürlü bağlantıyı desteklemek, Kubernetes Cluster Autoscaler ve HPA kullanmak ve istemci sertifikasının arka uç tarafından doğrulanması için karşılıklı TLS (mTLS) gerektirmek (yani, trafiğin şifresi herhangi bir ara yük dengeleyici tarafından çözülmemelidir).
- Kullanım senaryosu uygulama yaklaşımı: 443 numaralı bağlantı noktasında bir TCP dinleyicisi (listener) olan ve pod IP’lerini gösteren “ip” türünde bir hedef grubu (target group) olan bir Network Load Balancer sağlayın. NLB’yi
undefined
komutuyla oluşturun, hedef grubunu
undefined
komutuyla oluşturun, denetleyicinin (controller) pod IP’lerini otomatik olarak kaydetmesi için hedefleri Kubernetes için AWS Load Balancer Controller ek açıklamaları (annotations) (service.beta.kubernetes.io/aws-load-balancer-type: “nlb-ip”) aracılığıyla kaydedin ve dinleyiciyi
undefined
komutuyla oluşturun. Bağlantıların düzgün bir şekilde boşaltılmasını (graceful draining) sağlamak için aws elbv2 modify-target-group-attributes kullanarak hedef grubu özniteliği olan deregistration_delay.timeout_seconds’ı uygun bir değere (örneğin 300) ayarlayın.
Arka uç TLS ve mTLS yapılandırması: TLS’i sonlandırın ve karşılıklı TLS’i pod katmanında gerçekleştirin. Envoy sepetlerini (sidecars) dağıtın veya gRPC sunucularının doğrudan TLS kabul etmesini sağlayın, sunucu sertifikalarını ve CA paketlerini Kubernetes Secrets’ta saklayıp pod’a bağlayın (mount). Arka uçları, istemci sertifikalarını CA’nıza göre doğrulamak üzere yapılandırın ve yük dengeleyicide TLS sonlandırmasını önlemek için sağlık kontrollerini TCP kullanacak şekilde ayarlayın. Pod’ların çıkış yapmadan önce boşaltma işlemini tamamlamasına olanak tanıyan preStop kancaları (hooks) uygulayarak HPA ve Cluster Autoscaler yaşam döngüsü kancalarının hedef grubu kaydının silinmesiyle (deregistration) koordine olmasını sağlayın.
Ölçeklenebilirlik ve operasyonel kontroller: Bağlantıları AZ’ler arasında eşit olarak dağıtmak için gerekirse NLB üzerinde bölgeler arası yük dengelemeyi
undefined
komutuyla etkinleştirin. CloudWatch metrikleri (NLB için NetworkPackets, ActiveFlowCount) ile eş zamanlı bağlantıları ve akış hızlarını izleyin ve cihaz (sepet kullanılıyorsa) ile işçi düğümleri (worker nodes) için otomatik ölçeklendirme politikaları belirleyin. Bağlantı boşaltma için ModifyTargetGroupAttributes kullanın ve kararsızlık (flapping) olmadan daha hızlı hata tespiti için sağlık kontrolü aralıklarını ayarlayın. Son olarak, AWS Secrets Manager ve Kubernetes cert-manager entegrasyonunu kullanarak sertifika rotasyonunu otomatikleştirin.
AWS gerekçesi: TCP modundaki NLB, TLS oturumunu uçtan uca korur, böylece arka uç mTLS doğrulaması yapabilir; L4 mimarisi milyonlarca eş zamanlı akış ve uzun ömürlü bağlantılar için tasarlanmıştır ve target-type ip kullanmak, AWS Load Balancer Controller’ın pod IP’lerini doğrudan kaydetmesine olanak tanıyarak HPA/Cluster Autoscaler’ın şeffaf bir şekilde ölçeklenmesini sağlar. Bağlantı boşaltma (deregistration_delay) ve sağlık kontrolleri, pod sonlandırılması sırasında istek kaybını önler ve bölgeler arası dengeleme, performans karşılığında AZ’ler arası transfer maliyetinden ödün verirken AZ’ler arasında eşit dağılım sağlar.
← DNS ve Route 53 · Tüm alanlar · Ağ Güvenliği ve Uyumluluk →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →