solr版本:4.5.1
当前我使用三台服务器搭建集群分别是192.168.0.18、192.168.0.19、192.168.0.20,其中18为主服务器,19、20为从服务器,并且在20服务器安装zookeeper
一、在tomcat7中部署solr4
1、首先从官网下载solr4.5.1版本到三台服务器
2、tar -zxvf solr-4.5.1.tgz (解压solr)
3、cd solr-4.3.1(进入solr文件夹)
4、mkdir /home/solr (在home目录下面创建solr文件夹,我的tomcat也是安装在home目录下)
5、复制solr-4.5.1/example/solr 目录下的collection1目录和solr.xml、zoo.cfg到/home/solr目录下
6、到这里,需要用到solr的war包。在solr-4.5.1/dist/ 下有 solr-4.5.1.war包将其更改名称为solr.war,接下来两种方法可以任选其一,因为solr4中将日志的jar包单独分离出来放到了solr-4.5.1/example/lib/ext目录下。所以在部署的时候需要将这些jar包加进去,加进去的方法有两种:
(a)将solr.war更改后缀名为solr.zip,解压后名称为solr将solr-4.5.1/example/lib/ext下的五个日志包放到solr/WEB-INF/lib目录下,重新打包成war文件。
(b)不用更改solr.war,直接将五个日志包放到tomcat的lib目录下
我比较倾向于第一种
7、将solr.war复制到 /home/solr目录
8、创建tomcat/conf/Catalina/localhost/solr.xml 文件,文件内容(如果目录没有也可以创建):
<Context docBase="/home/solr/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/home/solr" override="true" />
</Context>
9、启动tomcat
10、输入http://127.0.0.1:8080/solr 如果可以正常看到solr 的目录。则表示正确部署。在firfox下打开此目录solr4的js对IE的支持不好。
二、安装zookeeper
11、官网下载zookeeper http://www.apache.org/dyn/closer.cgi/zookeeper/ 本人使用 zookeeper-3.4.5 将其安装在20服务器上
12、tar -zxvf zookeeper-3.4.5.tar 解压zookeeper
13、mkdir /home/zookeeper/data 创建zookeeper数据存放目录
14、cd /home/zookeeper-3.4.5/conf 进入解压后的zookeeper目录
15、 vim zoo.cfg 修改zookeeper配置文件 内容如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data (此目录用于指定zookeeper数据存放目录。就是刚刚创建的那个目录)
clientPort=2181
16、修改完成后启动zookeeper 进入bin目录
sudo zkServer.sh start
三、配置solr集群
17、先配置主服务器192.168.1.18
vim /home/tomcat/bin/catalina.sh 在图片所示位置加入以下代码
JAVA_OPTS="$JAVA_OPTS -Dbootstrap_confdir=/home/www/sfbest/solr/collection1/conf -Dcollection.configName=myconf -DzkHost=192.168.1.20:2181 -DnumShards=3"
注:其中DzkHost是用来指定zookeeper服务器的ip和端口。Dnumshareds用来指定当前集群中分片数 confdir目录指定所有的索引库都从collection1索引库中同步字段
18、配置从服务器 19 和20
vim /home/tomcat/bin/catalina.sh 在和上图同样的位置加入
JAVA_OPTS="-DzkHost=10.103.14.20:2181"
19、保存后,依次启动tomcat服务器 在firfox中输入网址
http://192.168.1.18:8080/solr 看到以下界面即说明集群搭建成功,此图片中我添加了多个索引库。所以显示多个。正常情况下显示一个collection1即表示正常
20、写入后使用界面进行数据查询得到以下数据说明数据正常
补充点:
修改solr.xml
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">7080</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:15000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<str name="zkHost">hadoop.datanode3.com:4181</str>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:0}</int>
<int name="connTimeout">${connTimeout:0}</int>
</shardHandlerFactory>
</solr>
官网参考:
http://wiki.apache.org/solr/SolrCloudTomcat(在tomcat下搭建solr集群)
http://wiki.apache.org/solr/SolrTomcat(在tomcat下搭建solr)