原文地址,转载请注明出处:http://blog.csdn.net/qq_34021712/article/details/71079911 ©王赛超
solr单机版搭建:http://blog.csdn.net/qq_34021712/article/details/70596602
zookeeper集群搭建:http://blog.csdn.net/qq_34021712/article/details/70843131
1.在usr/local目录下创建solr-cloud文件夹
2.将之前搭建单机solr中的tomcat复制四份到到solr-cloud目录下,如果是在同一个服务器下,修改其端口号避免冲突,主要是修改以下几个地方,让它们都加1就行
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
3.将之前搭建单机solr中的solrhome复制四份到solr-cloud文件夹目录下,然后修改上面每一个tomcat中solr项目的web.xml关联对应的solrhome
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-cloud/solrhome01</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
4.修改每一个solrhome下的solr.xml文件。修改host、hostPort两个属性。分别是对应的tomcat的ip及端口号。
#把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper。需要zookeeper集群已经启动。
./zkcli.sh -zkhost 192.168.17.168:2181,192.168.17.168:2182,192.168.17.168:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
在使用zkcli.sh时报./zkcli.sh: line 13: unzip: command not found
Error: Could not find or load main class org.apache.solr.cloud.ZkCLI错误,进入solr解压缩目录solr-4.10.3/example下运行
java -jar start.jar命令
6.使用zookeeper的zkCli.sh命令查看是否上传成功
7.告诉solr实例zookeeper的位置。需要修改tomcat的catalina.sh添加以下内容
#每个tomcat节点都需要添加
JAVA_OPTS="-DzkHost=192.168.17.168:2181,192.168.17.168:2182,192.168.17.168:2183"
8.启动每个solr实例。
9.将集群分为两片,每片两个副本。在浏览器访问solr服务的地址后面加上这些参数
http://192.168.17.168:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2
10删除不用的collection1
http://192.168.17.168:8080/solr/admin/collections?action=DELETE&name=collection1
11.Solrj测试
@Test
public void testSolrClout() throws Exception {
//创建一个SolrServer对象
CloudSolrServer solrServer = new CloudSolrServer("192.168.17.168:2181,192.168.17.168:2182,192.168.17.168:2183");
//设置默认的collection,上面已经分片,并且把collection1删除了,所以这里链接collection2
solrServer.setDefaultCollection("collection2");
//创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "1");
document.addField("name", "张三");
//添加文档
solrServer.add(document);
//提交
solrServer.commit();
}
12.在Spring中集群的配置
<!-- 集群版 -->
<bean id="cloudSolrServer" class="org.apache.solr.client.solrj.impl.CloudSolrServer">
<constructor-arg name="zkHost" value="192.168.17.168:2181,192.168.17.168:2182,192.168.17.168:2183"/>
<property name="defaultCollection" value="collection2"></property>
</bean>