2017-10-16 37 views
1

我目前使用Solr的雲6.1,也可以觀察到以下行爲,直到7.0。Solr的雲:跨節點碎片的分佈

我試圖創建一個Solr的收集與5個碎片和2複製因子我有5臺物理服務器。通常情況下,這會將所有10個副本均勻分配到可用服務器中。

但是,當啓動Solr Cloud並使用-h(主機名)參數爲每個Solr實例提供單個但恆定的主機名時,此功能不再起作用。然後,分佈如下:

solr-0: 
wikipedia_shard1_replica1 wikipedia_shard2_replica1 wikipedia_shard3_replica2 wikipedia_shard4_replica1 wikipedia_shard4_replica2 

solr-1: 

solr-2: 
wikipedia_shard3_replica1 wikipedia_shard5_replica1 wikipedia_shard5_replica2 

solr-3: 
wikipedia_shard1_replica2 

solr-4: 
wikipedia_shard2_replica2 

我試着用Rule-based Replica Placement,但規則似乎被忽略。

我需要使用主機名,因爲Solr的在Kubernetes集羣,其中IP不會忽略頻繁變化和Solr將無法找到它的容器重新啓動後的內核上運行。我首先懷疑一個更新的Solr版本是這個原因,但我縮小了它的主機名問題。

有沒有解決方案?

回答

0

該解決方案實際上是相當簡單的(但不是真的記錄):

當創建在OpenShift/Kubernetes一個Service,所有匹配莢得到由負載均衡器的支持。當所有的Solr實例會被分配一個唯一的主機名,這將主機名解析所有以一個單一的IP地址(負載平衡器)。

Solr的不知何故不能處理這個,未能均勻分佈的碎片。

的解決方案是使用從headless services Kubernetes。無頭服務不受負載平衡器支持,因此每個主機名都解析爲唯一的IP地址。