您的位置:首页 > 运维架构 > Tomcat

部署基于tomcat 8 的solrCloud 5.5集群

2017-08-02 14:29 666 查看

部署基于tomcat 8 的solrCloud 5.5集群

@(OTHERS)[solr]

部署基于tomcat 8 的solrCloud 55集群
一版本及准备工作

二准备solr相关webapp内容并复制至tomcat

三准备配置文件并上传至zk
注意这里使用了managed-schema而不是schemaxml之后再分析

四准备solr的索引数据目录及配置

五配置tomcat并启动
有个小问题如果上面的URL不加上indexhtml则加载不成功看哪里的设置把默认加载index的配置去掉了这会不会影响索引等下试一下

六添加其它节点

七创建core

八使用API索引与搜索
1索引

2索引

九zk中的内容

十创建新的core

(一)版本及准备工作

1、下载并解压tomcat, solr至目录/home/hadoop/tomcat, /home/hadoop/solr

其中版本为:

solr-5.5.2
tomcat-8.5.4


(二)准备solr相关webapp内容,并复制至tomcat

1、将/home/hadoop/solr-5.5.2/server/lib/ext/*中的jar包复制到/home/hadoop/solr-5.5.2/server/solr-webapp/webapp/WEB-INF/lib,主要是slf4j与log4j相关的jar包,tomcat加载solr时要用到这些jar包。

cp /home/hadoop/solr-5.5.2/server/lib/ext/* /home/hadoop/solr-5.5.2/server/solr-webapp/webapp/WEB-INF/lib


2、将上述solr webapp整个目录复制到tomcat/webapps中,并重命名为solr

cp -r /home/hadoop/solr-5.5.2/server/solr-webapp/webapp /home/hadoop/tomcat-8.5.4/webapps/solr


(三)准备配置文件并上传至zk

1、准备一个collection配置文件

一个collection需要至少schema.xml与solrconfig 2份配置文件,除此以外还有一些stopword,同义词等配置文件。我们使用官方提供的基本配置basic_configs

mkdir /home/hadoop/solr-5.5.2/conf
cp -r /home/hadoop/solr-5.5.2/server/solr/configsets/basic_configs/conf /home/hadoop/solr-5.5.2/conf/basic_configs


注意这里使用了managed-schema,而不是schema.xml。之后再分析。

2、将配置文件上传至zk

java -classpath .:/home/hadoop/tomcat-8.5.4/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55 -confdir /home/hadoop/solr-5.5.2/conf/basic_configs -confname basic_configs


然后再到zk中检查配置是否成功上传。

(四)准备solr的索引数据目录及配置

1、创建用于保存索引文件的目录

mkdir /disk1/solr55/data/solr-core
chown -R hadoop:hadoop /disk1/solr55


注意这个目录的权限。

2、将solr.xml复制到上述目录

cp /home/hadoop/solr-5.5.2/server/solr/solr.xml /disk1/solr55/data/solr-core/


3、 修改solr.xml,修改hostPort和Tomcat端口一致

<int name="hostPort">8080</int>


(五)配置tomcat并启动

1、在tomca/conf目录下创建Catalina/localhost目录

mkdir -p /home/hadoop/tomcat-8.5.4/conf/Catalina/localhost


2、在上述目录中创建solr.xml,此为Solr/home的配置文件。

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/home/hadoop/tomcat-8.5.4/webapps/solr" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/disk1/solr55/data/solr-core/" override="true"/>
</Context>


3、修改bin/catalina.sh中的JAVA_OPTS变量,加上zk的配置:

JAVA_OPTS="$JAVA_OPTS -DzkHost=10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55"


4、启动tomcat

bin/startup.sh


注意先为几个脚本加上权限:

chmod +x startup.sh shutdown.sh  catalina.sh


5、验证UI

http://10.120.69.104:8080/solr/index.html

有个小问题:如果上面的URL不加上index.html则加载不成功,看哪里的设置把默认加载index的配置去掉了。这会不会影响索引,等下试一下。

6、建一个测试collection验证功能

因为目前只有一台机器,所以只能建一个shard, 一个副本了。

配置文件使用上面的basic_configs

curl 'http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection_1&numShards=1&replicationFactor=1&collection.configName=basic_configs'


然后在UI上查看是否已经创建成功。

(六)添加其它节点

1、将/home/hadoop/solr-5.5.2、/home/hadoop/tomcat-8.5.4与/disk1/solr55/data/ 三个目录复制到其它机器相同的目录中。

2、启动tomcat

(七)创建core

curl ‘http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection_2&numShards=2&replicationFactor=2&collection.configName=basic_configs

创建的2个core分别如下图:

(八)使用API索引与搜索

1、索引

public class IndexDemo {

private static final String DEFAULT_COLLECTION = "collection4";
//private static final String SOLR_ZK = "10.120.69.101:2181/solr";
private static final String SOLR_ZK = "10.120.69.101:2181/solr55";

public static void main(String[] args) throws SolrServerException, IOException {

SolrInputDocument doc = new SolrInputDocument();// 实例化索引Doc
doc.addField("id", "index_demo");// 添加主键
//doc.addField("qualifier_col", "valuedemo");// 添加主键
CloudSolrClient client = new CloudSolrClient(SOLR_ZK);// cloud模式
client.setDefaultCollection(DEFAULT_COLLECTION);
client.add(doc);
//client.add("collection1", doc);
client.commit();
client.close();

}

}


2、索引

public class QueryDemo {

private static final String DEFAULT_COLLECTION = "collection4";
private static final String SOLR_ZK = "10.120.69.101:2181/solr55";
//  private static final String SOLR_ZK = "10.120.69.101:2181/solr";

public static void main(String[] args) throws SolrServerException, IOException {
try (CloudSolrClient client = new CloudSolrClient(SOLR_ZK);) {// cloud模式
//根据id查doc
SolrDocument doc = client.getById(DEFAULT_COLLECTION, "index_demo");
if(null != doc){

for (String field : doc.getFieldNames()) {
System.out.println(field + " : " + doc.getFieldValues(field));
}
}

//根据field查doc
SolrQuery query = new SolrQuery();
//query.setQuery(mQueryString);
query.setRequestHandler("/query");
//          query.set("q", "qualifier_col:valuedemo");//返回index_demo
//          query.set("q", "qualifier_col:valuedemo OR id:index_demo2");//返回index_demo
//          query.set("q", "qualifier_col:valuedemo AND id:index_demo2");//返回空
//          query.set("q", "qualifier_col:valuede*");//返回index_demo
QueryResponse response = client.query(DEFAULT_COLLECTION, query);
for(SolrDocument doc2 :response.getResults()){
System.out.println(doc2.getFieldValue("id"));
}
}

}

}


(九)zk中的内容

[zk: 10.120.69.101(CONNECTED) 16] get /solr5/
configs             clusterstate.json   aliases.json        live_nodes          overseer            overseer_elect      collections


通过命令上传的配置文件都在configs目录中,collections中是各个collection的信息。

其它目录的详细信息以后再分析。

(十)创建新的core

1、准备配置文件

2、上传至zk

java -classpath .:/home/hadoop/tomcat-8.5.4/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 10.120.69.101:2181,10.120.69.100:2181,10.120.69.102:2181/solr55 -confdir /home/hadoop/solr/myconf/ -confname myconf


3、创建core

curl 'http://10.120.69.104:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=1&collection.configName=myconf'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat solr 集群 solrcloud