zookeeper+solr搭建叢集服務
阿新 • • 發佈:2019-02-15
一。zookeeper(叢集管理(主從管理,負載均衡,高可用的管理),配置檔案的集中管理,)叢集搭建
- 將zookeeper上傳到伺服器。
- 將zookeeper解壓。
- 將zookeeper向/usr/local/solr-cloud目錄下複製三份。
- 配置zookeeper。
4.1 在zookeeper01目錄下建立data資料夾。
4.2 在data目錄下建立一個myid的檔案。
4.3 修改myid檔案的內容為1(02對應2,03對應3)。
4.4 zookeeper02.03同樣設定。
4.5 進入conf檔案,把zoo_sample.cfg檔案更名為zoo.cfg.
4.6 修改zoo.cfg.將datadir的屬性指定為剛才建立的data資料夾。修改clientport指定的埠號為(01:2881;02:2882;03:2883)。新增如下內容:
server.1=192.168.1.111:2881:3881
server.2=192.168.1.111:2882:3882
server.3=192.168.1.111:2883:3883
5.啟動zookeeper .
進入zookeeper 的bin目錄,使用zkserver.sh啟動zookeeper服務。
./zkserver.sh start —-啟動服務
./zkserver.sh stop —–停止服務
./zkserver.sh status —檢視服務狀態
二。搭建solr服務叢集
- 安裝四個tomcat,修改其埠號不能衝突。8080-8083。
- 向tomcat下部署solr。將單據版的solr專案複製到tomcat下即可。
- 為每個solr例項建立對應的solrhome.
- 為每個solr例項關聯對應的solehome.修改web.xml 實現
- 修改每個solrhome下的solr.xml檔案。修改host,hostport屬性為對於的tomcat的ip及埠號。
<solr>
<solrcloud>
<str name="host">${host:192.168.1.111}</str>
<int name="hostPort">${jetty.port:8082}</int >
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:0}</int>
<int name="connTimeout">${connTimeout:0}</int>
</shardHandlerFactory>
</solr>
- 使用solr目錄下的example/scripts/cloud-scripts/zkcli.sh命令上傳配置檔案。在zookeeper叢集已經啟動模式下。
把/usr/local/solrhome01/collection1/conf目錄上傳到zookeeper。
需要zookeeper叢集已經啟動。
./zkcli.sh -zkhost 192.168.1.111:2181,192.168.1.111:2182,192.168.1.111:2183 -cmd upconfig -confdir /usr/local/solrhome01/collection1/conf -confname myconf
- 使用zookeeper的zkcli.sh命令檢視是否上傳成功。
- 修改每個tomcat下的catalina.sh檔案。告知solr例項zookeeper的位置。
JAVA_OPTS="-DzkHost=192.168.1.111:2181,192.168.1.111:2182,192.168.1.111:2183"
public void testSolrCloud() throws Exception {
//建立一個SolrServer物件
CloudSolrServer solrServer = new CloudSolrServer("192.168.1.111:2181,192.168.1.111:2182,192.168.1.111:2183");
//設定預設的collection
solrServer.setDefaultCollection("collection2");
//建立一個文件物件
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "test01");
document.addField("item_title", "title1");
//新增文件
solrServer.add(document);
//提交
solrServer.commit();
}