MQTT, AMQP, FIX gibi mesajlaşma protokolleri destekleniyor mu?
Kısa cevap
Evet, L7 TCP vService ile. Bağlantılar protokol ayrıştırılmadan, bağlantı düzeyinde dağıtılır; bu yüzden istemci kimliğine ya da konuya (topic) göre yönlendirme yapılmaz. Doğrudan TLS ile açılan MQTT (8883) ve AMQPS (5671) bağlantıları TR7'de TCP + TLS ile sonlandırılabilir. Bu protokollerin bağlantıları uzun ömürlüdür: boşta kopmamaları için Timeouts profilindeki Tunnel(Websocket) Timeout (varsayılan 120 saniye), eşzamanlı bağlantı sayısı 20.000'i aşabilecekse vService Limits profilindeki Max. Total Connections değeri artırılır.
Sorun: Mesajlaşma Bağlantıları Neden Özel Ayar İster?
MQTT, AMQP ve FIX istemcileri sunucuya bir kez bağlanır ve bağlantıyı saatlerce, hatta günlerce açık tutar; arada yalnızca küçük canlılık (keepalive / heartbeat) mesajları gider. Bu bağlantılar belirli bir süre veri akmazsa kapatılır. Binlerce cihazın bağlandığı kurulumlarda eşzamanlı bağlantı sayısı da varsayılan sınırı aşabilir. FIX gibi protokollerde karşı taraf genellikle IP adresine göre yetkilendirme yapar ve oturumun aynı sunucuda sürmesini bekler.
Çözüm
L7 TCP vService ile mesajlaşma trafiği
- Nasıl çalışır Her yeni bağlantı bir broker'a gönderilir ve kapanana kadar orada kalır; aynı istemcinin yeni bağlantıları Hash persistence ile aynı broker'a döner.
- Nerede açılır vService → Type: L7 TCP → Details → LB Algorithm → Persistence; Timeout; vService Limits
- Gereksinim Protokolün TCP üzerinde çalışması
- vService tipi L7 TCP
- Kurum Servisi tarafı TLS TR7'de sonlandırılırsa broker şifresiz portta (ör. MQTT 1883, AMQP 5672) dinler. Broker bağlantıları varsayılan olarak TR7'nin IP'sinden görür; istemci IP'si gerekiyorsa Kurum Servisinde SNAT → Use Client IP kullanılır.
Adım adım yapılandırma
Load Balancer → Profiles → Health Checks ekranında Add butonuna tıklanır (nasıl eklenir).
Name girilir ve Check Type olarak TCP seçilir; protokol düzeyinde gönder/bekle adımları gerekiyorsa TCP Scenario alanına adımlar eklenir. Check type varsayılan olarak HTTP gelir ve kayıttan sonra değiştirilemez.
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.90:1883) girilir; Health Check alanında 1–3. adımlarda oluşturulan profil seçilir.
Formun altındaki Add butonuna tıklanır. Her broker için 4–6. adımlar tekrarlanır.
Load Balancer → Profiles → Timeouts ekranında Add butonuna tıklanır (nasıl eklenir).
Name girilir ve Tunnel(Websocket) Timeout alanına protokolün keepalive / heartbeat aralığından büyük bir değer saniye olarak yazılır (en çok 60.000).
Formun altındaki Add butonuna tıklanır.
Eşzamanlı bağlantı sayısı 20.000'i aşabilecekse Load Balancer → Profiles → vService Limits ekranında Add butonuna tıklanır (nasıl eklenir).
Name girilir ve Max. Total Connections (varsayılan 20.000) beklenen cihaz sayısının üzerine çıkarılır.
Formun altındaki Add butonuna tıklanır.
Load Balancer → Load Balancer vService List → Add adımları izlenir; Name girilir ve Type olarak L7 TCP seçilir.
Protokolün portu yazılır. TLS'in TR7'de sonlanacağı MQTT 8883 ya da AMQPS 5671 için Protocol olarak TCP + TLS seçilir ve görünen Certificate alanında sertifika seçilir; şifresiz ya da TLS'i broker'da kalacak bağlantılar için TCP seçilir. Sertifika TR7'de yoksa önce Certificates & PKI → SSL/TLS Certificates → Add ile yüklenir (Sertifikamı TR7'ye nasıl yüklerim; hangi formatlar destekleniyor?). 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 4–6. 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.
Details panelinde Timeout kutusu işaretlenip 7–9. adımlarda oluşturulan profil, gerekiyorsa vService Limits kutusu işaretlenip 10–12. adımlarda oluşturulan profil 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
mosquitto_pub -h mqtt.example.com -p 8883 --cafile ca.pem -t test -m merhabaMesaj abone olan istemciye ulaşırvService'in vService Sessions ve Live Stats ekranlarında bağlantı sayıları ve dağılımı izlenir.
Bağlantılar broker'lara yayılmış; toplam, Max. total connections değerinin altındaSık Yapılan Hatalar
- Süreyi varsayılanda bırakmak. Tunnel(Websocket) timeout 120 saniyedir; keepalive aralığı daha uzun olan cihazların bağlantıları kapatılır ve cihazlar sürekli yeniden bağlanır.
- Bağlantı sınırını gözden kaçırmak. Max. Total Connections varsayılanı 20.000'dir; sınıra ulaşıldığında yeni bağlantılar kabul edilmez, yer açılana kadar bekletilir.
- Konuya göre yönlendirme beklemek. TR7 MQTT ya da AMQP mesajlarını ayrıştırmaz; yönlendirme bağlantı düzeyindedir.
- FIX'te IP'yi korumamak. Karşı taraf IP'ye göre yetkilendiriyorsa ve FIX sunucusu istemci IP'sini görmeliyse Kurum Servisinde SNAT → Use Client IP kullanılır.
Dokümantasyonda nasıl yapılır
