2011-06-15 20 views
12

Geliştirme ekibimiz şu anda arama sistemimizi Apache Solr'a taşımak istiyor ve kurulum hakkındaki bazı önerileri çok takdir ediyoruz. Yaklaşık iki yüz milyon veritabanı satırı dizinliyoruz. Gün boyunca yaklaşık yüz bin yeni satır ekliyoruz. Bu yeni veritabanı satırları, alındıklarında iki dakika içinde aranabilir olmalıdır.Master-Slave Kurulumu'nda Apache Solr Yük Devretme Desteği

İndekslemenin arama yapanı aşağı çekmesini istemiyoruz, bu nedenle düşüncenin bir replikasyon kurulumunda farklı makinelerde çalışan iki Solr sunucusuna sahip olmak olduğunu düşünüyoruz. İlk Solr örneği dizinleyici olacaktır. Delta'yı indekslemek için DataImportHandler'ı kullanacak ve aşırı işlem yapma oranlarını önlemek için otomatik devreye alma özelliğini etkinleştirecek. Endeks optimizasyonu, planlanan dönemlerde gerçekleşecektir. İkinci Solr örneği (köle) birincil araştırıcı olacak ve dizinleri RAIDed katı hal sürücülerinde saklanacaktır.

Yükümlülüklerimiz, yük devretme işlemidir. Bizim aramalarımız kritik önem taşıyor. Birincil arama yapan kişi herhangi bir nedenden dolayı aşağı inerse, arama servisimiz otomatik olarak sorguları dizinleyici düğümün yerine otomatik olarak yönlendirecektir. Dizinleme eşit derecede kritiktir. İndeksleyici ölürse, beklemede olan sıcak bir işçiye ihtiyacımız var. Solr çoğaltmasında ana düğüm devretme işlemini otomatikleştirme için önerilen bir yol var mı? ZooKeeper'ı aramaya başladım, ama en iyi yaklaşımın bu olduğundan emin değildim.

+0

Yineleyiciyi bir yedek yönetici olarak kullanmayı denedim, ancak ana master devrede olduğunda tekrarlayıcı, köleye çoğaltılamadı, kimse bana yardımcı olabilir mi? Mesajım burada (https://stackoverflow.com/questions/49079050/solr-repeater-stops-letting-its-slave-polling-from-it-when-its-master-is-down) – wwood

cevap

13

Belirlediğiniz gibi arama yük devretme, çoğaltma kullanılarak işlenebilir.

Ana yük devretme biraz daha zor. Bir sıcak yedek ana birincil ustadan çoğaltabilirsiniz repeater modu kullanılabilir

+--------+  +--------+ 
| Slave | ... | Slave | 
+--------+  +--------+ 
    |    | 
    v (replicate) v 
+---------------------------+ 
|  Load balancer   | 
+---------------------------+ 
     /  \ 
     v   v 
+--------+  +--------+ 
| Master | ---> | Master | 
+--------+  +--------+ 
  • güncel Usta indeksleri tutmak için aşağıdaki mantıksal kurulum gibi bir şeye Bir fikir
  • Ya
    • Birincil canlıdaki Ping işleyici gibi bir şey canlı tutma bildirimi olarak kullanın. Ulaşılamıyorsa, ikincil yöneticinin veri alma işleyicisini ele geçirmek için tetikleyen küçük bir program bileşeni yazın.
    • Veri alma işleyicilerinin tüm ana sunucularda etkin olmasını sağlayarak, bunlardan herhangi birinin ek yapılandırma yapmadan çalışmaya başlamasını sağlayın. Bir köle sadece zaman içinde herhangi bir noktada bir ustadan çoğaltabilirsiniz şekilde yük dengeleyici yapılandırmanız gerekebilir

Not.

Bir yan notta, böyle büyük bir veri kümesini indeksleyen bazı deneyimlerinizi duymak ilginç olurdu.

+0

Geri bildiriminiz için teşekkürler Johan. Solr posta listesindeki insanlar benzer bir kurulum önerdi. – ikarous

+1

Çok sayıda satırın indekslenmesi bazı benzersiz zorluklar yaratmıştır. Tam bir endeksleme en az sekiz saat sürer, bu nedenle herhangi bir şema değişikliği oldukça zaman alıcıdır. Tek sorgulama performansı, birkaç istisna dışında, dizin boyutuna rağmen şaşırtıcı derecede iyidir. Bulanık aramaların bazen tamamlanması birkaç saniye sürebilir ve başlangıçta tarih aralığı sorgularıyla ilgili sorunlarımız oldu.Tarih aralığı sorgularında sorgulama sürelerini 1) aşağıya indekslemeyi başardık: endeksli alanın tanecikliğini gün seviyesine düşürmek ve 2) tarih alanının TrieDate tipini çok düşük bir precisionstep değeriyle değiştirmek. – ikarous

+0

Solr'un bu şekilde itildiğini görmek gerçekten ilginç. Bellek tüketimi sizin için sorun muydu? –