Yoshi

Uzman
Katılım
21 Ağustos 2025
Mesajlar
11
Beğeniler
2
Merhaba dostlar, şimdi benim kurye çağırma tarzı bir mobil uygulamam var. Biraz büyük çaplı olduğu için kendi dedicated sunucumuzu aldık ve bizim ilk kurumsal projemiz olduğu için server tarafında kaldık. Sorun şu: 2 tane API'ler için VM'ler oluşturduk, API01, API02 mantığıyla ama sorun bunları nasıl yöneteceğimiz. Projede SignalR var, WebSocket var; haliyle de kuryenin konumu 5 saniyede bir güncelleniyor. Seçenekler şunlar:

a — Ters vekil (HAProxy/nginx) web01 üzerinde

Trafik web01'e gelir, o da sağlıklı API'lere dağıtır. /health uç noktasına düzenli istek atar, cevap vermeyeni havuzdan çıkarır, düzelince geri alır.
  • İkisi de aktif çalışır, yük paylaşılır.
  • Sağlık kontrolü gerçek — "makine açık" değil, "uygulama cevap veriyor" bakar.
  • Zaten TLS sonlandırma ve web sitesi için bir vekile ihtiyacımız var.
  • Web01 tek nokta ama zaten host da tek nokta, yani pratikte bir şey kaybetmiyoruz.
b — Keepalived + sanal IP

İki API bir IP'yi paylaşır, biri düşünce IP diğerine geçer. Ek VM yok, geçiş 1-3 saniye. Ama aktif-pasif — API02 boşta bekler. Ayrıca VRRP'yi öğrenmem gerekiyor.

c — Cloudflare tunnel, iki bağlayıcı

Cloudflared'ı iki API'de de çalıştırırız, ikisi de aynı tunnel ile bağlanır. Cloudflare sağlıksız olanı kendisi çıkarır.

Hangisini yapmamız daha sağlıklı olur?
 
Son düzenleyen: Moderatör:
Küçük olmayan bir proje varsa monitor ediyor olabilmeniz gerek, ortalama istek sayısı ne düzeylerde?

VM özellikleri ne?
 
A'yı seçmelisin, istediğin reverse-proxy'i karşılıyor. Ayrıca bütün potansiyeli elde etmiş oluyorsun.
hocam ama o zamanda cachlemeyi redis'e taşımam gerekiyor çünkü api01 düşerse bazı background servisler ortak cache'de olmadığından bazı olaylar api02'ye ulaşmıyor hal böyle oluncada web01'de düşebileceğinden web02 vm'nide kurmam gerekiyor iş üstüne iş 🙃

Küçük olmayan bir proje varsa monitor ediyor olabilmeniz gerek, ortalama istek sayısı ne düzeylerde?

VM özellikleri ne?
şuan lansmana çıkmadı proje kapalı betada ama özetlemem gerekirse her başarılı işlem sunucuya 3 istek atıyor ilki http/post işlemi, 2. istekde websocket açılıyor durumlar otomatik güncelleniyor 3. isteğide zaten websocket otomatik atıyor sadece geri dönüşü kullanıcıya yapıyor.
vm özellikleri 8 vCpu, 16GB ram x2
bir çok işlemi postgresql üzerinden cache'de hal ediyorum sadece son hali db'ye yazılıyor o yüzden db vm'leri 12vCpu 48gb ram
 
Son düzenleme:
hocam ama o zamanda cachlemeyi redis'e taşımam gerekiyor çünkü api01 düşerse bazı background servisler ortak cache'de olmadığından bazı olaylar api02'ye ulaşmıyor hal böyle oluncada web01'de düşebileceğinden web02 vm'nide kurmam gerekiyor iş üstüne iş 🙃
O zaman şöyle yap, redis kurulumu yap backplane+cache. Background processleri workera taşı. Web01 üzeirnden devam et eğerki trafiğin yoğpunlaşırsa o zaman web02'a geçiş yap
 
O zaman şöyle yap, redis kurulumu yap backplane+cache. Background processleri workera taşı. Web01 üzeirnden devam et eğerki trafiğin yoğpunlaşırsa o zaman web02'a geçiş yap
çok mantıklı geldi hocam eyvallah, peki worker'ı api'lerden bağımsız yönetmem mi iyi olur worker01 vm kurup yoksa hiç ayrı vm işine girmeyeyim mi