配置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.cfg:xml
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服务器
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中。