EC2 ve S3 Destekli Kalıcı Depolama ile Kubernetes Üzerinde Milvus Otomatik Ölçeklendirme
Hızla büyüyen vektör verisine (arama, öneriler ve RAG için embedding'ler) sahip bir AI platformu, sorgu yüküne ve veri hacmine göre otomatik olarak ölçeklenebilen Milvus vektör veritabanına ihtiyaç duyuyordu — üstelik pod'lar yeniden başlatılsa veya node'lar değiştirilse bile kaybolmayacak dayanıklı, uygun maliyetli bir depolama ile.
Projenizi Tartışın
Zorluk
Milvus'u üretimde büyük ölçekte çalıştırmak çeşitli altyapı zorlukları ortaya çıkardı:
- Sabit Kapasite — Statik Milvus dağıtımları, yoğun saatlerdeki 10 katlık sorgu yükü ani artışlarını kaldıramıyordu
- Veri Kaybı Riski — Geçici depolamadaki pod yeniden başlatmaları, büyük koleksiyonlarda saatler süren dizin yeniden oluşturmalarına neden oluyordu
- Maliyet Verimsizliği — En yüksek yük için aşırı kaynak sağlama, zamanın %70'inde boştaki compute için ödeme yapmak anlamına geliyordu
- Depolama Maliyetleri — Instance'lara bağlı blok depolama birimleri, çok terabaytlık vektör veri kümeleri için pahalıydı
- Dizin Yeniden Oluşturmalar — Bir node değişiminden sonra milyonlarca vektörü yeniden dizinlemek saatler süren kesintiye neden oluyordu
- Çoklu-AZ Dayanıklılığı — Tek-AZ depolama, availability zone arızalarına dayanamıyordu
Çözümümüz
Sorgu node'ları için Horizontal Pod Autoscaling, compute için Cluster Autoscaler ve kalıcı depolama arka ucu olarak Amazon S3 ile Milvus'u Kubernetes (EKS) üzerinde dağıttık — veri kaybı riskini ortadan kaldırarak ve depolama maliyetlerini yaklaşık %80 oranında azalttık.
Mimari
- Orkestrasyon: Amazon EKS (Elastic Kubernetes Service)
- Compute: Cluster Autoscaler tarafından yönetilen EC2 instance'ları (karışık instance türleri)
- Vektör VT: Dağıtılmış modda Helm chart aracılığıyla dağıtılan Milvus
- Nesne Depolama: Segment dosyaları, dizin dosyaları ve binlog kalıcılığı için Amazon S3
- Metadata: Milvus koordinasyonu ve metadata için etcd cluster'ı
- Mesaj Kuyruğu: Milvus günlük pipeline'ı için mesaj akışı
- İzleme: Milvus metrikleri ve otomatik ölçeklendirme sinyalleri için Prometheus + Grafana
Kubernetes Üzerinde Milvus Dağıtık Mimarisi
Bileşen Dağıtımı
Milvus, her biri bağımsız ölçeklendirmeye sahip bir Kubernetes iş yükü olarak dağıtılan özel node türleri ile dağıtılmış modda çalışır:
- Proxy Node'lar — İstemci bağlantılarını ve istek yönlendirmeyi yönetir
- Sorgu Node'ları — Vektör aramalarını yürütür ve segmentleri belleğe yükler
- Veri Node'ları — Yazma yollarını yönetir ve segmentleri S3'e boşaltır
- Dizin Node'ları — Vektör dizinlerini oluşturur ve S3'e yazar
- Koordinatör — Küme koordinasyonu ve zaman damgası tahsisi
- etcd — Metadata depolama ve servis keşfi
- Mesaj Kuyruğu — Log akışı ve write-ahead log
Horizontal Pod Otomatik Ölçeklendirme (HPA)
Sorgu Node'u Otomatik Ölçeklendirmesi
Sorgu node'ları birincil ölçeklendirme hedefidir — vektör segmentlerini belleğe yükler ve aramaları yürütürler. Ölçeklendirme, CPU kullanımı, bellek kullanımı, sorgu kuyruğu derinliği ve P99 sorgu gecikmesi dahil olmak üzere birden çok metrik tarafından yönlendirilir. HPA, ani artışları yönetmek için uygun min/maks replikalar, hızlı ölçeklendirme ve dalgalanmayı önlemek için kademeli ölçeklendirme ile yapılandırılmıştır.
Dizin Node'u Otomatik Ölçeklendirmesi
Dizin node'ları, bekleyen dizin oluşturma işlerine göre ölçeklenir — oluşturma kuyruğunda bekleyen öğeler olduğunda ölçeklenir ve boşta olduğunda geri küçülür.
EC2 Küme Otomatik Ölçeklendiricisi
Instance Stratejisi
- Node Grupları: Maliyet optimizasyonu için farklı instance türlerine sahip birden çok node grubu
- Sorgu İş Yükü: Bellek içi vektör segmentleri için bellek optimize edilmiş instance'lar
- Dizin İş Yükü: Yoğun CPU kullanan dizin oluşturma için compute optimize edilmiş instance'lar
- Spot Instance'lar: Dizin node'ları ve kritik olmayan veri node'ları, önemli tasarruflar için spot instance'lar üzerinde çalışır
- On-Demand: Sorgu node'ları ve koordinatörler, kararlılık için on-demand instance'lar üzerinde
Ölçeklendirme Davranışı
HPA, planlanamayan yeni pod'lar oluşturduğunda, Cluster Autoscaler uygun node grubunda yeni EC2 instance'ları sağlar. Yeni sorgu node'ları daha sonra atanmış segmentlerini S3'ten belleğe yükler ve sorguları sunmaya başlar, toplam ölçeklendirme süreci dakikalar içinde tamamlanır.
S3 Destekli Kalıcı Depolama
Neden Blok Depolama Yerine S3?
S3, Milvus için blok depolamaya göre önemli avantajlar sunar:
- Büyük veri kümeleri için yaklaşık %80 daha düşük depolama maliyeti
- Yerleşik çoklu-AZ replikasyonu ile 11-nines dayanıklılık
- Manuel birim boyutlandırması olmadan sınırsız ölçeklendirme
- Pod'dan bağımsız — Veriler, pod veya node yaşam döngüsünden bağımsız olarak her zaman erişilebilir
- AZ kilitlenmesi yok — Verilere herhangi bir availability zone'dan erişilebilir
S3 ile Veri Akışı
- Yazma Yolu: Veri node'ları eklemeleri bellekte arabelleğe alır, ardından mühürlü segmentleri S3'e boşaltır
- Dizin Oluşturma: Dizin node'ları segmentleri S3'ten okur, dizinler oluşturur ve dizin dosyalarını tekrar S3'e yazar
- Sorgu Yolu: Sorgu node'ları segmentleri ve dizinleri S3'ten indirir, belleğe yükler ve sorguları sunar
- Kurtarma: Pod yeniden başlatıldığında, sorgu node'ları atanmış segmentleri S3'ten yeniden indirir (veri kaybı yok)
S3 Performans Optimizasyonu
- Segment boyutu ayarlaması, S3 istek maliyetleri ile veri güncelliği arasında denge sağlar
- NVMe instance depolamasındaki Yerel SSD önbellekleme, sık erişilen segmentler için tekrarlanan S3 okumalarını önler
- Paralel indirmeler, hızlı sorgu node'u başlatmayı sağlar
- Yaşam döngüsü politikaları, eski verileri daha ucuz depolama katmanlarına arşivler
İzleme ve Gözlemlenebilirlik
Dağıtım, Prometheus ve Grafana aracılığıyla kapsamlı izleme içerir:
- Sorgu Performansı — Gecikme dağılımı, QPS, önbellek isabet oranı
- Küme Genel Bakışı — Node sayısı, pod durumu, kaynak kullanımı
- Depolama Sağlığı — S3 kullanımı, segment sayıları, boşaltma oranları
- Otomatik Ölçeklendirme Olayları — HPA olayları, node ölçeklendirme, pod planlama gecikmesi
- Uyarılar — Yüksek gecikme, OOM riski, boşaltma hataları ve kapasite sınırları için otomatik uyarılar
Temel Özellikler
- Sorgu Node'u HPA — CPU, bellek, gecikme ve kuyruk derinliğine dayalı otomatik ölçeklendirme
- EC2 Cluster Autoscaler — Karışık instance türleriyle dinamik node sağlama
- S3 Kalıcılığı — 11-nines dayanıklılık, blok depolamadan yaklaşık %80 daha ucuz, AZ arızalarına dayanıklı
- Spot Instance'lar — Önemli compute tasarrufu için spot instance'larda dizin ve veri node'ları
- Yerel SSD Önbellek — NVMe önbellekleme, sık erişilen segmentler için tekrarlanan S3 okumalarını ortadan kaldırır
- Sıfır Kesinti ile Kurtarma — Pod yeniden başlatmaları, S3'ten segmentleri veri kaybı olmadan yeniden yükler
- Çoklu-AZ — Tam AZ arıza toleransı için S3 depolama + çoklu-AZ node grupları
- Gözlemlenebilirlik — Milvus'a özgü metrikler ve otomatik ölçeklendirme görünürlüğü ile Prometheus + Grafana
Sonuçlar
Teknoloji Yığını
caseStudyDetail.more Vaka Çalışmaları
Daha fazla teknik uygulamamızı keşfedin
AI Destekli Fatura İşleme (OCR ve QuickBooks Entegrasyonu ile)
Ayda yüzlerce satıcı faturasını işleyen orta ölçekli bir işletme, fatura verilerini AI/OCR kullanarak otomatik olarak çıkarıp muhasebe ve ödeme takibi için doğrudan QuickBooks'a senkronize ederek manuel veri girişini ortadan kaldırmak istedi.
İstemci Tarafında Reklam Ekleme (CSAI), SCTE-35 İşaretleyici Ayrıştırma ve Çok Platformlu Oynatıcı Entegrasyonu ile
Bir video akış platformu, sunucu tarafı reklam eklemenin sağlayamadığı tam reklam etkileşimi desteğiyle (tıklanabilir katmanlar, yardımcı banner'lar, atlama düğmeleri) kişiselleştirilmiş, cihaz düzeyinde reklam deneyimleri sunarak web, mobil ve akıllı TV uygulamaları genelinde Client-Side Ad Insertion (CSAI) uygulamasına ihtiyaç duyuyordu.
Sıkça Sorulan Sorular
MicrocosmWorks configured horizontal pod autoscaling with custom metrics from Milvus's built-in memory usage exporter, triggering scale-out events when any query node exceeds 75% memory utilization. Collection segments are automatically redistributed across new nodes using Milvus's segment manager, preventing any single node from becoming a bottleneck.
MicrocosmWorks selected S3-backed storage using MinIO as the object storage layer because it decouples storage from compute, allowing query nodes to scale independently without provisioning new EBS volumes. This architecture reduces storage costs by approximately 60% compared to gp3 EBS volumes while maintaining sub-100ms segment load times from S3.
MicrocosmWorks configured the deployment with replica sets for each Milvus component, including query nodes, index nodes, and data nodes, with pod disruption budgets ensuring minimum availability during rolling updates. Since all persistent data resides in S3, a failed node's replacement can immediately access all segments without data migration.
MicrocosmWorks found that r6i.2xlarge instances provide the optimal cost-to-performance ratio for Milvus query workloads, offering 64GB of memory for in-memory segment caching at a competitive spot price. For GPU-accelerated index building, g5.xlarge instances with NVIDIA A10G GPUs reduced index build times by 8x compared to CPU-only builds.
MicrocosmWorks delivers Kubernetes infrastructure projects at rates of $30-$50/hr, with a Milvus autoscaling deployment including Helm chart customization, HPA configuration, S3 integration, and monitoring setup typically requiring 150-250 hours. Ongoing managed support for cluster optimization and upgrades is available at the same hourly rates.
İşletmenizi Dönüştürmeye Hazır mısınız?
Zorluklarınıza benzer çözümler uygulamamızın yollarını konuşalım.