• 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()后看查看到

  • 相关阅读:
    链表首尾节点的常规方案
    MYSQL 学习
    卡尔曼滤波
    降维技术
    Hurst指数python实现
    一维GMM的Python代码实现
    对数周期幂率模型(LPPL)
    paper 112:hellinger distance
    paper 111:图像分类物体目标检测 from RCNN to YOLO
    paper 110:凸优化和非凸优化
  • 原文地址:https://www.cnblogs.com/honger/p/5919411.html
Copyright © 2020-2023  润新知