-#solr最小集群搭建
前言
最近公司想用solr集群,虽然以前没搭过也得试试,毕竟面向百度编程嘛。从最小集群开始
由于本人shell命令缺乏,习惯使用xshell与xftp
<!-- 本教程默认各位已经搭建完毕了单机版solr与zookeeper并成功运行 -->
<!-- 对于搭建单机版solr有疑问可以戳[这里](http://blog.csdn.net/x631617479/article/details/54232758%20%E8%BF%99%E9%87%8C) -->
<!-- 对于搭建zookeeper有疑问的百度去,有时间再写一份它的教程 -->
环境配置
- centos 7.x
- tomcat7
- solr 4.10.4
- zookeeper 3.4.6
搭建流程
1 复制出一份solr服务
没啥说的,就把之前的单机版solr复制一份改个名字即可
2 修改tomcat端口号
打开tomcat/conf/server.xml修改端口号为18901另一台为18902
3 修改web.xml
和搭建单机版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 的位置
另一台也如此
单机版能运行的可忽略此步
4 修改solr.xml
打开/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地址与端口号不要写错
5 修改catalina.sh
打开/tomcan/catalina.sh
找到参数 JAVA_OPTS 在空格后面添加
-DzkHost=192.168.1.155:2181
也就是zookeeper的ip地址:端口号
这样在启动时solr与zookeeper的关系就可以建立了
6 上传solrhome配置文件
在这里需要用到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的字典在里面无法上传,请注意
7 查看zookeeper中是否存在配置文件
进入/zookeeper-3.4.6/bin目录下执行
./zkCli.sh -server localhost:2181
看到
就进入了zookeeper配置区
执行语句ls /configs 就可以看到刚才上传的core_conf,至此配置就完成
8 启动两台solr服务器
根据我的经验,启动服务器时加载的配置文件是zookeeper下的,所以一定要保证zookeeper下的配置文件无误,如果更改了core中的配置,可用6中的方式再次上传
启动成功查看
一个问题
我的集群在插入数据时如果使用pojo类插入遇到BigDecimal格式的数据就会报错,根据资料没查到好的解决办法,官方论坛中也有此问题尚未解决