-#solr最小集群搭建
没啥说的,就把之前的单机版solr复制一份改个名字即可
打开tomcat/conf/server.xml修改端口号为18901另一台为18902
和搭建单机版solr时一样,修改/tomcat/wtwebapps/solr/WEB-INF/web.xml 将其中
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/tomcat7/solr-tomcat/wtwebapps/solr_home</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>env-entry-value的值设置为solrHome的路径目的是问了让solr服务器可以找到solrhome 的位置 另一台也如此 单机版能运行的可忽略此步
打开/solrhome/solr.xml修改其中
<solrcloud> <str name="host">此处填写当前solrhome对应的服务器ip地址</str> <int name="hostPort">端口号</int> <str name="hostContext">${hostContext:solr}</str> <int name="zkClientTimeout">${zkClientTimeout:30000}</int> <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool> </solrcloud>两台均如此修改,注意ip地址与端口号不要写错
打开/tomcan/catalina.sh 找到参数 JAVA_OPTS 在空格后面添加 -DzkHost=192.168.1.155:2181 也就是zookeeper的ip地址:端口号 这样在启动时solr与zookeeper的关系就可以建立了
在这里需要用到solr官网下载来的一个插件,查了很多教程都没有告知上传到zookeeper的脚本的由来,文件在文末给出 进入目录solr-4.10.3/example/scripts/cloud-scripts/ 执行脚本 ./zkcli.sh -zkhost zookeeperIP:port -cmd upconfig -confdir solrHome_path/core1/conf -confname core_name 这里应该解释一下,也是我踩得坑。在-confdir 后面跟的solrhome中core的conf路径,并且在-confname后面跟的是core的名字 这里如果出错在启动solr的时候会报找不到配置文件 如果有多个core要一一执行脚本上传,两台服务器只需上传其中一台的配置即可,主从是一致的
如果要更换zookeeper的一份配置文件只需重新上传,文件名一致即可
如果要删除zookeeper中的solr配置文件需要删除以下文件 - clusterstate.json - aliases.json - live_nodes - overseer - overseer_elect - collections - configs文件夹下的所有配置
这个脚本上传好像在遇到大文件时会报错,之前有一个3M的字典在里面无法上传,请注意
进入/zookeeper-3.4.6/bin目录下执行 ./zkCli.sh -server localhost:2181 看到 就进入了zookeeper配置区
执行语句ls /configs 就可以看到刚才上传的core_conf,至此配置就完成
根据我的经验,启动服务器时加载的配置文件是zookeeper下的,所以一定要保证zookeeper下的配置文件无误,如果更改了core中的配置,可用6中的方式再次上传
启动成功查看
我的集群在插入数据时如果使用pojo类插入遇到BigDecimal格式的数据就会报错,根据资料没查到好的解决办法,官方论坛中也有此问题尚未解决