设为首页 收藏本站
查看: 2643|回复: 0

[经验分享] solr6安装部署

[复制链接]

尚未签到

发表于 2017-2-28 08:58:52 | 显示全部楼层 |阅读模式
  难得写篇自己的原创文档了,哈哈哈,原谅我知识浅薄,积淀太少
  一、涉及到的软件和环境
jdk1.8.0_92,tomcat8,zookeeper3.4.8,solr6.1.0
(solr6需要jdk8以上环境)
二、安装步骤


  • 安装zookeeper集群
  A 下载zookeeper3.4.8
B 解压至/home/zk/zookeeper-3.4.8,建立软链: tar -zxvf zookeeper-3.4.8.tar.gz ; ln -s zookeeper-3.4.8 zookeeper
C更改zk配置
i 拷贝/home/zk/zookeeper/conf/zoo_sample.cfg到同目录下,并重命名为zoo.cfg
  cp /home/zk/zookeeper/conf/zoo_sample.cfg /home/zk/zookeeper/conf/zoo.cfg
  ii 修改zoo.cfg
  dataDir=/home/zk/zkdata/data
dataLogDir=/home/zk/zkdata/logs/
clientPort=2181
#以下配置各个zkcluster的各个node(部署几台zookeeper节点就依次都写上)
server.1=zkServer1:2888:3888
server.2=zkServer2:2888:3888
server.3=zkServer3:2888:3888
  iii /home/zk目录下建zkdata/data和zkdata/logs目录
iiii /home/zk/zkdata/data目录下建立名叫myid的文件,内容为int型,表示zkserver的编号(如1,2等)
  
D 编辑zookeeper启动脚本$ZK_HOME_1/bin/zkServer.sh 详见下方代码块中nohup部分
  nohup $JAVA -server -Xms10240m -Xmx10240m -Xmn3840m -Xss256k -XX:+CMSParallelRemarkEnabled -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &
  G 关闭zookeeper集群的防火墙以及selinux
service iptables stop
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled 重启
(setenforce 0 不需重启)
H 启动zookeeper 注意每一个zk的node都要启动,否则相互间的通信会报错.
启动命令 sh zookeeper/bin/zkServer.sh start 查看当前节点启动状态 sh zookeeper/bin/zkServer.sh status


  • 安装solrcloud集群
  准备包:下载solr6.1.0,网址:http://archive.apache.org/dist/lucene/solr/6.1.0/, 解压solr-6.1.0.tgz压缩包并建立软链: tar –xzvf solr-6.1.0.tgz; ln -s solr-6.1.0 solr
  选择容器:solr的部署主流是jetty和tomcat两种,二种容器对于性能上有没有影响暂时还没有深究。tomcat方式我们已经历经多个项目验证,jetty作为标准运行方式,应该也差不了。


  • jetty部署
  solr自带了jetty容器,可以直接启动运行。
  1)建立solr_home目录并拷贝solr.xml,solr_home目录下要是没有solr.xml会导致启动不起来
  mkdir /home/solr_admin/solr_home;
  cp /home/solr_admin/solr/server/solr/solr.xml /home/solr_admin/solr_home/
  cd ;cd solr;
  指定参数并启动
  bin/solr start -cloud -m 16g -s /home/solr_admin/solr_home -z zkServer1:2181,zkServer2:2181,zkServer3:2181
  (
  -p参数可以改端口,jetty默认为8983
  -s参数指明solrhome,不然默认会指向/home/solr_admin/solr/server/solr 目录
  solrCloud example (start Solr running in SolrCloud mode using localhost:2181 to connect to ZooKeeper, with 1g max heap size and remote Java debug options enabled):
  ./solr start -c -m 4g -z localhost:2181 -a "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044"
  )

依次启动各solr机器,

  查看状态: bin/solr status
  如果发现当前solr节点有问题,结束命令:bin/solr stop  重启命令:bin/solr restart
  执行ps-ef|grep java 命令会发现 当前solr的日志目录是在 /home/solr_admin/solr/server/logs下面,后续会讲把日志配置到统一的地方
  访问地址:http://solrServer1:8983/solr/#/      8983端口取决于启动时的-p参数,默认是8993
  2.tomcat部署
  
A 下载tomcat并解压
B 解压solr6.1.0,解压后的包的文件夹结构与以前的版本不同的是,5.0版本的solr的部署包solr.war放在了server文件夹中,而6.1.0的版本已经是解压在server/solr-webapp/webapp/ 下了。
C 将server/solr-webapp/webapp/下面的内容(solr5  /server/webapps/solr.war)拷贝到tomcat的webapps中: cp –r server/solr-webapp/webapp/* /usr/local/tomcat8/webapps/solr/
  D solr6执行完C步骤之后忽略此步骤,solr5部署才需要 进入到到tomcat中,对war进行解压,然后删除war包。
cd /usr/local/tomcat7/webapps
unzip solr.war –d solr
删除solr.war文件。(不然每次启动tomcat都会发布一次)
  E 设置solrhome,在$HOME/建立solr_home文件夹作为solrhome:
mkdir ~/solr_home
在该路径下放置solr.xml,内容如下:(从solr4.3开始,solr为solr.xml保有两种不同的格式,传统模式如下,发现模式如上,但是从solr5.0开始,传统模式被废弃,强制使用发现模式)
(
  传统模式,4.3版本使用
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">
<cores adminPath="/admin/cores" zkClientTimeout="20000" hostPort="8080">
</cores>
</solr>
发现模式,5.0及以上版本使用
<?xml version="1.0" encoding="UTF-8" ?>
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">${tomcat.port:8080}</int> //此端口号取决于部署solr.war包的tomcat的端口号
<str name="hostContext">${hostContext:solr}</str>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>
</solr>
  )
  cp /tmp/solr-6.1.0/server/solr/solr.xml ~/solr_home/
  
H 配置tomcat
  修改$TOMCAT_HOME_1/bin/catalina.sh插入一下配置
线上
JAVA_OPTS=" -server -Xms16384m -Xmx16384m -Xmn6144m -Xss256k -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+DisableExplicitGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5 -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Dsolr.solr.home=/home/app_admin/solr_home -DzkHost=zkServer1:2181,zkServer2:2181,zkServer3:2181,zkServer4:2181"
  
测试环境
JAVA_OPTS=" -server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=85 -XX:+DisableExplicitGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=5 -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Dsolr.solr.home=/home/mallsearch/solrhome -DzkHost=zkServer1:2181,zkServer2:2181,zkServer3:2181,zkServer4:2181"
  I 启动tomcat,部署就此完成,打开浏览器访问 http://solrServer1:8080/solr/#/ //此端口号取决于部署solr.war包的tomcat的端口号
  
  3.完善相关配置
  1)配置solrhome
  如果在jetty或者tomcat的启动参数里制定了-s 或者solr.home参数的话,此步骤可以不做
  进入到
  jetty版:/home/solr_admin/solr/server/solr-webapp/webapp/WEB-INF/  
  tomcat版:~/tomcat8/webapps/solr/WEB-INF/  
  修改web.xml中的solr/home为上一步骤所建solr_home的文件夹目录
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/app_admin/solr_home/</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
  
2)日志
  拷贝solr相关的依赖jar包(solr-6.1.0\server\lib\ext\里面的所有jar包)到~/tomcat/webapps/solr/WEB-INF/lib中
一共5个,是solr的独立日志处理模块;
  jetty命令:cp –r * ~/solr/server/solr-webapp/webapp/WEB-INF/lib/
  tomcat命令:cp –r * ~/tomcat/webapps/solr/WEB-INF/lib
  在上面的 WEB-INF/下新建一个classes目录,将example/resources下的log4j.properties文件复制到该classes目录中,否则日志模块无法正常工作
  3)分词
  a、复制ik的jar包到WEB-INF/lib/下,否则分词模块无法运行
  之前电商环境我部署的solr5.2.0版本是 IKAnalyzer-5.0.jar 和 solr-analyzer-ik-5.1.0.jar(网上下载的针对solrIK分词问题更改后自己打的jar包)两个jar包
  solr-6.1.0/dist目录下有solr-analysis-extras-6.1.0.jar和solr-analytics-6.1.0.jar两个jar包 还有网上下载 IKAnalyzer-5.0.jar
  b、在WEB-INF/classes文件夹下新增一个文件:IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典-->
<entry key="ext_dict">my.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
  说明:
  my.dic即为扩展分词库,分词库可以为多个,以分号隔开即可。停止词库一样。
  c、新增my.dic文件。文件格式必需是:无BOM的UTF-8格式,示例内容为:



火影忍者
  分词器的词典文件格式是无BOM 的UTF-8 编码的中文文本文件,文件扩展名不限。词典中,每个中文词汇独立占一行,使用\r\n 的DOS 方式换行。(注,如果您不了解什么是无BOM 的UTF-8 格式, 请保证您的词典使用UTF-8 存储,并在文件的头部添加一空行)。您可以参考分词器源码org.wltea.analyzer.dic 包下的.dic 文件。词典文件应部署在Java 的资源路径下,即ClassLoader 能够加载的路径中。(推荐同IKAnalyzer.cfg.xml 放在一起).
  stopword.dic同理。
  d、保存,重启solr。
  使用了新的分词,需要重新建索引数据。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-348192-1-1.html 上篇帖子: jFinal 2.2入门学习之一:搭建框架输出helloword 下篇帖子: Maven 私有库 Nexus的安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表