solr集群配置中遇到的问题及说明
参数说明:#######################################zoo.cfg的配置######################################################## # 心跳检查的时间 2秒 zookeeper中使用的基本时间单位, 毫秒值 tickTime=2000 # 初始化时 连接到服务器端的间隔次数
·
参数说明:
#######################################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配置还是有问题
#######################################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配置还是有问题
更多推荐
已为社区贡献7条内容
所有评论(0)