Alibaba Cloud Service Mesh (ASM) ağ geçidi, hizmet ağınızın kenarındaki giriş ve çıkış trafiğini yöneten Istio'nun temel bir bileşenidir. Üretim ortamlarında, optimize edilmemiş ağ geçitleri her ağ atlama noktasında gecikme süresine neden olur ve ölçeklendirme olayları veya bölgesel kesintiler sırasında tek bir hata noktası haline gelebilir. Bu konu, gecikme süresini azaltmak ve kesinti sürelerini ortadan kaldırmak için Domain Name System (DNS) çözümlemesinden yük dengelemeye ve ağ geçidi pod'larına kadar trafik yolundaki her segmentin nasıl optimize edileceğini açıklar.
Trafik yolu ve optimizasyon hedefleri
Bir ASM ağ geçidi oluşturduğunuzda, ASM Container Service for Kubernetes (ACK) kümenizin istio-system ad alanında bir istio-ingressgateway Dağıtımı dağıtır. Bir Classic Load Balancer (CLB) örneği otomatik olarak bu Dağıtımla ilişkilendirilir ve ağ geçidi pod'ları CLB örneğinin arka uç sunucuları olarak hizmet verir.

Bir hizmet isteği bu bileşenlerin her birinden geçer:

Bu yolun her segmenti -- DNS çözümlemesi, yük dengeleme, ağ iletimi ve Transport Layer Security (TLS) sonlandırması -- gecikme süresini ve kullanılabilirliği etkiler. Aşağıdaki bölümlerde bunların her biri nasıl optimize edilir anlatılmaktadır.
Gecikme süresini azaltın
Yakın erişim için birden çok bölgede dağıtım yapın
ASM, birden çok bölgedeki ACK kümelerini yöneterek istemcilerin istekleri uzun mesafeler üzerinden yönlendirmek yerine en yakın kümeye bağlanmasını sağlar. Akıllı DNS çözümlemesi, her etki alanı adını istemciye en yakın olan CLB örneğinin IP adresine eşler. Bu yaklaşım gidiş-dönüş süresini azaltır ve trafiği coğrafi olarak dağıtır.
Bölge arası yük dengeleme de desteklenir. Bir bölge aşırı yüklendiğinde trafik otomatik olarak daha sağlıklı bölgelere kaydırılır. Ayrıntılar için bkz. ASM kullanarak bölge arası olağanüstü durum kurtarma ve yük dengeleme uygulama.
Doğrudan pod iletimi için Terway CNI eklentisini seçin
ACK kümenizdeki Container Network Interface (CNI) eklentisi, CLB örneğinin trafiği ağ geçidi pod'larına nasıl ileteceğini belirler:
| CNI eklentisi | Trafik yolu | Gecikme süresi etkisi |
|---|---|---|
| Terway (önerilen) | CLB, trafiği doğrudan ağ geçidi pod'larına iletir | Daha düşük gecikme süresi -- NodePort üzerinden ek atlama noktasını atlar |
| Flannel | CLB, NodePort Hizmetine iletir, ardından NodePort ağ geçidi pod'larına yönlendirir | Daha yüksek gecikme süresi -- ek bir ağ atlama noktası ekler |
Üretim iş yükleri için Terway CNI eklentisini kullanın. Doğrudan pod iletimi, NodePort tabanlı yönlendirmenin ek yükünü ortadan kaldırır. Ayrıntılı bir karşılaştırma için bkz. Terway ve Flannel.
Birden çok CLB örneği ile ölçeklendirin
Tek bir CLB örneği ağ geçidinizin trafik hacmini karşılayamadığında, aynı ağ geçidiyle birden çok CLB örneği ilişkilendirin. Her örnek, trafiği ağ geçidi pod'larına bağımsız olarak dağıtarak toplam aktarım hızını artırır.
Bkz. Birden çok CLB örneği kullanarak bir ASM ağ geçidine erişme.
TLS hızlandırmayı etkinleştirin
Ticari sürümdeki ASM ağ geçitleri, Intel Multi-Buffer teknolojisi tarafından desteklenen TLS hızlandırmayı destekler. Kıyaslama testlerinde, bu özelliğin etkinleştirilmesi saniye başına sorgu sayısını (QPS) %80 oranında artırdı.
Not: %80'lik QPS iyileştirmesi Alibaba Cloud dahili kıyaslamalarında ölçülmüştür. Gerçek kazançlar iş yükü özelliklerinize, sertifika anahtar boyutlarınıza ve donanım yapılandırmanıza bağlıdır.
Kesinti sürelerini ortadan kaldırın
Coğrafi olağanüstü durum kurtarma kurulumu
ACK kümelerini aktif coğrafi yedeklilik ile birden çok bölgede dağıtın. Tüm bir bölge çevrimdışı duruma gelirse trafik otomatik olarak diğer bölgelerdeki kümelere yük devreder. Akıllı DNS çözümlemesi ile birleştiğinde bu yaklaşım, manuel müdahale olmadan bölge düzeyinde olağanüstü durum kurtarma sağlar.
Bkz. ASM kullanarak bölge arası olağanüstü durum kurtarma ve yük dengeleme uygulama.
CLB yedekliliği ekleyin
Tek bir ASM ağ geçidiyle birden çok CLB örneği ilişkilendirin; böylece bir örnek başarısız olursa diğerleri trafiği sunmaya devam eder. Bu yaklaşım, yük dengeleyiciyi tek bir hata noktası olmaktan çıkarır.
Bkz. Birden çok CLB örneği kullanarak bir ASM ağ geçidine erişme.
Ağ geçidi pod'larını düğümler ve alanlar arasında dağıtın
Düğüm veya alan düzeyindeki kesintilere karşı koruma sağlamak için ağ geçidi pod'larını farklı düğümler ve kullanılabilirlik alanlarına yayın. Yerleşimi kontrol etmek için pod anti-affinity kuralları ve topoloji yayılım kısıtlamalarını kullanın.
Aşağıdaki örnek, ağ geçidi pod'larını kullanılabilirlik alanları arasında eşit şekilde dağıtan bir topoloji yayılım kısıtlamasını göstermektedir:
apiVersion: apps/v1
kind: Deployment
metadata:
name: istio-ingressgateway
namespace: istio-system
spec:
template:
spec:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
istio: ingressgateway
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchLabels:
istio: ingressgateway
topologyKey: kubernetes.io/hostname
Tam yapılandırma yordamı için bkz. Bir ASM örneğinin giriş ağ geçidi hizmeti için kullanılabilirliği iyileştirme.
Hizmetler için zarif kapatmayı etkinleştirin
Pod sonlandırılmadan önce devam eden istekleri boşaltmak için hizmet pod'larında bir pre-stop hook yapılandırın. Zarif kapatma olmadan, ölçeklendirme olayları ve rolling updates sırasında aktif istekler başarısız olur veya düşer.
CLB örneğinde bağlantı boşaltmayı etkinleştirin
ASM ağ geçidi içeri veya dışarı ölçeklendiğinde, devam eden isteklerin tamamlanmasına izin vermek için CLB örneğindeki mevcut bağlantılar yapılandırılabilir bir süre boyunca korunmalıdır. Pod geçişleri sırasında trafik kaybını önlemek için CLB örneğinde bağlantı boşaltmayı etkinleştirin.
Bkz. Trafik kaybını önlemek için zarif kapatmayı etkinleştirme.
Üretim hazırlık kontrol listesi
Canlıya geçmeden önce aşağıdaki yapılandırmaları tamamladığınızı doğrulayın. Yukarıda ele alınan performans ve kullanılabilirlik öğelerinin yanı sıra, ölçeklendirmeyi ve kesintileri sorunsuz bir şekilde yönetmek için ağ geçidi Dağıtımınızda HorizontalPodAutoscaler, PodDisruptionBudget ve kaynak istekleri/sınırları da yapılandırın.
Performans
| Yapılandırma | Durum | Notlar |
|---|---|---|
| Akıllı DNS ile çok bölgeli dağıtım | Coğrafi olarak dağıtılmış kullanıcılar için gerekli | İstemci-ağ geçidi gecikme süresini azaltır |
| Doğrudan pod iletimi için Terway CNI eklentisi | Tüm üretim kümeleri için önerilir | NodePort atlama noktasını ortadan kaldırır |
| Birden çok CLB örneği | Trafik tek örnek kapasitesini aştığında gerekli | Toplam aktarım hızını artırır |
| TLS hızlandırma (Intel Multi-Buffer) | Ticari sürümde önerilir | QPS'de %80'e kadar iyileştirme |
Kullanılabilirlik
| Yapılandırma | Durum | Notlar |
|---|---|---|
| Bölgeler arasında aktif coğrafi yedeklilik | Bölge düzeyinde olağanüstü durum kurtarma için gerekli | Akıllı DNS ile otomatik yük devretme |
| Birden çok CLB örneği | Yük dengeleyici SPOF'u ortadan kaldırmak için gerekli | CLB düzeyinde yedeklilik sağlar |
| Pod anti-affinity ve topoloji yayılım kısıtlamaları | Gerekli | Pod'ları düğümler ve alanlar arasında dağıtır |
| Hizmet pod'larında pre-stop hook'ları | Gerekli | Sonlandırmadan önce devam eden istekleri boşaltır |
| CLB örneklerinde bağlantı boşaltma | Gerekli | Ölçeklendirme sırasında trafik kaybını önler |
Ağ geçidi Dağıtımında HorizontalPodAutoscaler |
Önerilir | Yüke göre ağ geçidi pod'larını otomatik olarak ölçeklendirir |
Ağ geçidi Dağıtımında PodDisruptionBudget |
Önerilir | İsteğe bağlı kesintilerin çok fazla pod'u kaldırmasını önler |
| Kaynak istekleri ve sınırları | Önerilir | Kaynak çekişmesini ve OOM kill işlemlerini önler |