Veritabanı bağlantıları için hangi algoritma önerilir?
Kısa cevap
Least Connection. Veritabanı bağlantıları uzun ömürlü ve süreleri değişkendir; uygulamaların bağlantı havuzları bağlantıları saatlerce açık tutar. Round Robin bu bağlantıları sırayla dağıtır ve yükü dikkate almaz; Least Connection ise yeni bağlantıyı o an en az bağlantısı olan sunucuya verir. Sunucu kapasiteleri farklıysa Kurum Servislerine Weight girilir. L7 TCP vService'te Timeouts profilindeki Tunnel(Websocket) Timeout (varsayılan 120 saniye) ve Server Timeout (varsayılan 90 saniye) bağlantı havuzunun boşta kalma süresinden uzun tutulur.
Önerilen Yapılandırma
| Ayar | Öneri |
|---|---|
| vService tipi | L7 TCP (TLS sonlandırma ya da SNI'ye göre yönlendirme gerekmiyorsa Network de kullanılabilir) |
| LB Algorithm | Least Connection (Network'te Least-Connection ya da Weighted Least-Connection) |
| Weight | Sunucu kapasiteleri farklıysa kapasiteyle orantılı |
| Persistence | Gerekmez; her bağlantı bir sunucuya bağlanır ve kapanana kadar o sunucuda kalır |
| Timeout | Tunnel(Websocket) Timeout ve Server Timeout, bağlantı havuzunun boşta kalma süresinden uzun |
| Health check | Oracle için Oracle; diğer veritabanlarında TCP (gerekirse TCP Scenario adımlarıyla) |
Timeout Neden Kritik?
L7 TCP vService'te Timeouts profili seçilmezse varsayılanlar geçerlidir: Tunnel(Websocket) timeout 120 saniye, Server timeout ve Client timeout 90 saniye. Bağlantı havuzunda bundan uzun süre boşta bekleyen veritabanı bağlantıları kapatılır ve uygulamada "bağlantı koptu" hataları görülür. Bu süreler Load Balancer → Profiles → Timeouts ekranında oluşturulan bir profille artırılır ve profil vService'in Details → Timeout kutusunda seçilir.
Health Check
- TR7'de MySQL, PostgreSQL ya da MSSQL'e özel bir health check türü yoktur.
- Oracle için SQL sorgusu çalıştırabilen Oracle türü vardır.
- Diğer veritabanlarında TCP türüyle port denetimi yapılır; gönder/bekle adımları gerekiyorsa aynı türdeki TCP Scenario alanı kullanılır.
Sık Karıştırılan Noktalar
- "Round Robin veritabanında da dengeli dağıtır." Uzun ömürlü bağlantılar bazı sunucularda birikir.
- "TR7 okuma ve yazma sorgularını ayırır." Dağıtım bağlantı düzeyindedir; okuma/yazma ayrımını uygulama yapar (L7 TCP · Kullanım senaryoları).
- "Varsayılan timeout'lar yeterlidir." Boşta bekleyen havuz bağlantıları varsayılan sürelerde kapatılır.
- "Source algoritmasıyla her uygulama sunucusu aynı veritabanına gider." Source L7 TCP'de yoktur; istemci IP'sine göre kalıcılık gerekiyorsa Persistence → Hash kullanılır.
Dokümantasyonda nasıl yapılır
