solr的索引複製:將索引從主伺服器上複製到多個伺服器上.
索引複製原因:當有很多個客戶並發訪問某Solr伺服器,這可能會導致Solr伺服器崩潰(Solr伺服器效能達不到這些客戶並發訪問的需求),這時就需要通過solr索引複製來減少對伺服器的效能要求。
下面介紹一下主從伺服器的最簡單配置(如下配置在項目中已經通過驗證):
我的環境:solr master(10.148.73.83), solr slave(10.148.74.72), jdk 1.6.0_13, master(apache-tomcat-6.0.28), slave(apache-tomcat-6.0.29), apache-solr-3.6.0
先將solr與tomcat進行整合,可以參考solr3.6與tomcat的整合
配置主伺服器solr Master(10.148.73.83), 在solrconfig.xml中增加以下內容
<requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="master"> <str name="replicateAfter">commit</str> <str name="replicateAfter">optimize</str><str name="backupAfter">optimize</str><int name="numberToKeep">2</int><str name="confFiles">schema.xml,stopwords.txt,elevate.xml</str> <str name="commitReserveDuration">00:00:30</str> <str name="httpBasicAuthUser">admin</str> <str name="httpBasicAuthPassword">admin</str></lst> </requestHandler>
replicateAfter : SOLR會自行在以下操作行為發生後執行複製: 'commit', 'startup', 'optimize',該值可以填多個
backupAfter:SOLR會自行在以下操作行為發生後執行備份索引: 'commit', 'startup', 'optimize',該值可以填多個
numberToKeep:指定備份多少份檔案,預設值為 MAX_VALUE
confFiles : 待分發的設定檔,solr 也會將主伺服器上的欄位設定檔:schema.xml和stopwords.txt,固排檔案: elevate.xml同步到輔伺服器上。
commitReserveDuration: 每次commit之後,保留增量索引的周期時間,這裡設定為30秒。
配置從伺服器solr slave(10.148.74.72), 在solrconfig.xml中增加以下內容
<requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="slave"> <str name="masterUrl">http://10.148.73.83:8080/solr/replication</str> <str name="pollInterval">00:00:30</str> <!-- 以下參數不常用,非必填參數--> <str name="compression">internal</str> <str name="httpConnTimeout">100000</str> <str name="httpReadTimeout">1000000</str> <str name="httpBasicAuthUser">admin</str> <str name="httpBasicAuthPassword">admin</str> </lst> </requestHandler>
masterUrl : 主索引的url,該從索引將從這個主索引地址同步索引
pollInterval:從伺服器同步間隔,即每隔多長時間同步一次主伺服器,格式為HH:mm:ss . 如果該設定為空白從索引將不會主動從主索引同步索引.另外拉取索引的請求也可以通過 admin 頁面或者 http api 來觸發
compression:在索引傳輸過程中使用壓縮,可選的值有兩個 internal 和 external
如果值是 'external' 請確保主索引的solr已經設定了accept-encoding header
如果值是 'internal' 索引資料將被自動壓縮,這個主要在低頻寬情況下使用,區域網路中請不要使用,區域網路中使用會降低複製效率
httpConnTimeout:設定連線逾時(單位:毫秒)
httpReadTimeout:設定讀取逾時,如果設定同步索引檔案過大,則應適當提高此值。(單位:毫秒)
httpBasicAuthUser:驗證使用者名稱,需要和主伺服器一致
httpBasicAuthPassword:驗證密碼,需和主伺服器一致
註:從伺服器可以有多個,多個從伺服器的配置相同
至此solr的索引複製的配置工作就完成了。現在可以啟動兩個伺服器,通過http://10.148.73.83:8080/solr/admin/replication/查看到主伺服器的複製頁面的控制頁面
通過http://10.148.74.72:8080/solr/admin/replication/查看到從伺服器的複製頁面的控制頁面