隨着用戶的增多,空間和併發量愈來愈多,會致使一臺solr服務器幹不過了。這時候,就須要將solr集羣如下。html
由多臺服務器共同完成索引和搜索任務 java
實現的思路是將索引數據進行shard(分片) 拆分,每一個分片由多臺的服務器共同完成。web
當一個索引或搜索請求過來時會分別從不一樣的shard的服務器中操做索引。 apache
solrCloud須要 solr基於zookeeper部署,zookeeper是一個集羣管理軟件,solrCloud須要由多臺服務器組成。由zookeeper來進行協調管理 ,多個分片相加起來纔是一個完成的索引庫 vim
見 zookeeper集羣瀏覽器
一. 拷貝tomcat和solrhometomcat
新建文件夾 solr-cloud。將以前solr單機版中的tomcat,solrhome拷貝到solr-cloud文件夾中。服務器
二. tomcat修改架構
1.端口修改併發
在solr-cloud文件夾中, 執行如下命令:
vim ./tomcat1/conf/server.xml
查詢並修改其中的三個port:
1).
2).
3).
其餘的tomcat分別修改port的第二個數值爲相應數值便可,
如:8280/8209/8205,8380/8309/8305,8480/8409/8405。
2. web.xml 修改
分別修改 webapps/solr/WEB-INF/web.xml文件 - 將solrhome和solr關聯起來
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/java/solr-cloud/solrhome1</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
tomcat2 -> /usr/java/solr-cloud/solrhome2
tomcat3 -> /usr/java/solr-cloud/solrhome3
tomcat4 -> /usr/java/solr-cloud/solrhome4
3. catalina.sh修改
經過修改這裏的JAVA_OPTS將tomcat和zookeeper關聯起來。
分別修改tomcat/bin/catalina.sh文件
加入:
JAVA_OPTS="-DzkHost=192.168.0.102:2181,192.168.0.102:2182,192.168.0.102:2183"
三. solrhome修改
1. solrhome1下面的solr.xml文件修改
host爲對應tomcat1部署的電腦ip,hostport爲tomcat1修改後的端口號。
solrhome2(192.168.0.102, 8280)
solrhome3(192.168.0.102, 8380)
solrhome4(192.168.0.102, 8480)
2. 上傳solrhome/core1/conf目錄
將conf目錄上傳到zookeeper中,由zookeeper統一管理配置文件。只須要上傳任意一個solrhome中的配置就能夠了。
切換到以前solr解壓的目錄中:/usr/java/solr/solr-6.6.2/server/scripts/cloud-scripts
執行如下命令:
./zkcli.sh -zkhost 192.168.0.102:2181,192.168.0.102:2182,192.168.0.102:2183 -cmd upconfig -confdir /usr/java/solr-cloud/solrhome1/core1/conf -confname myconf
執行完此命令後,能夠進入zookeeper目錄中驗證一下是否成功。
在zookeeper1/bin目錄下執行 ./zkCli.sh 命令查看zookeeper上的配置文件信息
四. 啓動tomcat
新建一個文件,來一鍵啓動tomcat。
vim start-tomcat.sh
修改文件權限
chmod u+x start-tomcat.sh
而後執行 ./start-tomcat.sh 命令。
從這裏並不能直觀看到是否真的起來了。能夠經過查看日誌的方式,或者經過訪問的方式。
tail -f /usr/java/solr-cloud/tomcat1/logs/catalina.out
OK, 到這裏,終於能看到頁面了。在瀏覽器中打開:http://localhost:8180/solr/index.html#/
菜單上多出來了一個cloud目錄。
五.分片
http://127.0.0.1:8180/solr/admin/collections?action=CREATE&name=core2&numShards=2&replicationFactor=2
在瀏覽器中直接訪問以上地址.
若是報 org.apache.solr.handler.dataimport.DataImportHandler 錯誤, 則將 dataimport的jar包拷貝一份到tomcat/webapps/solr/WEB-INF/lib 中去.
這時候, 再刷新solr/index.html頁面看看
你會發現,在core1下面,又多出一個core, 且是分片的. 之前只有一個主solr, 如今有兩個主solr了.
core1如今咱們不須要了, 能夠刪除掉. 那怎麼刪呢?
http://127.0.0.1:8180/solr/admin/collections?action=DELETE&name=core1
也是經過瀏覽器直接訪問的方式.
再來看看index.html頁面
core1被刪除了.