solr集群的搭建

Solr实例的搭建

第一步:创建4个tomcat实例,修改其端口。8080-8083

#解压并复制tomcat到集群文件夹中
[root@joker opt]# cp -r apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat1
[root@joker opt]# cp -r apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat2
[root@joker opt]# cp -r apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat3
[root@joker opt]# cp -r apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat4

#修改端口
[root@joker solrcloud]# vim tomcat2/conf/server.xml 
...

第二步:解压solr-4.10.3.tar.gz压缩包。从压缩包中复制solr.war到tomcat。

[root@joker opt]# cd solr-4.10.3/dist/
[root@joker dist]# cp solr-4.10.3.war /usr/local/solrcloud/tomcat1/webapps/solr.war

第三步:启动tomcat解压war包。把solr-4.10.3目录下example目录下的关于日志相关的jar包添加到solr工程中。

[root@joker webapps]# cd /usr/local/solrcloud/tomcat1/bin/
[root@joker bin]# ./startup.sh 
#关闭服务器删除war包
[root@joker bin]# ./shutdown.sh 
[root@joker bin]# cd ../webapps/
[root@joker webapps]# rm -rf solr.war 

[root@joker webapps]# cd /opt/solr-4.10.3/example/lib/ext/
[root@joker ext]# cp * /usr/local/solrcloud/tomcat1/webapps/solr/WEB-INF/lib/

第四步:创建solrhome。修改web.xml指定solrhome的位置。

[root@joker lib]# cd /opt/solr-4.10.3/example/
[root@joker example]# cp -r solr /usr/local/solrcloud/solrhome1
[root@joker example]# cp -r solr /usr/local/solrcloud/solrhome2
[root@joker example]# cp -r solr /usr/local/solrcloud/solrhome3
[root@joker example]# cp -r solr /usr/local/solrcloud/solrhome4

[root@joker example]# cd /usr/local/solrcloud/tomcat1/webapps/solr/WEB-INF/
[root@joker WEB-INF]# vim web.xml 
#大概45行的位置
<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/usr/local/solrcloud/solrhome1</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

第五步:启动测试没问题在把该solr复制到其他tomcat中并修改solrhome的位置

[root@joker bin]# cd /usr/local/solrcloud/tomcat1/webapps/
[root@joker webapps]# cp -r solr /usr/local/solrcloud/tomcat2/webapps/
[root@joker webapps]# cp -r solr /usr/local/solrcloud/tomcat3/webapps/
[root@joker webapps]# cp -r solr /usr/local/solrcloud/tomcat4/webapps/

参考:http://blog.youkuaiyun.com/qq_35641192/article/details/78385733
要配置业务字段:http://blog.youkuaiyun.com/qq_35641192/article/details/78430438
先配置好一个业务字段再复制三份,需要先配置业务字段再搭建集群环境

启动脚本:

vim startall.sh

#!/bin/bash
cd tomcat1/bin/
./startup.sh 
cd ../../
cd tomcat2/bin/
./startup.sh 
cd ../../
cd tomcat3/bin/
./startup.sh 
cd ../../
cd tomcat4/bin/
./startup.sh 
cd ../../

停止脚本:

vim shutdown.sh

#!/bin/bash
cd tomcat1/bin/
./shutdown.sh 
cd ../../
cd tomcat2/bin/
./shutdown.sh 
cd ../../
cd tomcat3/bin/
./shutdown.sh 
cd ../../
cd tomcat4/bin/
./shutdown.sh 
cd ../../

solr集群的搭建

第一步
把solrhome中的配置文件上传到zookeeper集群。使用zookeeper的客户端上传。
客户端命令位置:

[root@joker webapps]# cd /opt/solr-4.10.3/example/scripts/cloud-scripts/

./zkcli.sh -zkhost 192.168.25.132:2181,192.168.25.132:2182,192.168.25.132:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf

查看配置文件是否上传成功:

[root@joker cloud-scripts]# cd /usr/local/zkcloud/zookeeper1/bin/
[root@joker bin]# ./zkCli.sh 

[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper]
[zk: localhost:2181(CONNECTED) 1] ls /configs/myconf
[mapping-FoldToASCII.txt, currency.xml, protwords.txt, synonyms.txt, scripts.conf, stopwords.txt, _schema_analysis_synonyms_english.json, velocity, admin-extra.html, update-script.js, _schema_analysis_stopwords_english.json, solrconfig.xml, admin-extra.menu-top.html, elevate.xml, schema.xml, clustering, spellings.txt, xslt, _rest_managed.json, mapping-ISOLatin1Accent.txt, lang, admin-extra.menu-bottom.html]

第二步
修改solrhome下的solr.xml文件,指定当前实例运行的ip地址及端口号。

[root@joker bin]# cd /usr/local/solrcloud/solrhome1/
[root@joker solrhome1]# vim solr.xml 
#大概32行的位置
<solrcloud>
        <str name="host">${host:192.168.25.132}</str>
        <int name="hostPort">${jetty.port:8080}</int>
        <str name="hostContext">${hostContext:solr}</str>
        <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
        <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>

第三步
修改每一台solr的tomcat 的 bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:

[root@joker solrhome4]# cd /usr/local/solrcloud/tomcat1/bin/
[root@joker bin]# vim catalina.sh 
#237行左右加入
JAVA_OPTS="-DzkHost=192.168.25.132:2181,192.168.25.132:2182,192.168.25.132:2183"

(可以使用vim的查找功能查找到JAVA_OPTS的定义的位置,然后添加)

第四步
重新启动tomcat。
这里写图片描述
一个主节点多个备份节点,集群只有一片。

第五步
创建一个两片的collection,每片是一主一备。
使用以下命令创建:

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

这里写图片描述

这里写图片描述

第六步
删除collection1.

http://192.168.25.132:8080/solr/admin/collections?action=DELETE&name=collection1

这里写图片描述

这里写图片描述

测试:

package com.taotao.search;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrCloudTest {

    @Test
    public void testAddDocument() throws Exception {
        // 创建一个和solr集群的连接
        // 参数就是zookeeper的地址列表,使用逗号分隔
        String zkHost = "192.168.25.132:2181,192.168.25.132:2182,192.168.25.132:2183";
        CloudSolrServer solrServer = new CloudSolrServer(zkHost);
        // 设置默认的collection
        solrServer.setDefaultCollection("collection2");
        // 创建一个文档对象
        SolrInputDocument document = new SolrInputDocument();
        // 向文档中添加域
        document.addField("id", "test001");
        document.addField("item_title", "测试商品");
        // 把文档添加到索引库
        solrServer.add(document);
        // 提交
        solrServer.commit();
    }

    @Test
    public void deleteDocument() throws SolrServerException, IOException {
        // 创建一个和solr集群的连接
        // 参数就是zookeeper的地址列表,使用逗号分隔
        String zkHost = "192.168.25.132:2181,192.168.25.132:2182,192.168.25.132:2183";
        CloudSolrServer solrServer = new CloudSolrServer(zkHost);
        // 设置默认的collection
        solrServer.setDefaultCollection("collection2");

        solrServer.deleteByQuery("*:*");
        solrServer.commit();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值