FTP için yük dengeleme yapabilir miyim; veri kanalı ne olur?
Kısa cevap
Evet, pasif FTP ile. FTP iki bağlantı kullanır: komutlar için kontrol kanalı (21), dosya aktarımı için ayrı bir veri kanalı. TR7 FTP komutlarını okumaz ve yeniden yazmaz; bu yüzden kontrol portu ile sunucunun pasif veri port aralığı aynı vService'te birlikte yayınlanır ve aynı istemcinin iki bağlantısı persistence ile aynı sunucuya gönderilir: L7 TCP vService'te frontend Port alanına aralık yazılıp Kurum Servisinde Use Frontend Port açılır ve Hash persistence seçilir; Network vService'te Port Range ve L4 Persistence açılır. FTP sunucusunda pasif port aralığı sabitlenir ve PASV yanıtında bildirilen adres vService adresi yapılır. Aktif FTP önerilmez.
Sorun: Veri Kanalı Neden Kopar?
Pasif FTP'de istemci önce 21 portuna bağlanır; sunucu PASV yanıtıyla bir IP adresi ve veri portu bildirir, istemci bu adrese ikinci bir bağlantı açar. İki sorun çıkar: sunucu kendi iç IP'sini bildirirse istemci veri bağlantısını kuramaz; veri bağlantısı kontrol bağlantısından farklı bir sunucuya düşerse o sunucu bu aktarımı tanımaz. TR7 PASV ve PORT komutlarını yeniden yazmadığı için bu iki koşul sunucu ve vService yapılandırmasıyla karşılanır.
Çözüm: İki Yöntem
İki yöntemde de FTP sunucusu aynı biçimde hazırlanır (aşağıdaki panel); fark, vService türüdür.
| Durumunuz | Uygun yöntem |
|---|---|
| Health check sonucu dağıtıma yansısın; kurallar ve TCP Logs kullanılsın | Yöntem 1: L7 TCP vService |
| Paket düzeyinde dağıtım yeterli; health check sonucunun dağıtıma yansımaması kabul edilebilir | Yöntem 2: Network vService, Port range |
Örnekte vsftpd kullanılmıştır; 203.0.113.80 yerine vService adresi, 50000-50100 yerine vService'te yayınlanacak aralık yazılır. Ayarlar vsftpd'nin yapılandırma dosyasına (vsftpd.conf) eklenir ve servis yeniden başlatılır (vsftpd.conf). Diğer FTP sunucularında aynı iki ayar (pasif aralık, PASV'de bildirilen adres) kendi yapılandırma adlarıyla yapılır.
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
pasv_address=203.0.113.80Her sunucuda aynı aralık
Bütün FTP sunucuları aynı pasif aralığı kullanır; TR7 veri bağlantısını sunucunun aynı portuna gönderir.
Yöntem 1: L7 TCP vService Önerilen
- Nasıl çalışır 21 ve pasif aralık aynı vService'te dinlenir; her bağlantı Kurum Servisinin aynı portuna gider, Hash persistence istemci IP'sine göre iki bağlantıyı aynı sunucuda tutar.
- Nerede açılır vService → Frontend 21 ve pasif aralık; Kurum Servisi → Use Frontend Port; vService → Details → LB Algorithm → Persistence: Hash
- Gereksinim FTP sunucusunda sabit bir pasif port aralığı ve vService adresini bildiren PASV ayarı
- vService tipi L7 TCP
- Kurum Servisi tarafı Gerekir: pasif aralık ve PASV adresi yukarıdaki paneldeki gibi ayarlanır.
Adım adım yapılandırma
Her FTP sunucusunda pasif port aralığı sabitlenir (ör. 50000-50100) ve PASV yanıtında bildirilecek adres vService'in IP'si yapılır (yukarıdaki panel). Bu ayar TR7'de değil, FTP sunucusunda yapılır.
Load Balancer → Profiles → Health Checks ekranında Add butonuna tıklanır (nasıl eklenir).
Name girilir, Check Type olarak FTP seçilir ve zorunlu FTP User ile FTP Password alanları doldurulur.
Formun altındaki Add butonuna tıklanır.
Load Balancer → Backend Services ekranında Add butonuna tıklanır (Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?).
Backend Service Name ve Address (ör. 192.0.2.100:21) girilir; Health Check alanında 2–4. adımlarda oluşturulan profil seçilir.
Aynı formun Details bölümünde Use Frontend Port açılır; böylece veri bağlantısı sunucunun aynı veri portuna gider.
Formun altındaki Add (mevcut Kurum Servisinde Edit) butonuna tıklanır. Her FTP sunucusu için 5–8. adımlar tekrarlanır.
Load Balancer → Load Balancer vService List → Add adımları izlenir; Name girilir ve Type olarak L7 TCP seçilir.
Frontend tablosuna aynı IP ile iki satır eklenir: port 21 / TCP ve port 50000-50100 / TCP. Aralığın başlangıcı bitişinden küçük olmalıdı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 5–8. adımlarda eklenen Kurum Servisleri seçilir.
Formun sağ üstündeki Details anahtarı açılır; LB Algorithm kutusunda Persistence olarak Hash seçilir ve Hash Key alanında Client IP Address 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
curl -v ftp://203.0.113.80/ --user kullanici:parola227 Entering Passive Mode (203,0,113,80,…) · dizin listesiYöntem 2: Network vService, Port Range
- Nasıl çalışır Kontrol ve veri portlarına gelen paketlerin hedef adresi Kurum Servisine çevrilir, port korunur. L4 persistence aynı istemcinin bütün bağlantılarını aynı sunucuya gönderir.
- Nerede açılır vService → Type: Network → Port Range → Details → L4 Persistence
- Gereksinim Yöntem 1'deki FTP sunucusu ayarları; health check sonucunun dağıtıma yansımayacağının kabul edilmesi
- vService tipi Network (TCP - L4)
- Kurum Servisi tarafı Pasif aralık ve PASV adresi ayarlanır. Port range açıkken LB mode uygulanmaz ve trafik TR7 üzerinden yönlendirilir; SNAT IP seçilmediyse sunucuların dönüş trafiği TR7'den geçmelidir.
Adım adım yapılandırma
Yöntem 1'in 1–6. ve 8. adımları uygulanır; Network vService'te Kurum Servisinin portu yerine istemcinin geldiği port kullanıldığı için Use Frontend Port gerekmez. Kurum Servislerinin Route Table alanı vService'in route tablosuyla aynı olmalıdır.
Load Balancer → Load Balancer vService List → Add adımları izlenir; Name girilir ve Type olarak Network seçilir.
Protocol olarak TCP - L4 seçilir ve Port Range anahtarı açılır.
Frontend tablosuna aynı IP ile 21 ve 50000-50100 satırları eklenir.
Default Backend Services tablosunda 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 yalnızca SNAT IP'nin kaynak adres olarak kullanılması uygulanır.
Formun sağ üstündeki Details anahtarı açılır; LB Algorithm kutusunda L4 Persistence açılır (süre 5 dakika ile gelir). Algoritma Round-Robin ya da Weighted Round-Robin kalı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
curl -v ftp://203.0.113.80/ --user kullanici:parolaDizin listesiSık Yapılan Hatalar
- Use Frontend Port'u açmamak (Yöntem 1). Veri bağlantısı sunucunun 21 portuna gider ve aktarım başarısız olur.
- Persistence'ı açmamak. Veri bağlantısı kontrol bağlantısından farklı bir sunucuya düşer.
- PASV adresini sunucunun iç IP'si bırakmak. İstemci veri bağlantısını kuramaz; listeleme ya da indirme takılır.
- Aktif FTP kullanmak. Aktif FTP'de sunucu istemciye kendisi bağlanır ve TR7 bu bağlantıyı vService üzerinden yönetmez; pasif FTP kullanılır.
- Yöntem 2'de health check'e güvenmek. Port range açıkken health check sonucu dağıtıma yansımaz; arızalı sunucu bağlantı almaya devam eder.
Dokümantasyonda nasıl yapılır
