solr集群


一、所需環境

1、linux系統(內存分大點)

2、JDK

3、zookeeper

4、solr

二、安裝zookeeper

1、此次安裝3個zookeeper

2、tar -zxf zookeeper-3.4.6.tar.gz

3、/usr/local/目錄下創建一個solrcloud目錄。把zookeeper解壓后的文件夾復制到此目錄下三份。分別命名為zookeeper12、zookeeper3

4、

[root@bogon ~]# mkdir /usr/local/solrcloud

 

[root@bogon ~]# mv zookeeper-3.4.6 /usr/local/solrcloud/zookeeper1

 

[root@bogon ~]# cd /usr/local/solrcloud

 

[root@bogon solrcloud]# ll

 

[root@bogon solrcloud]# cp -r zookeeper1 zookeeper2

 

[root@bogon solrcloud]# cp -r zookeeper1  zookeeper3

5、在每個zookeeper文件夾下創建一個data目錄,並在data文件夾下創建一個文件名稱為myid,文件的內容就是此zookeeper的編號123。

 

[root@bogon data]# echo 1 >> myid

 

[root@bogon data]# cat myid

 

1

 

6、zookeeper23文件夾下分別創建data目錄和myid文件

 

[root@bogon solrcloud]# mkdir zookeeper2/data

 

[root@bogon solrcloud]# echo 2 >> zookeeper2/data/myid

 

[root@bogon solrcloud]# cat zookeeper2/data/myid

 

2

 

[root@bogon solrcloud]# mkdir zookeeper3/data         

 

[root@bogon solrcloud]# echo 3 >> zookeeper3/data/myid 

 

7、zookeeper1conf目錄下的zoo_sample.cfg文件復制一份改名為zoo.cfg

8、修改zoo.cfg的配置,其他的zookeeper的clientport遞增1,反正不同就可以。

 

9、啟動zookeeper./zkServer.sh start

關閉:./zkServer.sh stop

查看狀態:./zkServer.sh status,其中的follower表示從節點,leader是主節點

[root@bogon solrcloud]# zookeeper1/bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/solrcloud/zookeeper1/bin/../conf/zoo.cfg

Mode: follower

[root@bogon solrcloud]# zookeeper2/bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/solrcloud/zookeeper2/bin/../conf/zoo.cfg

Mode: leader

[root@bogon solrcloud]# zookeeper3/bin/zkServer.sh status

JMX enabled by default

Using config: /usr/local/solrcloud/zookeeper3/bin/../conf/zoo.cfg

Mode: follower

 

10、建立四個tomcat,端口改為8080~8083,每個tomcat都配置好solr,也就是四個solr,solr的配置請參考http://www.cnblogs.com/honger/p/5876289.html,最后目錄的結構是這樣的

 

11、solrhome中的配置文件上傳到zookeeper集群。使用solr里的zookeeper的客戶端上傳。這個客戶端的位置在solr解壓后的solr-6.2.0/server/scripts/cloud-scripts/里的一個叫zkcli.sh的sell腳本

12、在solr-6.2.0/server/scripts/cloud-scripts/目錄下執行(注意,此時的zookeeper應當已經啟動)./zkcli.sh -zkhost 192.168.243.128:2181,192.168.243.128:2182,192.168.243.128:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf

 13、查看配置文件是否上傳成功,先進入zookeeper1的bin文件夾使用以下命令:

[root@bogon bin]# ./zkCli.sh

Connecting to localhost:2181

[zk: localhost:2181(CONNECTED) 0] ls /

[configs, zookeeper]

[zk: localhost:2181(CONNECTED) 1] ls /configs

[myconf]

[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf

[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]

[zk: localhost:2181(CONNECTED) 3]

如果可以看到solr的配置文件在,那就說明上傳成功了。

14、修改每個solrhome下的solr.xml文件,指定當前實例運行的ip地址及端口號8080~8083。

 

 15、修改每一台solrtomcat bin目錄下catalina.sh文件中加入DzkHost指定zookeeper服務器地址: 

JAVA_OPTS="-DzkHost=192.168.243.128:2181,192.168.243.128:2182,192.168.243.128:2183"

 JAVA_OPTS使用vim編輯器的查找功能找到修改。

16、啟動所有的tomcat,訪問其中一台tomcat,只有一片集群

 

17、變成多片集群,在你的瀏覽器中訪問

http://192.168.243.128:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

 

 

18、刪除collection1,在瀏覽器中輸入

http://192.168.243.128:8080/solr/admin/collections?action=DELETE&name=collection1,出現success表示成功。

 

 

三、使用java代碼訪問solr集群。

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrCloudTest {

    @Test
    public void test1() throws Exception {
        // 使用zookeeper的地址訪問
        String zkHost = "192.168.243.128:2181,192.168.243.128:2182,192.168.243.128:2183";
        // 創建集群客戶端
        CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build();
        // 設置默認的索引庫
        cloudSolrClient.setDefaultCollection("collection2");
        // 設置document
        SolrInputDocument document = new SolrInputDocument();
        // 創建這個document的結構
        document.addField("id", "test001");
        document.addField("name", "test");
        // 添加內容
        cloudSolrClient.add(document);
        // 提交
        cloudSolrClient.commit();
    }

    @Test
    public void delDocument() throws Exception {
        // 使用zookeeper的地址訪問
        String zkHost = "192.168.243.128:2181,192.168.243.128:2182,192.168.243.128:2183";
        
        CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build();
    
        cloudSolrClient.setDefaultCollection("collection2");
        
        cloudSolrClient.deleteByQuery("*:*");
        
        cloudSolrClient.commit();
        
    }
    
    @Test
    public void query() throws Exception {
        // 使用zookeeper的地址訪問
        String zkHost = "192.168.243.128:2181,192.168.243.128:2182,192.168.243.128:2183";
        
        CloudSolrClient cloudSolrClient = new CloudSolrClient.Builder().withZkHost(zkHost).build();
    
        cloudSolrClient.setDefaultCollection("collection2");
        
        SolrQuery query = new SolrQuery();
        
        query.setQuery("*:*");
        
        QueryResponse queryResponse = cloudSolrClient.query(query);
        
        SolrDocumentList list = queryResponse.getResults();
        
        for (SolrDocument solrDocument : list) {
            String name = (String) solrDocument.get("name");
            System.out.println(name);
        }
        
        
        cloudSolrClient.commit();
        
    }

}

運行test1()后看查看到

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM