1. 程式人生 > >zookeeper+solr搭建叢集服務

zookeeper+solr搭建叢集服務

一。zookeeper(叢集管理(主從管理,負載均衡,高可用的管理),配置檔案的集中管理,)叢集搭建

  1. 將zookeeper上傳到伺服器。
  2. 將zookeeper解壓。
  3. 將zookeeper向/usr/local/solr-cloud目錄下複製三份。
  4. 配置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服務叢集

  1. 安裝四個tomcat,修改其埠號不能衝突。8080-8083。
  2. 向tomcat下部署solr。將單據版的solr專案複製到tomcat下即可。
  3. 為每個solr例項建立對應的solrhome.
  4. 為每個solr例項關聯對應的solehome.修改web.xml 實現
  5. 修改每個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>
  1. 使用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
  1. 使用zookeeper的zkcli.sh命令檢視是否上傳成功。
  2. 修改每個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();

    }