企业级搜索引擎solr搭建

简介

Solr是一个基于Apache lucene高可用、可扩展、容错性强的企业级别的应用搜索服务,它提供分布式索引、副本、平衡查询负载、自动故障转移和恢复、中心化配置等特性。
它对外提供类似于Web-service的API接口,可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
官方地址

solr集群搭建

版本说明

本文根据业务场景,并没有使用最新的版本,相关版本:solr-4.6.1、zookeeper-3.4.6。

zk搭建

zookeeper集群搭建(3个实例)

  1. 下载zookeeper-3.4.5.tar.gz,并解压缩放在/home/server/sorlcloud/目录中,如果没有这个目录则创建。
  2. cp -r zookeeper-3.4.5 zookeeper-3.4.5-2181 #最后一个数为端口号
  3. cp -r zookeeper-3.4.5 zookeeper-3.4.5-2182
  4. cp -r zookeeper-3.4.5 zookeeper-3.4.5-2183
  5. 在每个对应的zookeeper目录中,创建data目录,并在data目录生成myid,写入值分别为1、2、3作为ID
  6. cp conf/zoo_sample.cfg conf/zoo.cfg,并修改配置文件,三个zookeeper除了data和clientPort不一样外,集群节点信息配置相同。
# The number of milliseconds of each tick  
tickTime=2000  
# The number of ticks that the initial   
# synchronization phase can take  
initLimit=10  
# The number of ticks that can pass between   
# sending a request and getting an acknowledgement  
syncLimit=5  
# the directory where the snapshot is stored.  
# do not use /tmp for storage, /tmp here is just   
# example sakes.  
# 修改对应的data路径  
dataDir=/home/server/zookeeper-3.4.5-2181/data  
# the port at which the clients will connect  
clientPort=2181  
#集群中节点信息,包括ID, IP, 投票和选取端口  
server.1=127.0.0.1:2881:3881  
server.2=127.0.0.1:2882:3882  
server.3=127.0.0.1:2883:3883  
#  
# Be sure to read the maintenance section of the   
# administrator guide before turning on autopurge.  
#  
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  
#  
# The number of snapshots to retain in dataDir  
#autopurge.snapRetainCount=3  
# Purge task interval in hours  
# Set to "0" to disable auto purge feature  
#autopurge.purgeInterval=1  
  1. 启动zookeeper,分别进入相应的目录中,运行bin/zkServer.sh start
  2. 分别检查每个zookeeper的状态,运行bin/zkServer.sh status,如果需要停止bin/zkServer.sh stop

二、solrcloud搭建

  1. 下载solr-4.6.1.tgz,并解压到sorlcloud,同样复制2个节点。
  2. cp -r solr-4.6.1 solr-4.6.1-8983
  3. cp -r solr-4.6.1 solr-4.6.1-8984
  4. 进入solr-4.6.1-8983/example/cloud-scripts/中,上传solr配置文件到zookeeper,使用如下命令
#zkhost指定zookeeper的集群的地址,多个用逗号分隔,同时可以指定子路径,只需要在其中一个上指定即可。
#solrhome必须指定,它是solr.xml文件所在目录,当然用户可以自行配置  
#configname指定上传的配置文件名  
./zkcli.sh -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/solr -cmd upconfig -confdir /home/server/solrcloud/solr-4.6.1-8983/example/solr -confname collection1  

这条命令最终会在zookeeper集群的/solr/configs目录中生成collection1配置文件,如果不指定zookeeper的子路径,默认在zookeeper的/configs目录中生成,这样很容易跟其它使用该zookeeper集群的配置冲突,建议带子路径上传。

  1. 在zookeeper中,使用bin/zkCli.sh连接上zookeeper,并使用zk的命令查看配置文件是否成功上传。
ls /solr/configs 正常可以看到上传的configname, 配置文件尽量不从其它地方导入zk,这样很容易出问题,后面会谈到。 
  1. 启动solr,根据solr的官方文档,solr有几种启动方式:1.solr默认支持使用jetty容器启动(配置最简单);2. 使用tomcat等其它容器启动;3.其它
    建议使用jetty启动,网上其它博客都是使用tomcat启动,配置繁琐,而且种jar包来回拷贝,很容易出错。建议一个脚本:
#!/bin/bash  
LOGHOME="/home/server/solr/"  
BASE_DIR=/home/server/solrcloud/solr-4.6.1-8983/example/solr  
JVM_ARGS="-Xmx2g -Xms2g -XX:MaxDirectMemorySize=5g -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="$2" -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -verbose:gc -Xloggc:"$LOGHOME"/gc.log -XX:CMSInitiatingOccupancyFraction=65 -XX:+UseCMSCompactAtFullCollection -XX:MaxTenuringThreshold=10  -XX:MaxPermSize=156M -XX:SurvivorRatio=3  -XX:NewRatio=2 -XX:+PrintGCDateStamps   -XX:+PrintGCDetails -XX:+UseParNewGC -XX:+UseConcMarkSweepGC"  
ZK_SERVERS="127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183/solr"  
ZK_TIMEOUT=10000  
SHARDS=1  #指定分片数目  
JETTY_PORT=$1  #从命令行获取端口号  
exec java $JVM_ARGS -Djetty.port=$1 -Dbootstrap_conf=true -DnumShards=$SHARDS -DzkHost=$ZK_SERVERS -DzkClientTimeout=$ZK_TIMEOUT -Dsolr.solr.home=$BASE_DIR -jar $BASE_DIR/start.jar 

执行./start.sh 8700 8701

  1. 接下来就可以访问http://localhost:8700/solr

你可能感兴趣的:(企业级搜索引擎solr搭建)