Direct Server Return (DSR) nedir; sunucu tarafında ne hazırlık gerekir?
Kısa cevap
Direct Server Return (DSR), Network vService'in varsayılan LB Mode'udur: istek TR7 üzerinden sunucuya gider, sunucu yanıtı TR7'yi atlayarak doğrudan istemciye gönderir; istemci IP'si korunur ve dönüş trafiği TR7'den geçmez. Sunucular TR7 ile aynı L2 ağda olmalı, vService adresini yerel adres olarak taşımalı ama bu adres için ARP'ye yanıt vermemeli ve hizmeti vService'in portunda sunmalıdır; port çevrilmez. Yalnızca Port Range kapalı TCP - L4 ve UDP - L4 vService'lerde uygulanır.
Nasıl Çalışır?
- İstemci vService adresine (VIP, ör.
192.0.2.100) bağlanır; TR7 algoritmaya göre sunucuyu seçer. - TR7 paketi hedef IP'sini ve portunu değiştirmeden, yalnızca L2'de sunucunun MAC adresine yönlendirerek iletir.
- Sunucu paketi kendi yerel VIP adresine gelmiş gibi kabul eder.
- Sunucu yanıtı kaynak adresi VIP olacak şekilde doğrudan istemciye (kendi default gateway'i üzerinden) gönderir; yanıt TR7'den geçmez.
| Direct Server Return | Route Mode | SNAT | |
|---|---|---|---|
| Sunucunun gördüğü kaynak | İstemcinin IP'si | İstemcinin IP'si | vService'teki SNAT IP |
| Yanıt yolu | Sunucu → istemci (TR7 yok) | Sunucu → TR7 → istemci | Sunucu → TR7 → istemci |
| Aynı L2 ağ | Gerekir | Gerekmez | Gerekmez |
| Port çevirisi | Yok | Var | Var |
Sunucu Hazırlığı
TR7 sunucuların yapılandırmasını denetlemez; hazırlık sunucu tarafında yapılır. Hazırlık yapılmazsa paketler yanıtsız kalır. Linux için yaygın yapılandırma (örnekte VIP 192.0.2.100):
text
ip addr add 192.0.2.100/32 dev lo
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2- VIP, loopback arayüzüne /32 olarak eklenir; sunucu VIP'e gelen paketleri kabul eder.
arp_ignore=1sunucunun yalnızca gelen arayüzde tanımlı adresler için ARP yanıtı vermesini,arp_announce=2ARP isteklerinde en uygun yerel adresin kullanılmasını sağlar; böylece sunucu VIP için ARP yanıtı vermez (Linux ip-sysctl). Ayarlar kalıcı olması için sysctl yapılandırma dosyasına da yazılır.- Hizmet VIP:port üzerinde (ya da bütün adreslerde) dinlemelidir.
- TR7'nin health check sunucunun kendi adresine (Kurum Servisinin Address alanı) gider; hizmet bu adreste de yanıt vermelidir, aksi hâlde Use Different IP for Health Check ile uygun bir adres denetlenir.
TR7'de
- Yer: Load Balancer → Load Balancer vService List → Network vService → Edit → LB Mode → Direct Server Return (yeni Network vService'te varsayılan).
- Kapsam: TCP - L4 ve UDP - L4 protokollerinde, Port range kapalıyken uygulanır. Protocol ANY - L3 ya da Port range açıkken LB mode uygulanmaz; trafik TR7 üzerinden yönlendirilir (vService'te SNAT IP seçilmişse kaynak adres çevrilir).
- Sağlık durumu: Port range kapalı TCP - L4 / UDP - L4 vService'lerde dağıtıma yansır (Sağlık durumu ve dağıtım).
- Kaydetme: Network vService'te her kayıt vService'i yeniden başlatır; değişiklik düşük trafikli bir zamanda yapılır.
- Ne zaman seçilir: Yanıtları istekten çok büyük trafikte (ör. medya, dosya indirme) TR7'nin dönüş yükünü kaldırmak için (LB Mode seçimi: DSR, Route Mode ve SNAT arasında nasıl karar veririm?).
Sık Karıştırılan Noktalar
- "Kurum Servisi farklı bir portta dinleyebilir." DSR'de port çevrilmez; sunucu vService'in portunda dinlemelidir.
- "Sunucu farklı bir subnet'te olabilir." DSR aynı L2 ağ gerektirir.
- "VIP'i sunucuda normal arayüze eklemek yeterlidir." Sunucu VIP için ARP yanıtı verirse istemci trafiği TR7 yerine doğrudan sunucuya gider; ARP yanıtı engellenmelidir.
- "ANY - L3 protokolünde DSR yapılır." LB mode seçilebilse de ANY - L3 ve Port range açıkken uygulanmaz.
Dokümantasyonda nasıl yapılır
