2011-06-15 66 views
12

我們的開發團隊目前正在考慮將我們的搜索系統遷移到Apache Solr,我們將非常感謝關於安裝的一些建議。我們正在索引大約兩億個數據庫行。我們每天增加約十萬個新行。這些新的數據庫行必須在收到後兩分鐘內搜索到。主從設置中的Apache Solr故障轉移支持

我們不希望索引陷入搜索者,因此我們認爲在複製設置中有兩臺Solr服務器在不同的機器上運行。第一個Solr實例將是索引器。它將使用DataImportHandler來索引增量並啓用自動提交以防止過度的提交率。指數優化將在計劃期間進行。第二個Solr實例(從屬)將成爲主要搜索者,並將其索引存儲在RAID固態驅動器上。

我們關心的是故障轉移。我們的搜索是關鍵任務。如果主要搜索器出於任何原因停機,我們的搜索服務會自動將查詢分流到索引器節點。但是,索引同樣重要。如果索引器死了,我們需要有一個溫暖的故障轉移。有沒有推薦的方法來自動化Solr複製中的主節點故障轉移?我已經開始關注ZooKeeper,但我不確定這是否是最好的方法。

+0

我試圖使用中繼器作爲備份主設備,但當主設備出現故障時,中繼器無法將其複製到從設備,任何人都可以幫我解決問題嗎?我的帖子在這裏(https://stackoverflow.com/questions/49079050/solr-repeater-stops-letting-its-slave-polling-from-it-when-its-master-is-down) – wwood 2018-03-06 15:50:17

回答

13

正如您已經確定的搜索故障轉移可以使用複製來處理。

主故障轉移有點棘手。一個想法類似下面的邏輯設置

+--------+  +--------+ 
| Slave | ... | Slave | 
+--------+  +--------+ 
    |    | 
    v (replicate) v 
+---------------------------+ 
|  Load balancer   | 
+---------------------------+ 
     /  \ 
     v   v 
+--------+  +--------+ 
| Master | ---> | Master | 
+--------+  +--------+ 
  • 爲了保持主指數最新的可用repeater模式,其中一個熱備份主可以從主主複製
  • 要麼
    • 使用類似主要主設備上的Ping處理程序作爲保持活動通知。如果無法到達,請編寫一個小程序組件,該組件觸發輔助主服務器的數據導入處理程序接管。
    • 保持數據導入處理程序在所有主服務器上處於活動狀態,允許其中的任何一個接管操作而無需其他配置。

請注意,您可能需要配置負載均衡器,使得奴隸可以從一個主在任何時間點只複製。

在一個側面說明中,聽到您的一些索引這樣一個龐大的數據集的經驗會很有趣。

+0

感謝您的反饋,約翰。 Solr郵件列表中的人們推薦了類似的設置。 – ikarous 2011-06-20 21:23:26

+1

索引這樣大量的行確實帶來了一些獨特的挑戰。完整的索引至少需要8個小時,因此任何模式更改都非常耗時。儘管有索引大小,但單個查詢性能仍然令人驚訝,除少數例外。模糊搜索有時可能需要幾秒鐘才能完成,並且我們最初在日期範圍查詢時遇到了問題。我們設法通過1)將日期範圍查詢的查詢時間降低1)將索引字段的粒度減小到日期級別,以及2)通過以非常低的精度值切換日期字段的類型TrieDate。 – ikarous 2011-06-20 21:37:10

+0

看到Solr被推到這裏真的很有趣。內存消耗是否會成爲您的問題? – 2011-06-21 19:07:57