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, Milvus'un yerleşik bellek kullanım dışa aktarıcısından alınan özel metriklerle horizontal pod autoscaling'i yapılandırdı ve herhangi bir sorgu düğümü %75 bellek kullanımını aştığında scale-out olaylarını tetikledi. Koleksiyon segmentleri, Milvus'un segment yöneticisi kullanılarak yeni düğümler arasında otomatik olarak yeniden dağıtılır ve böylece tek bir düğümün darboğaz olmasını engeller.
MicrocosmWorks, depolamayı işlemden ayırdığı için MinIO'yu nesne depolama katmanı olarak kullanarak S3 destekli depolamayı seçti; bu sayede sorgu düğümlerinin yeni EBS birimleri sağlamadan bağımsız olarak ölçeklenmesine olanak tanır. Bu mimari, gp3 EBS birimlerine kıyasla depolama maliyetlerini yaklaşık %60 azaltırken, S3'ten 100 ms altı segment yükleme sürelerini korur.
MicrocosmWorks, dağıtımı her Milvus bileşeni (sorgu düğümleri, indeks düğümleri ve veri düğümleri dahil) için replica set'leri ve rolling update'ler sırasında minimum erişilebilirliği sağlayan pod disruption budget'ları ile yapılandırdı. Tüm kalıcı veriler S3'te bulunduğundan, arızalı bir düğümün yerine geçen düğüm, veri geçişi olmadan tüm segmentlere anında erişebilir.
MicrocosmWorks, r6i.2xlarge örneklerinin Milvus sorgu iş yükleri için en uygun maliyet-performans oranını sağladığını, bellek içi segment önbelleğe alma için 64GB bellek sunduğunu ve bunu rekabetçi bir spot fiyatla yaptığını tespit etti. GPU hızlandırmalı dizin oluşturma için, NVIDIA A10G GPU'lara sahip g5.xlarge örnekleri, dizin oluşturma sürelerini yalnızca CPU ile yapılan derlemelere kıyasla 8 kat azalttı.
MicrocosmWorks, Kubernetes altyapı projelerini $30-$50/saat oranlarında sunmaktadır. Helm chart özelleştirmesi, HPA konfigürasyonu, S3 entegrasyonu ve izleme kurulumunu içeren bir Milvus otomatik ölçekleme dağıtımı genellikle 150-250 saat gerektirir. Küme optimizasyonu ve yükseltmeleri için devam eden yönetilen destek aynı saatlik ücretlerle mevcuttur.
İş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.