配置Solr集群

配置Solr服务器集群java

本文所讲的Solr集群服务器是基于 Tomcat7 + Zookeeper3.4.6 + Solr4.6apache

部署Zookeepertomcat

(1)下载Zookeeper3.4.6服务器

下载地址为 http://www.apache.org/dyn/closer.cgi/zookeeper/socket

(2)解压Zookeeper3.4.6 .tar.gz到文件夹中待用spa

(3)打开conf文件夹,新建文件zoo.cfg(也能够重命名zoo_sample.cfg)server

(4)修改zoo.cfgxml

tickTime=2000对象

initLimit=10部署

syncLimit=5

dataDir=D:\\tmp\\zookeeper\\server1\\data

clientPort=2181

 

server.1=127.0.0.1:2888:3888

server.2=127.0.0.1:2889:3889

server.3=127.0.0.1:2890:3890

在此示例文件中,咱们部署了三分Zookeeper服务器,数据文件分别定位到

D:\\tmp\\zookeeper\\server1

 

D:\\tmp\\zookeeper\\server2

 

D:\\tmp\\zookeeper\\server3

其中的server.x中的x为服务器myid(myid随后说在哪里定义),后面的127.0.0.1:2888:3888分别对应与2181

例如,服务器A的clientPort为2181,则对应的地址为127.0.0.1:2888:3888

服务器B的clientPort为2182,则对应的地址应该为127.0.0.1:2889:3889

服务器配置文件                      dataDir                                  clientPort

 

server_1/conf/zoo.cfg               D:\\tmp\\zookeeper\\server1              2181

 

server_2/conf/zoo.cfg               D:\\tmp\\zookeeper\\server2              2182

server_3/conf/zoo.cfg               D:\\tmp\\zookeeper\\server3              2183

(4):接下来咱们该说说myid的问题了

上述文件中咱们定义了一个 dataDir 地址,此地址是程序存放数据用的地址,在此地址中,咱们定义一个myid文件,用记事本打开,写入1,则此项目的Myid为1

分别将三个服务器按照123进行排列写入myid文件

(5):依次启动Zookeeper服务器(链接第一台时有异常信息,不用管,等都链接起来就没有异常了)

部署Solr

按照Solr单机版的部署方式,部署三台Solr单机版服务器,并去掉其中的全部connection

配置Solr和Zookeeper关联

1:假设以前部署好的Zookeeper地址为:

127.0.0.1:2181

127.0.0.1:2182

127.0.0.1:2183

2:部署好的三个solr服务器配置分别为

solr服务器                         tomcat端口                           solrhome

 

solr1                               8081                                SolrCloud\data\solrhome1

 

solr2                               8082                                SolrCloud\data\solrhome2

 

solr3                               8083                                SolrCloud\data\solrhome3

3:打开solrhome1下的solr.xml,并修改内容:

<?xml version="1.0" encoding="UTF-8" ?>
<solr>
  <solrcloud>
      <str name="host">${host:}</str>
      <int name="hostPort">8080</int>
      <str name="hostContext">${hostContext:solr}</str>
      <int name="zkClientTimeout">
          ${zkClientTimeout:15000}
</int>
      <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
      <str name="zkHost">127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183</str>
  </solrcloud>
 
  <shardHandlerFactory name="shardHandlerFactory"
         class="HttpShardHandlerFactory">
      <int name="socketTimeout">${socketTimeout:0}</int>
      <int name="connTimeout">${connTimeout:0}</int>
  </shardHandlerFactory>
</solr>

 

其中hostPort为该服务器的tomcat端口

zkHost为Zookeeper的三个服务器地址用逗号链接起来。

依次启动三个solr服务器,并访问任意一个solr,出现下图页面,即说明配置集群服务成功。

在Zookeeper 中上传Solr的connection配置文件

1:复制相应的Solr的配置文件(例如:Solr\example\solr\collection1\conf)到指定地址

2:复制Solr\example\lib\ext\*.jar 和 war包中的全部lib中的全部jar包到一个文件夹中。

3:执行命令

java -classpath D:\\uploadCloud\\ClientLib\\* org.apache.solr.cloud.ZkCLI -cmd

upconfig -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -confdir

D:\\uploadCloud\\conf -confname myconf

该命令是使用了以前复制的jar包中的ZkCLI程序进行一个指定文件夹的 upconfig 工做

4:执行命令

java -classpath D:\\uploadCloud\\ClientLib\\* org.apache.solr.cloud.ZkCLI -cmd

linkconfig -collection collection -confname myconf -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

该命令是将刚刚上传的配置文件命名为一个collection对象

建立connection实例

访问刚刚配置的solr服务器

http://127.0.0.1:8081/solr/admin/collections?action=CREATE&name=collection1&numShards=3&replicationFactor=3&maxShardsPerNode=3

name:collection的名称

numShards:指定分片数量(slices)

replicationFactor:副本数量

maxShardsPerNode:默认值为1,注意三个数值:numShards、replicationFactor、liveSolrNode,一个正常的solrCloud集群不允许同一个liveSolrNode上部署同一个shard的多个replic,所以当maxShardsPerNode=1时,numShards*replicationFactor>liveSolrNode时,报错。所以正确时因知足如下条件: numShards*replicationFactor<liveSolrNode*maxShardsPerNode

createNodeSet

collection.configName:指定该collection使用那份config,这份config必须存在于zk中。

相关文章
相关标签/搜索