Kurum Servisi portu frontend portundan farklı olabilir mi (443'e gelen isteği 8080'e göndermek)?
Kısa cevap
Evet; bu TR7'nin varsayılan davranışıdır. HTTP ve L7 TCP vService istekleri kendi portunda karşılar, Kurum Servisine ise Address alanındaki porttan bağlanır. 443'e gelen isteği 8080'e göndermek için Kurum Servisinin portu 8080 yazılır ve Use Frontend Port kapalı bırakılır (varsayılan); 8080 düz HTTP ise vService TLS'i 443'te sonlandırır, Kurum Servisinde SSL Service kapalı kalır. Network vService'te Port Range açıksa, Protocol ANY - L3 ise ya da LB Mode Direct Server Return ise port çevrilmez.
Sorun: Uygulama Standart Olmayan Portta Çalışıyor
Uygulama sunucuları çoğu zaman 8080, 8443, 3000 gibi portlarda çalışır; kullanıcıların ise standart portlardan (80/443) erişmesi istenir. Port çevirisini sunucuda yapmak yerine TR7'nin istekleri standart portta karşılayıp sunucunun kendi portuna iletmesi gerekir.
Çözüm: Üç Yöntem
Port, tekil Kurum Servisinde ve Backend Group satırında aynı alandadır; komut satırında da aynı alan yazılır.
| Durumunuz | Uygun yöntem |
|---|---|
| Tekil Kurum Servisi kullanıyorum | Yöntem 1: Backend Services formu |
| Backend Group kullanıyorum (satırlar farklı portlarda olabilir) | Yöntem 2: Backend Group satırı |
| Komut satırından yapmak istiyorum | Yöntem 3: WEB-CLI |
Yöntem 1: Backend Services Formu Önerilen
- Nasıl çalışır TR7 Kurum Servisine Address alanındaki porttan bağlanır; vService'in portu yalnızca istemci tarafıdır.
- Nerede açılırLoad Balancer → Backend Services → Add ya da Edit → Address
- Gereksinim Use Frontend Port kapalı (varsayılan)
- vService tipi HTTP ve L7 TCP; Network vService'te istisnalar vardır
Adım adım yapılandırma
Load Balancer → Backend Services ekranında Kurum Servisi seçilip Edit tıklanır; yeni kayıt için Add kullanılır.
Address alanının port kısmına 8080 yazılır.
Details anahtarı açılır; Use Frontend Port kapalı olmalıdır (varsayılan değeri kapalıdır). Açıksa Address alanındaki port yok sayılır ve bağlantı isteğin geldiği porta yapılır.
8080 düz HTTP ise SSL Service kapalı kalır. Sunucu 8443 gibi bir portta TLS bekliyorsa SSL Service açılır.
Formun altındaki Edit (yeni kayıtta Add) butonuna tıklanır. Kurum Servisi 443'teki vService'te zaten kullanılıyorsa yapılandırma bu adımla tamamlanır.
Kurum Servisi 443'teki vService'in Default Backend Services listesinde değilse Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır ve Kurum Servisi listeye eklenir.
Formun altındaki Save butonuna tıklanır. Clustering açıkken ve Manual Sync Mode kapalıyken (varsayılan) değişiklik eş cihaza otomatik aktarılır.
Doğrulama
İstemciden vService adresine istek gönderilir.
curl -vk https://192.0.2.80/Uygulamanın yanıtı (200)Sunucuda 8080'e gelen bağlantıya bakılır; TR7'de Backend Services listesinin Address kolonu IP : 8080 gösterir.
tcpdump -ni any port 8080TR7'den 8080'e bağlantıYöntem 2: Backend Group Satırı
- Nasıl çalışır Grubun her satırının kendi portu vardır; satırlar farklı portlarda olabilir.
- Nerede açılırLoad Balancer → Backend Groups → Add ya da Edit → Backends
- Gereksinim Grupta Use Frontend Port kapalı (varsayılan)
- vService tipi HTTP ve L7 TCP; Network vService'te istisnalar vardır
Adım adım yapılandırma
Load Balancer → Backend Groups ekranında grup seçilip Edit tıklanır.
Backends tablosunda her satırın port kısmına 8080 yazılır; yeni satırın portu 80 olarak gelir. Grubun Details bölümündeki Use Frontend Port kapalı kalır.
Formun altındaki Edit butonuna tıklanır.
Doğrulama
Backend Groups listesinde Show Backend Services anahtarı açılır.
Her satırda IP : 8080 · Health: OKYöntem 3: WEB-CLI
- Nasıl çalışır Tekil Kurum Servisinde port
addr.port, grup satırında--servers.N.addr.portalanıyla verilir. - Nerede açılır TR7 WEB-CLI →
lb backendvelb backend-group - Gereksinim WEB-CLI erişimi
- vService tipi HTTP ve L7 TCP
Adım adım yapılandırma
Zorunlu alanlar öneksiz ve sırasıyla yazılır; v-device için Host, namespace için 1 (DEFAULT route table) varsayılan değerlerdir:
lb backend add name app-1 v-device Host namespace 1 addr.ip 192.0.2.21 addr.port 8080<kimlik> yerine Kurum Servisinin kimliği yazılır (Tab listeler, lb backend list çıktısında da görünür):
lb backend update id <kimlik> --addr.port 8080Yeni grupta sunucular --servers.N alanlarıyla 0'dan başlayarak yazılır:
lb backend-group add name app-grp v-device Host namespace 1 --servers.0.addr.ip 192.0.2.21 --servers.0.addr.port 8080Mevcut grupta bir satırın portu lb backend-group update id <kimlik> --servers.0.addr.port 8080 ile değiştirilir; .0 gruptaki ilk satırı gösterir ve yalnızca o satırın portu değişir. Satır sırası lb backend-group show <kimlik> çıktısından görülür.
Doğrulama
lb backend show <kimlik> çıktısında port alanına bakılır.
Port 8080Network vService İstisnaları
- Port Range açıksa ya da Protocol ANY - L3 ise Kurum Servisine istemcinin geldiği hedef port kullanılır; Address alanındaki port uygulanmaz.
- LB Mode Direct Server Return ise port çevrilmez; sunucu vService'in portunda dinlemelidir.
- Route Mode ve SNAT modlarında (Port Range kapalıyken) port çevrilir; Kurum Servisinin portu kullanılır.
Sık Yapılan Hatalar
- Use Frontend Port'u açık bırakmak. Kurum Servisindeki 8080 yok sayılır, bağlantı isteğin geldiği 443'e yapılır.
- Sunucu düz HTTP konuşurken SSL Service'i açmak. TR7 8080'e TLS ile bağlanmaya çalışır ve bağlantı kurulamaz.
- Health check'i ayrı bir porta yönlendirmeyi unutmak. Health check varsayılan olarak Kurum Servisinin adres ve portunu (8080) yoklar; uygulamanın sağlık ucu başka portta ise Details altında Use Different IP for Health Check → Different Address seçilip IP ve port girilir.
Dokümantasyonda nasıl yapılır
