参数说明:
#######################################zoo.cfg的配置########################################################  


# 心跳检查的时间 2秒 zookeeper中使用的基本时间单位, 毫秒值 
tickTime=2000  


# 初始化时 连接到服务器端的间隔次数,总时间10*2=20秒
#zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower。
#initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 
#此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
initLimit=10  


# ZK Leader 和follower 之间通讯的次数,总时间5*2=10秒   
#该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 
#此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms
syncLimit=5  


# 存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。  
dataDir=F:\\zk\\tmp\\zookeeper  


# 错误日志的存放位置  
dataLogDir=F:\\zk\\logs\\zookeeper  


# ZK 服务器端的监听端口
#多个zookeeper服务器都安装在同一个服务器上,需保证clientPort不相同
clientPort=2181  


# 伪集群   
#2887 是server 之间通讯的,3887 是应用程序通讯的  
# 同时加入其他两个服务的地址和端口信息  
#server.X=A:B:C 其中X是一个数字, 表示这是第几号server. 
#A是该server所在的IP地址. 
#B配置该server和集群中的leader交换消息所使用的端口. 
#C配置选举leader时所使用的端口. 
#由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.
server.1=127.0.0.1:2887:3887   
server.2=127.0.0.1:2888:3888   
server.3=127.0.0.1:2889:3889 


#######################################tomcat的catalina.bat的配置###########################################


参数说明:
-DzkRun  在Solr中启动一个内嵌的zooKeeper服务器,该服务会管理集群的相关配置。单机版(测试)使用,如果是集群,用下面的-DzkHost来替换,含义一样
例如:
JAVA_OPTS="$JAVA_OPTS -DzkRun  -Dbootstrap_conf=true -DnumShards=2"


-DzkHost 跟上面参数的含义一样,允许配置一个ip和端口来指定用那个zookeeper服务器进行协调
例如:
JAVA_OPTS = "$JAVA_OPTS 
-DzkHost=192.168.56.11:2181,192.168.56.12:2181,192.168.56.13:2181
-Dbootstrap_conf=true
-DnumShards=2"


-Dbootstrap_confdir  zooKeeper需要准备一份集群配置的副本,所以这个参数是告诉SolrCloud这些配置是放在哪里,同时作为整个集群共用的配置文件


-Dcollection.configName 是在指定你的配置文件上传到zookeeper后的名字,建议和你所上传的核心名字一致,这样容易识别,当然你也可以在满足规范的情况下自己起名


-bootstrap_conf=true将会上传solr/home里面的所有数据到zookeeper的home/data目录,也就是所有的core将被集群管理


-DnumShards=2 配置你要把你的数据分开到多少个shard中


-Djetty.port =8080 这个端口跟你所在端口保持一致,这个就是jetty的监听端口,实现集群之间进行通信的,如果这个端口不这样配置,那么就是搜索不到数据
当然这个参数也可以再solr/home/solr.xml下面配置:如下所示
<solrcloud>
    <str name="host">${host:}</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>
默认是8983,如果在catalina.sh中指定了,会覆盖上图solr.xml中配置的


注意:
-DnumShards, -Dbootstrap_confdir和-Dcollection.configName参数只需要在第一次将Solr运行在SolrCloud模式的时候声明一次。
它们可以把你的配置加载到zooKeeper中;
如果你在日后重新声明了这些参数重新运行了一次,将会重新加载你的配置,这样你在原来配置上所做的一些修改操作可能会被覆盖。
所以官方推荐只在第一个tomcat里面加入这几个参数,其他集群的tomcat里面不加,启动的第一个Solr的端口号,它是你的SolrCloud集群的overseer节点






************************************************************************************************************
概念说明:
zookeeper 伪集群
上面例子我们看到,如果我们的监控室也停电了,那不是就监测不到KTV情况了?一般情况下,zk 也是作为分布式部署了,也就是有多台监控,
由于监控多了,肯定要有一定为准(比如直播会有一些延迟),就要涉及到选举的算法,这里暂时不介绍。
先搭建一个伪集群,因为机器不够,只能再一台机器上模拟搭建,整个过程无非是将上面的一些配置copy 几份,然后配置不同的 地址和端口就行。


SolrCloud 是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。


它有几个特色功能:


1)集中式的配置信息


2)自动容错


3)近实时搜索


4)查询时自动负载均衡


************************************************************************************************************
注意事项:
如果集群中节点的ip地址变更后,会遇到在管理页面的cloud中,ip还有以前的ip,状态是gone,这个时候需要把zookeeper中的一些数据删除掉


************************************************************************************************************
问题1:


<lst name="responseHeader">
  <int name="status">503</int>
  <int name="QTime">78</int>
  <lst name="params">
    <str name="indent">true</str>
    <str name="q">*:*</str>
    <str name="_">1438759262278</str>
    <str name="wt">xml</str>
  </lst>
</lst>
<lst name="error">
  <str name="msg">no servers hosting shard: </str>
  <int name="code">503</int>
</lst>
</response>


问题2.
no registered leader was found after waiting for 4000ms


问题3.
NumberFormatException:forInputString:"java.math.BigDecimal:2"




目前多个zookeeper配置已经成功,单个zookeeper配置还是有问题

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐