solr solrcloud 检索 搜索 zookeeper 分布式 部署

来源:互联网 发布:单片机数码管计算器 编辑:程序博客网 时间:2024/05/01 04:38
第一步:部署zookeeper 集群
以一台机器为例:
1.下载zookeeper-3.4.5.tar.gz包到目标机器上.
2.把zookeeper解压到/home/q/zookeeper/下.
3.建立zookeeper数据目录 /home/q/zookeeper/datadir.
4.建立zookeeper节点编号 /home/q/zookeeper/datadir/myid (该文件中只有一个数字,代表该机器在集群中的序号)
5.sudo vi /home/q/zookeeper/conf/zoo.cfg
修改zoo.cfg配置文件如下:

# 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.
# 这里指定第三步建立的目录
dataDir=/home/q/zookeeper/datadir
# the port at which the clients will connect
# 客户端(这里指solr)端口
clientPort=2181
#wq gjus gh
# 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
#zookeeper集群中所有节点的地址,端口,第一个用来节点间通信,第二用来选举leader,server后的 .1  .2 是对应的节点号,该号从/home/q/zookeeper/datadir/myid中读取.
server.1=url1:2888:3888
server.2=url2:2888:3888

6.类似上述步骤,把集群中所有机器都配置好(不同节点配置中,只有myid不同)
7.部署完所有的节点机器后,启动zookeeper(通过zoo 提供的脚本启动)
sudo /home/q/zookeeper/bin/zkServer.sh start

分别启动各个机器上的zookeeper,注意,先启动的机器可能报错连接其它节点超时,不必理会,是因为其它节点还没启动,全部启动后,就会正常.

第二步:部署solr应用

我们的solr跑在tomcat容器中,采用公司统一目录结构,和部署方式.As follow:
项目目录 /home/q/www/solr.qunar.com/
子目录: cache/  conf/ logs/ solr/ temp/ webapps/ work/  startenv.sh
1.需要准备的JAR 包:
apache-solr-4.0.0.tgz
mysql-connector-java-5.1.22-bin.jar
IKAnalyzer2012FF_u1.jar
zookeeper-3.4.5.tar.gz

2.解压apache-solr-4.0.0.tgz,并把其中的 dist/目录下的apache-solr-4.0.0.war解压到/home/q/www/solr.qunar.com/webapps/ROOT/下
然后把预先准备好的其它三个jar放到/home/q/www/solr.qunar.com/webapps/ROOT/WEB-INF/lib/下.
3.修改启动脚本/home/q/www/solr.qunar.com/startevn.sh 如下:

#!/bin/sh

export TOMCAT_USER="tomcat"
export JAVA_OPTS="-Xms2048m -Xmx2048m -XX:NewSize=256m -XX:PermSize=256m -server -XX:+DisableExplicitGC -Dqunar.logs=$CATALINA_BASE/logs -Dqunar.cache=$CATALINA_BASE/cache -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$CATALINA_BASE/logs/gc.log"
chown -R tomcat:tomcat $CATALINA_BASE/logs
chown -R tomcat:tomcat $CATALINA_BASE/cache
chown -R tomcat:tomcat $CATALINA_BASE/conf
chown -R tomcat:tomcat $CATALINA_BASE/work
chown -R tomcat:tomcat $CATALINA_BASE/temp
chown -R root:root $CATALINA_BASE/webapps
chmod -R 755 $CATALINA_BASE/webapps
export JAVA_OPTS="-Dsolr.solr.home=/home/q/www/solr.qunar.com/solr -Dbootstrap_confdir=/home/q/www/solr.qunar.com/solr/collection1/conf -Dcollection.configName=myconf  -DzkHost=url1:2181,url2:2181"


重点关注最后一行,Dsolr.solr.home变量是solr的主目录,里边存放索引文件.Dbootstrap_confdir变量指向solr的所有配置文件(注注注:会上传到zookeeper下,供所有的solr节点共用,因此,其它solr节点的启动时,startenv.sh里
就不再需要加Dbootstrap_confdir参数).

solr相关的主要有三个配置文件
/home/q/www/solr.qunar.com/solr.xml -- 配置多个core
/home/q/www/solr.qunar.com/solr/collection1/conf/data-config.xml -- 配置数据源,数据entity,dih全量导更新,和增量更新用.
/home/q/www/solr.qunar.com/solr/collection1/conf/schema.xml -- 配置自定义字段,分词器也在这里配置,以字段类型的方式配置分词器.

4.配置好全部配置文件后.启动solr

用公司统一的脚本方式启动 sudo /home/q/tools/bin/start_tomcat.sh /home/q/www/solr.qunar.com/
以类似方式配置启动所有solr节点.OK


最后,在浏览器键入solr管理后台,手动导入数据(第一次全量导入),以后由定时任务作增量更新.
常见故障1:如果在solr后台管理界面里solrCloud 视图中点击机器图标不能正确跳转的话,在/home/q/www/solr.qunar.com/webapps/ROOT/WEB-INF/web.xml中 加入如下内容:

 <servlet-mapping>
    <servlet-name>LoadAdminUI</servlet-name>
    <url-pattern>/admin.html</url-pattern>
  </servlet-mapping>

完毕.