Milvus'un EC2 ve S3 Destekli Kalıcı Depolama ile Kubernetes Üzerinde Otomatik Ölçeklenmesi
Hızla büyüyen vektör verisine (arama, öneriler ve RAG için embedding'ler) sahip bir AI platformunun Milvus vektör veritabanının, sorgu yüküne ve veri hacmine göre otomatik olarak ölçeklenmesi gerekiyordu — bu, pod'lar yeniden başlatılsa veya düğümler değiştirilse bile kaybolmayacak dayanıklı ve uygun maliyetli bir depolama ile sağlanmalıydı.
Projenizi Tartışın
Zorluk
Milvus'u üretimde büyük ölçekte çalıştırmak, çeşitli altyapısal zorluklar ortaya çıkardı:
- Sabit Kapasite — Statik Milvus dağıtımları, yoğun saatlerdeki 10 kat sorgu yükü artışlarını karşılayamıyordu
- Veri Kaybı Riski — Geçici depolamada 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şta duran bilgi işlem gücü için ödeme yapmak anlamına geliyordu
- Depolama Maliyetleri — Örneklerle ilişkili blok depolama birimleri, çok terabaytlık vektör veri kümeleri için pahalıydı
- Dizin Yeniden Oluşturmalar — Bir düğüm değişimi sonrasında milyonlarca vektörü yeniden dizinlemek saatler süren kesinti süresine neden oluyordu
- Multi-AZ Dayanıklılığı — Tek-AZ depolama, erişilebilirlik bölgesi arızalarından sağ çıkamıyordu
Çözümümüz
Sorgu düğümleri için Horizontal Pod Autoscaling, bilgi işlem için Cluster Autoscaler ve kalıcı depolama arka ucu olarak Amazon S3 kullanarak Milvus'u Kubernetes (EKS) üzerine dağıttık — böylece veri kaybı riskini ortadan kaldırdık ve depolama maliyetlerini yaklaşık %80 oranında azalttık.
Mimari
- Orkestrasyon: Amazon EKS (Elastic Kubernetes Service)
- Hesaplama: Cluster Autoscaler tarafından yönetilen EC2 örnekleri (karışık örnek tipleri)
- Vektör VT: Milvus, Helm chart aracılığıyla dağıtılmış modda konuşlandırıldı
- Nesne Depolama: Segment dosyaları, dizin dosyaları ve binlog kalıcılığı için Amazon S3
- Metadata: Milvus koordinasyonu ve metadata için etcd kümesi
- Mesaj Kuyruğu: Milvus log pipeline'ı için mesaj akışı
- İzleme: Milvus metrikleri ve otomatik ölçekleme sinyalleri için Prometheus + Grafana
Kubernetes Üzerinde Milvus Dağıtılmış Mimari
Bileşen Dağıtımı
Milvus, özel düğüm tipleriyle dağıtılmış modda çalışır ve her biri bağımsız ölçeklendirme ile bir Kubernetes iş yükü olarak dağıtılır:
- Proxy Düğümleri — İstemci bağlantılarını ve istek yönlendirmeyi yönetir
- Sorgu Düğümleri — Vektör aramalarını yürütür ve segmentleri belleğe yükler
- Veri Düğümleri — Yazma yollarını yönetir ve segmentleri S3'e boşaltır
- Dizin Düğümleri — Vektör dizinlerini oluşturur ve S3'e yazar
- Koordinatör — Küme koordinasyonu ve zaman damgası tahsisi
- etcd — Metadata depolama ve hizmet keşfi
- Mesaj Kuyruğu — Log akışı ve ileri yazma (write-ahead) logu
Horizontal Pod Autoscaling (HPA)
Sorgu Düğümü Otomatik Ölçeklendirme
Sorgu düğümleri 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 fazla metrik tarafından yönlendirilir. HPA, ani artışları ele almak için uygun minimum/maksimum replikalar, hızlı ölçek büyütme ve dalgalanmayı önlemek için kademeli ölçek küçültme ile yapılandırılmıştır.
Dizin Düğümü Otomatik Ölçeklendirme
Dizin düğümleri, bekleyen dizin oluşturma işlerine göre ölçeklenir — oluşturma kuyruğunda bekleyen öğeler olduğunda ölçek büyütülür ve boşta kaldığında tekrar ölçek küçültülür.
EC2 Cluster Autoscaler
Örnek Stratejisi
- Düğüm Grupları: Maliyet optimizasyonu için farklı örnek tiplerine sahip birden fazla düğüm grubu
- Sorgu İş Yükü: Bellek içi vektör segmentleri için bellek optimize edilmiş örnekler
- Dizin İş Yükü: CPU yoğun dizin oluşturma için bilgi işlem optimize edilmiş örnekler
- Spot Örnekleri: Önemli tasarruflar için dizin düğümleri ve kritik olmayan veri düğümleri Spot Örnekler üzerinde çalışır
- İsteğe Bağlı: Kararlılık için sorgu düğümleri ve koordinatörler İsteğe Bağlı örnekler üzerinde
Ölçeklendirme Davranışı
HPA, planlanamayan yeni pod'lar oluşturduğunda, Cluster Autoscaler uygun düğüm grubunda yeni EC2 örnekleri sağlar. Yeni sorgu düğümleri daha sonra atanmış segmentlerini S3'ten belleğe yükler ve sorguları sunmaya başlar, bu toplam ölçek büyütme 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-nine dayanıklılık
- Manuel birim yeniden boyutlandırma olmadan sınırsız ölçeklendirme
- Pod'dan bağımsız — Veri, pod veya düğüm yaşam döngüsünden bağımsız olarak her zaman kullanılabilir
- AZ kilitlenmesi yok — Veri, herhangi bir erişilebilirlik bölgesinden erişilebilir
S3 ile Veri Akışı
- Yazma Yolu: Veri düğümleri eklemeleri bellekte tamponlar, ardından mühürlenmiş segmentleri S3'e boşaltır
- Dizin Oluşturma: Dizin düğümleri segmentleri S3'ten okur, dizinleri oluşturur ve dizin dosyalarını S3'e geri yazar
- Sorgu Yolu: Sorgu düğümleri segmentleri ve dizinleri S3'ten indirir, belleğe yükler ve sorguları sunar
- Kurtarma: Pod yeniden başlatıldığında, sorgu düğümleri atanmış segmentleri S3'ten yeniden indirir (veri kaybı yok)
S3 Performans Optimizasyonu
- Segment boyutu ayarı, S3 istek maliyetleri ile veri güncelliği arasındaki dengeyi sağlar
- NVMe örnek depolamasındaki yerel SSD önbellekleme, sık erişilen segmentler için tekrarlanan S3 okumalarını önler
- Paralel indirmeler hızlı sorgu düğümü 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ışı — Düğüm 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ı, düğüm ölçeklendirmesi, pod zamanlama gecikmesi
- Uyarılar — Yüksek gecikme, OOM riski, boşaltma hataları ve kapasite sınırları için otomatik uyarılar
Temel Özellikler
- Sorgu Düğümü HPA — CPU, bellek, gecikme ve kuyruk derinliğine dayalı otomatik ölçeklendirme
- EC2 Cluster Autoscaler — Karışık örnek tipleriyle dinamik düğüm sağlama
- S3 Kalıcılığı — 11-nine dayanıklılık, blok depolamadan yaklaşık %80 daha ucuz, AZ arızalarından sağ çıkar
- Spot Örnekleri — Önemli bilgi işlem tasarrufları için dizin ve veri düğümleri Spot üzerinde
- Yerel SSD Önbelleği — NVMe önbellekleme, sık erişilen segmentler için tekrarlanan S3 okumalarını ortadan kaldırır
- Sıfır Kesintiyle Kurtarma — Pod yeniden başlatmaları, S3'ten segmentleri veri kaybı olmadan yeniden yükler
- Multi-AZ — Tam AZ arıza toleransı için S3 depolama + çoklu-AZ düğüm grupları
- Gözlemlenebilirlik — Milvus'a özel 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 özel metriklerle yatay pod otomatik ölçeklendirmeyi yapılandırdı ve herhangi bir sorgu düğümü %75 bellek kullanımını aştığında ölçek büyütme olaylarını tetikledi. Koleksiyon segmentleri, Milvus'un segment yöneticisi kullanılarak yeni düğümler arasında otomatik olarak yeniden dağıtılır, böylece hiçbir tekil düğümün bir darboğaza dönüşmesi önlenir.
MicrocosmWorks, nesne depolama katmanı olarak MinIO kullanan S3 destekli depolamayı seçti çünkü depolamayı hesaplamadan ayırarak sorgu düğümlerinin yeni EBS birimleri sağlamadan bağımsız olarak ölçeklenmesine olanak tanıyor. Bu mimari, S3'ten 100ms altı segment yükleme sürelerini korurken gp3 EBS birimlerine kıyasla depolama maliyetlerini yaklaşık %60 oranında azaltır.
MicrocosmWorks, dağıtımı sorgu düğümleri, indeks düğümleri ve veri düğümleri dahil olmak üzere her Milvus bileşeni için replika setleri ile ve rolling update'ler sırasında minimum kullanılabilirliği sağlayan pod disruption budget'lar ile yapılandırdı. Tüm kalıcı veriler S3'te bulunduğundan, başarısız olan bir düğümün yedeği veri geçişi olmadan tüm segmentlere anında erişebilir.
MicrocosmWorks, r6i.2xlarge örneklerinin, rekabetçi bir spot fiyatla bellek içi segment önbelleğe alma için 64GB bellek sunarak Milvus sorgu iş yükleri için en uygun maliyet-performans oranını sağladığını buldu. GPU hızlandırmalı indeks oluşturma için NVIDIA A10G GPU'lara sahip g5.xlarge örnekleri, yalnızca CPU ile yapılan derlemelere kıyasla indeks oluşturma sürelerini 8 kat azalttı.
MicrocosmWorks, Kubernetes altyapı projelerini 30-50$/saat oranlarında sunar; Helm chart özelleştirmesi, HPA yapılandırması, 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ükseltmeler 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.