难得写篇自己的原创文档了,哈哈哈,原谅我知识浅薄,积淀太少

一、涉及到的软件和环境
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作为标准运行方式,应该也差不了。

  1. 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。

使用了新的分词,需要重新建索引数据。

solr6安装部署的更多相关文章

  1. window10下的solr6.1.0入门笔记之---安装部署

    1.安装部署java1.6+ ,确保jre安装[安装步骤略] 安装后的环境为jdk1.8+ jre1.8+ 2.安装ant 下载:官网=>http://ant.apache.org/=>  ...

  2. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  3. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

  4. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  5. 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署

    少啰嗦,直接装 看过上一篇分布式文件系统 - FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上 ...

  6. C# winform安装部署(转载)

    c# winform 程序打包部署 核心总结: 1.建议在完成的要打包的项目外,另建解决方案建立安装部署项目(而不是在同一个解决方案内新建),在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目 ...

  7. Ubuntu14.04 Django Mysql安装部署全过程

    Ubuntu14.04 Django Mysql安装部署全过程   一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便 ...

  8. 比Ansible更吊的自动化运维工具,自动化统一安装部署_自动化部署udeploy 1.0

    新增功能: 2015-03-11 除pass(备份与更新)与start(启动服务)外,实现一切自动化. 注:pass与start设为业务类,由于各类业务不同,所以无法实现自动化.同类业务除外,如更新的 ...

  9. 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布

    新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...

随机推荐

  1. iOS runtime 运行时( 二 )

    我们在编程过程中,如果使用到了runtime(运行时),我们几乎都是想动态的改变这个类的信息,包括方法,属性,balabala的,并且获得这个类的一些信息,等等,下面我们就来看看怎么通过runtime ...

  2. C#实现万年历(农历、节气、节日、星座、属相、生肖、闰年等)

    C# 万年历 农历 节气 节日 星座 星宿 属相 生肖 闰年月 时辰等,代码如下: using System.Collections.Generic; using System.Text; using ...

  3. Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation

    程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...

  4. iOS tabbar 控制器基本使用

    RootViewController *rootVC=[[RootViewController alloc] init] SignInViewController *signVC = [[SignIn ...

  5. 沈逸老师PHP魔鬼特训笔记(6)--巫术与骨架

    PHP最牛逼的特性之一除了懒人函数,还有一些魔法函数. 首先我们来认识下__tostring,通过一个巫术方法,我们吧实例转化过后的类,直接当字符串输出.结合我们前面所做的功能,我们在类里面加上这个函 ...

  6. iOS 手势大全

    1.Touch事件 //系统自动调用 //一个UITouch代表一根手指 按住option变成两根手指 //虽然是两个手指,但只执行一次触摸事件 - (void)touchesBegan:(NSSet ...

  7. Oracle基础 shutdown和startup

    一.shutdown命令:SHUTDOWN有四个参数:NORMAL.TRANSACTIONAL.IMMEDIATE.ABORT.缺省不带任何参数时表示是NORMAL. SHUTDOWN NORMAL: ...

  8. c#几个小例子引发的思考

    楚广明老师的c#教程每一节都会给出几个小例子让大家联系,对于初学者来说这确实是一件很纠结的事情,下面我把这几个小例子简单的写一下.同时看一下我们学到了什么 1.面向过程版的圆周长面积计算 using ...

  9. POJ 3422 Kaka's Matrix Travels K取方格数

    题目:给出n*n的方格矩阵,现在从左上方走m次到右下方,问m次能够获得的最大价值和. 分析:最大费用流.拆点进行限制每个格子只取一次,假设点x拆成 x,xx,右边(假设有)y,yy,下方(假设有)z, ...

  10. Entityframework Code First 系列之数据注释

    上一篇<Entityframework Code First 系列之项目搭建>讲了搭建一个Code First的控制台项目.里面有一些内容并没有扩展出来讲,因为篇幅有限.这篇针对上面内容中 ...