Bir vService'i geniş bir port aralığında (ör. 4000-5000) dinletebilir miyim?
Kısa cevap
Evet. HTTP ve L7 TCP vService'te frontend Port alanına doğrudan aralık yazılır (ör. 4000-5000); vService bütün özellikleriyle çalışmaya devam eder ve Kurum Servisi istemcinin geldiği portla karşılanacaksa Use Frontend Port açılır. Network vService'te önce Port Range anahtarı açılır, sonra aralık yazılır. Network'teki port aralığının kısıtları vardır: yalnızca Round-Robin / Weighted Round-Robin çalışır, LB Mode uygulanmaz, health check sonucu dağıtıma yansımaz ve Kurum Servisine istemcinin geldiği portla bağlanılır.
Sorun: Uygulama Neden Port Aralığı Kullanır?
Bazı uygulamalar tek bir port yerine bir port aralığında çalışır: pasif FTP veri portları, SIP ile birlikte gelen RTP ses akışları, oyun ve medya sunucuları gibi. Her port için ayrı bir frontend satırı açmak pratik değildir. Aralığın nasıl tanımlanacağı ve hangi özelliklerin korunacağı vService türüne göre değişir.
Çözüm: İki Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| TCP uygulaması; TLS, kurallar, health check ve bütün algoritmalar kullanılsın | Yöntem 1: HTTP / L7 TCP vService'te aralık |
| UDP ya da L3/L4 düzeyinde dağıtım gerekiyor | Yöntem 2: Network vService'te Port range |
Yöntem 1: HTTP / L7 TCP vService'te Aralık Önerilen
- Nasıl çalışır vService aralıktaki bütün portları dinler; trafik diğer vService'lerdeki gibi işlenir.
- Nerede açılır vService → Frontend → Port:
4000-5000(HTTP, L7 TCP) - Gereksinim TCP trafiği
- vService tipi HTTP, L7 TCP
- Kurum Servisi tarafı Sunucu da aynı portları dinliyorsa Kurum Servisinde Use Frontend Port açılır; açılmazsa bütün bağlantılar Kurum Servisinin Address'teki tek portuna gider.
Adım adım yapılandırma
Load Balancer → Backend Services ekranında Kurum Servisi seçilip Edit butonuna tıklanır (yoksa Add ile oluşturulur).
Sunucu istemcinin geldiği portla karşılanacaksa formun Details bölümünde Use Frontend Port açılır.
Formun altındaki Edit (yeni kayıtta Add) butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP ya da L7 TCP vService seçilip Edit butonuna tıklanır; yeni vService için Add ile form açılır.
Frontend satırının Port alanına aralık başlangıç-bitiş biçiminde yazılır (ör. 4000-5000). Başlangıç bitişten küçük olmalıdır; virgüllü liste kabul edilmez. Birden fazla aralık için ayrı satırlar eklenir.
Default Backend Services tablosunda 1–3. adımlarda hazırlanan Kurum Servisi seçilir.
Save butonuna tıklanır. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da aktarılır; Manual Sync Mode açıksa Synchronize ile elle gönderilir.
Doğrulama
nc -vz 203.0.113.30 4500Connection to 203.0.113.30 4500 port [tcp/*] succeeded!Yöntem 2: Network vService'te Port Range
- Nasıl çalışır Aralığa gelen paketlerin hedef adresi Kurum Servisine çevrilir; hedef port korunur. Dağıtım yalnızca Round-Robin / Weighted Round-Robin ile yapılır ve trafik TR7 üzerinden yönlendirilir.
- Nerede açılır vService → Type: Network → Port Range anahtarı → Frontend Port:
4000-5000 - Gereksinim Kurum Servisinin aynı portları dinlemesi
- vService tipi Network (TCP - L4, UDP - L4)
- Kurum Servisi tarafı Sunucu istemcinin hedef portunda dinler. SNAT IP seçilmediyse sunucuların dönüş trafiği TR7'den geçmelidir (sunucunun gateway'i TR7).
Adım adım yapılandırma
Load Balancer → Backend Services ekranında Add butonuna tıklanır (Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?).
Backend Service Name ve Address girilir, Route Table olarak vService'in route tablosu seçilir. Address'teki port bu yöntemde kullanılmaz.
Formun altındaki Add butonuna tıklanır. Her sunucu için 1–3. adımlar tekrarlanır.
Load Balancer → Load Balancer vService List → Add adımları izlenir; Name girilir ve Type olarak Network seçilir.
Protocol olarak TCP - L4 ya da UDP - L4 seçilir ve Port Range anahtarı açılır (varsayılan kapalı). Protocol ANY - L3 iken Port range gizlenir.
Frontend satırının Port alanına aralık yazılır. Anahtar kapalıyken aralık girilirse Invalid port hatası görünür. IP listede yoksa önce Network → Interfaces → Actions → Add IP ile eklenir (Frontend IP'sini neden elle yazamıyorum; listede olmayan bir IP'yi (ör. IPv6) vService'te kullanmak için ne yapmalıyım?).
Default Backend Services tablosunda 1–3. adımlarda eklenen Kurum Servisleri seçilir. Dönüş trafiği TR7'den geçmiyorsa LB Mode alanında SNAT seçilip SNAT IP belirlenir; Port range açıkken LB mode'dan yalnızca SNAT IP'nin kaynak adres olarak kullanılması uygulanır.
Formun sağ üstündeki Details anahtarı açılır; LB Algorithm kutusunda Round-Robin ya da Weighted Round-Robin seçilir. Bu modda başka bir algoritma seçilse de Round-Robin uygulanır.
Save butonuna tıklanır. Network vService'te her kayıt vService'i yeniden başlatır; değişiklik düşük trafikli bir zamanda yapılır. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da aktarılır.
Doğrulama
tcpdump -n port 4500 · istemcide nc -vz 203.0.113.30 4500Paket Kurum Servisine 4500 portuyla ulaşırSık Yapılan Hatalar
- Network'te health check'e güvenmek. Port range açıkken health check sonucu dağıtıma yansımaz; arızalı Kurum Servisi paket almaya devam eder.
- Network'te farklı bir Kurum Servisi portu beklemek. Port range'de Kurum Servisine her zaman istemcinin geldiği portla bağlanılır; Address'teki port kullanılmaz.
- Network'te LB mode'a güvenmek. Port range açıkken Direct Server Return ve Route Mode uygulanmaz; trafik TR7 üzerinden yönlendirilir ve yalnızca SNAT IP seçilmişse kaynak adres çevrilir.
- HTTP/3 ile birlikte kullanmak. HTTP vService'te port aralığı girilen satırda
alt-svcbaşlığı eklenmez; HTTP/3'e geçiş olmaz.
Dokümantasyonda nasıl yapılır
