2011-08-30 108 views
3

爲負載均衡器運行狀況檢查提供的/ admin/ping solr的默認配置與Amazon elb負載均衡器運行狀況檢查集成良好。solr健康檢查> 0文檔

但是,由於我們在提供新節點時正在使用主從複製,因此solr啓動並進行復制,但同時/ admin/ping返回成功,然後索引已從主控複製並且存在文檔。

我們希望只有在完成第一次複製並擁有文檔後才能將節點帶入活動狀態。我沒有看到用/ admin/ping PingRequestHandler做到這一點 - 如果搜索成功,它總是返回成功,即使結果爲零。

在elb運行狀況檢查配置中,在響應中也沒有匹配/不匹配預期文本。

任何想法如何實現這一目標?

回答

6

要在這裏對問題的性質擴大,PingRequestHandler將始終返回,除非是成功的....在異常

  1. 其查詢結果被拋出。
  2. 它被配置爲使用健康檢查文件,並且找不到該文件。

因此,我建議您配置PingRequestHandler處理程序以使用健康檢查文件。然後,您可以在Solr系統上使用cron作業,該作業的目的是檢查是否存在文檔並相應地創建(或刪除)健康檢查文件。如果healthcheck文件不存在,則PingRequestHandler將會拋出一個HTTP 503,這對於ELB來說應該足夠了。

粗略的算法,我會用...

  • 每一分鐘,查詢http://localhost:8983/solr/select?q=*:*
  • 如果numDocs > 0然後touch /path/to/solr-enabled
  • 否則rm /path/to/solr-enabled(可選的,取決於你的嚴)

健康檢查文件可配置爲in the <admin> block,您可以使用絕對路徑或文件名關聯tive到你已經開始Solr的目錄。

<admin> 
    <defaultQuery>solr</defaultQuery> 
    <pingQuery>q=*:*</pingQuery> 
    <healthcheck type="file">/path/to/solr-enabled</healthcheck> 
</admin> 

讓我知道如何解決!我試圖在Websolr上實現類似的讀取從屬。

+0

非常感謝,這看起來像票。 – bee