CentOS7.5搭建Solr7.4.0单机版与集群版

一.Solr安装环境

1.官方参考文档

Solr教程参考指南:http://lucene.apache.org/solr/guide/7_4/solr-tutorial.html

2.Solr运行环境

系统要求:Java 8+      这里我们把solr服务部署到Tomacat服务器中,Tomcat安装过程参考:https://www.cnblogs.com/frankdeng/p/9597699.html

在solr5以前solr的启动都有tomcat作为容器,但是从solr5以后solr内部集成jetty服务器,可以通过bin目录中脚本直接启动。就是从solr5以后跟solr4最大的区别是被发布成一个独立的应用。

3.Solr下载

下载地址:http://archive.apache.org/dist/lucene/solr/

[[email protected] software]$ wget http://archive.apache.org/dist/lucene/solr/7.4.0/solr-7.4.0.tgz
[[email protected] software]$ ll
-rw-rw-r-- 1 admin admin 167346886 Jun 19 02:51 solr-7.4.0.tgz

二.Solr单机安装

1. 解压安装包

[[email protected] software]$ tar zxvf solr-7.4.0.tgz
[[email protected] software]$ ls solr-7.4.0
bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt server

2.部署solr到tomcat下

注意,这里因为我用的是solr7.4最新版,所以跟solr4版本要拷贝*.war文件,然后再启动tomcat解压的操作是不一样的 ,

1)复制并重命名solr目录里的server/solr-webapp/webapp文件夹到/usr/local/tomcat8/webapps/solr

[[email protected] software]$ sudo cp -r solr-7.4.0/server/solr-webapp/webapp /usr/local/tomcat8/webapps/solr

2)拷贝solr-7.4.0\server\lib\ext 下的jar包以及lib目录下gmetric4j-1.0.7.jar和metrics开头的jar包拷贝到 tomcat8\webapps\solr 项目的WEB-INF\lib下

[[email protected] software]$ sudo cp solr-7.4.0/server/lib/ext/* /usr/local/tomcat8/webapps/solr/WEB-INF/lib/
[[email protected] software]$ sudo cp solr-7.4.0/server/lib/gmetric4j-1.0.7.jar /usr/local/tomcat8/webapps/solr/WEB-INF/lib/
[[email protected] software]$ sudo cp solr-7.4.0/server/lib/metrics-*  /usr/local/tomcat8/webapps/solr/WEB-INF/lib/

3)创建一个索引库solrhome

拷贝solr-7.4.0\server 下的solr文件夹到其它非中文目录下,重命名为solrhome,我是建立到了/usr/local/tomcat8/solrhome下

[[email protected] software]$ sudo cp -r solr-7.4.0/server/solr /usr/local/tomcat8/solrhome

4)关联solr及索引库solrhome,需要修改tomcat里solr工程的web.xml文件

[[email protected] software]$ sudo vi /usr/local/tomcat8/webapps/solr/WEB-INF/web.xml 

找到如下代码,打开注释,修改自己的solrhome的路径/put/your/solr/home/here,我的是 /usr/local/tomcat8/solrhome 路径。

40   <!--
41     <env-entry>
42        <env-entry-name>solr/home</env-entry-name>
43        <env-entry-value>/put/your/solr/home/here</env-entry-value>
44        <env-entry-type>java.lang.String</env-entry-type>
45     </env-entry>
46    -->

如下图:

然后到最下方,将这一段注释掉,不然会报403错误,完成后保存退出(solr4部署不用注释这个)

5)拷贝solr7.4.0\server\resources下的 log4j2.xml 到tomcat8/webapps/solr/WEB-INF\classes,如果WEB-INF下没有classes文件那么就创建一个classes文件夹 

[[email protected] tomcat8]$ sudo mkdir -p /usr/local/tomcat8/webapps/solr/WEB-INF/classes/
[[email protected] tomcat8]$ sudo cp -r /opt/software/solr-7.4.0/server/resources/log4j2.xml /usr/local/tomcat8/webapps/solr/WEB-INF/classes/

3.启动服务

启动tomcat,访问需要完整路径,我的是http://node21:8080/solr/index.html

4.配置solr的索引库core

1)点击Core Admin,接着点击Add Core这项,创建的instanceDir和dataDir 需存在,报错如下。(Solr里面的core就像数据库里面的一个表,用来管理索引和相关配置。)

2)在索引库目录solrhome下创建new_core目录,拷贝配置文件到new_core目录下

[[email protected] tomcat8]$ su root
[[email protected] tomcat8]$  mkdir /usr/local/tomcat8/solrhome/new_core
[[email protected] solrhome]$ cp -r /usr/local/tomcat8/solrhome/configsets/sample_techproducts_configs/conf  /usr/local/tomcat8/solrhome/new_core/

然后重启tomcat服务,重新创建core成功

5.配置IK中文分词器

项目地址:https://github.com/magese/ik-analyzer-solr7

内置的分词器不支持停用,扩展功能,ik中文分词器支持屏蔽关键词、新词汇的配置。下载地址:https://pan.baidu.com/s/1vxs98d440NSQIqjc50w1Rw,密码:9dbe

解压分词器安装包

[[email protected] software]# unzip ikanalyzer-solr6.5.zip
[[email protected] software]# lsikanalyzer-solr5 ikanalyzer-solr6.5.zip
[[email protected] software]# ls ikanalyzer-solr5/
ext.dic  IKAnalyzer.cfg.xml  ik-analyzer-solr5-5.x.jar  solr-analyzer-ik-5.1.0.jar  stopword.dic

1)将IK分词器 JAR 包拷贝到Tomcat8\webapps\solr\WEB-INF\lib下

[[email protected] ikanalyzer-solr5]# cp ik-analyzer-solr5-5.x.jar solr-analyzer-ik-5.1.0.jar /usr/local/tomcat8/webapps/solr/WEB-INF/lib/

2)将词典 配置文件拷贝到 Tomcat8\webapps\solr\WEB-INF\classes下

[[email protected] ikanalyzer-solr5]# cp ext.dic IKAnalyzer.cfg.xml stopword.dic /usr/local/tomcat8/webapps/solr/WEB-INF/classes/

3)更改在Tomcat8\solr_h\solrhome\new_core\conf找到managed-schema配置文件,末尾添加以下保存

[[email protected] ikanalyzer-solr5]# vi /usr/local/tomcat8/solrhome/new_core/conf/managed-schema
<!--IK中文分词器-->
 <fieldType name="text_ik" class="solr.TextField">
        <analyzer type="index" useSmart="false"
            class="org.wltea.analyzer.lucene.IKAnalyzer" />
        <analyzer type="query" useSmart="true"
            class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType> 

4)重启tomcat服务,测试

6. 停止服务

如果要关闭solr服务,直接关闭tomcat就可以了。

三.Solr集群安装

这里把solr当成独立服务安装,官方参考文档:http://lucene.apache.org/solr/guide/7_4/taking-solr-to-production.html#taking-solr-to-production

1. 安装环境,集群部署

系统 节点名称 IP
Java


zookeeper


Solr

CentOS7.5 node21 192.168.100.21 8983/8984
CentOS7.5 node22 192.168.100.22 8983/8984
CentOS7.5 node23 192.168.100.23  

Zookeeper集群安装参考:https://www.cnblogs.com/frankdeng/p/9018177.html    ,启动zookeeper集群 zkServer.sh start

2. 解压安装包,运行安装脚本

[[email protected] software]$ tar zxvf solr-7.4.0.tgz 

[[email protected] software]$ tar xzf solr-7.4.0.tgz solr-7.4.0/bin/install_solr_service.sh --strip-components=2

上一个命令将install_solr_service.sh脚本从存档中提取到当前目录中,如果在Red Hat上安装,请确保在运行Solr安装脚本()之前安装了lsof,sudo yum install lsof。安装脚本必须以root身份运行:下一个命令时运行服务安装脚本。

[[email protected] software]$ sudo bash ./install_solr_service.sh solr-7.4.0.tgz -i /opt/module/solr  -d /opt/module/solr/solrhome -u solr -s solr -p 8983

报错找不到JAVA_HOME,原因:如果使用bash,建议将其放入/etc/bashrc(基于RH)或/etc/bash.bashrc(基于Debian)

[[email protected] software]# bash ./install_solr_service.sh solr-7.4.0.tgz -i /opt/module/solr  -d /opt/module/solr/solrhome -u solr -s solr -p 8983

切换root用户再次执行安装成功,默认情况下,脚本将分发存档解压缩/opt,配置Solr以将文件写入/var/solr,并以solr用户身份运行Solr ,也可以指定路径,安装信息如下

[[email protected] software]# bash ./install_solr_service.sh solr-7.4.0.tgz -i /opt/module/solr  -d /opt/module/solr/solrhome -u solr -s solr -p 8983
We recommend installing the ‘lsof‘ command for more stable start/stop of Solr
id: solr: no such user
Creating new user: solr

Extracting solr-7.4.0.tgz to /opt/module/solr

Installing symlink /opt/module/solr/solr -> /opt/module/solr/solr-7.4.0 ...

Installing /etc/init.d/solr script ...

Installing /etc/default/solr.in.sh ...

Service solr installed.
Customize Solr startup configuration in /etc/default/solr.in.sh
*** [WARN] ***  Your Max Processes Limit is currently 4096.
 It should be set to 65000 to avoid operational disruption.
 If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
NOTE: Please install lsof as this script needs it to determine if Solr is listening on port 8983.

Started Solr server on port 8983 (pid=2147). Happy searching!

Found 1 Solr nodes: 

Solr process 2147 running on port 8983
INFO  - 2018-09-07 11:39:26.210; org.apache.solr.util.configuration.SSLCredentialProviderFactory; Processing SSL Credential Provider chain: env;sysprop
{
  "solr_home":"/opt/module/solr/data/data",
  "version":"7.4.0 9060ac689c270b02143f375de0348b7f626adebc - jpountz - 2018-06-18 16:55:13",
  "startTime":"2018-09-07T15:39:11.678Z",
  "uptime":"0 days, 0 hours, 0 minutes, 19 seconds",
  "memory":"25.3 MB (%5.2) of 490.7 MB"}

[[email protected] software]# 

3.安装多个solr服务

node21上再实例化一个solr2,端口8984

[[email protected] software]# mkdir /opt/module/solr2
[[email protected] software]# bash ./install_solr_service.sh solr-7.4.0.tgz -i /opt/module/solr2  -d /opt/module/solr2/solrhome -u solr -s solr2 -p 8984 

安装脚本,安装包拷贝一份到node22上,实例化solr 8983,solr2 8984两个服务。

[[email protected] software]# scp -r install_solr_service.sh solr-7.4.0.tgz [email protected]:`pwd`
[[email protected] software]# mkdir /opt/module/solr
[[email protected] software]# bash ./install_solr_service.sh solr-7.4.0.tgz -i /opt/module/solr  -d /opt/module/solr/solrhome -u solr -s solr -p 8983
[[email protected]2 software]# mkdir /opt/module/solr2
[[email protected] software]# bash ./install_solr_service.sh solr-7.4.0.tgz -i /opt/module/solr2  -d /opt/module/solr2/solrhome -u solr -s solr2 -p 8984

启动停止验证服务命令

#在root用户下操作
service solr  start|stop|status
service solr2 start|stop|ststus

修改对应jetty服务的端口8983/8984

[[email protected] solr]# vi  /opt/module/solr/solrhome/data/solr.xml
[[email protected] solr]# vi  /opt/module/solr2/solrhome/data/solr.xml
[[email protected] solr]# vi  /opt/module/solr/solrhome/data/solr.xml
[[email protected] solr]# vi  /opt/module/solr2/solrhome/data/solr.xml 

4. 配置zk启动优先级

solr集群需要zk来管理节点,目前solr是开机自启动,然后自己手工再启动zookeeper,solr是不能访问的,要求zookeeper集群先于solr集群启动,因此在设置zookeeper集群开机启动前要先查看solr开机启动的优先级    ls /etc/rc3.d/*solr*

"S50solr"分析:

S:代表启动

50:代表启动的顺序,值越小越先启动

solr:服务名字,就是/etc/init.d中的文件名

因zookeeper要先于solr启动,所以它的启动顺序对应的值应该小于50

编写脚本设置zookeeper开机启动

[[email protected] software]# vi /etc/init.d/zookeeper
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/opt/module/jdk1.8
export ZOO_LOG_DIR=/opt/module/zookeeper-3.4.12/logs
case $1 in
        start) su root /opt/module/zookeeper-3.4.12/bin/zkServer.sh start;;
        stop) su root /opt/module/zookeeper-3.4.12/bin/zkServer.sh stop;;
        status) su root /opt/module/zookeeper-3.4.12/bin/zkServer.sh status;;
        restart) su root /opt/module/zookeeper-3.4.12/bin/zkServer.sh restart;;
        *) echo "require start|stop|status|restart" ;;
esac     

其中chkconfig:2345 20 90非常重要

2345:为主机运行的级别,表示主机运行在2、3、4、5个级别时都会启动zookeeper,而0 、1、6级别时停止zookeeper

20:开机启动的优先级,要比solr的50大

90:关机停止的顺序

一般设置时,先启动,则后停止,注意不要把启动值设置得太小,否则可能一些系统核心服务还没有启动起来,导致你的应用无法启动

JAVA_HOME是必须的

ZOO_LOG_DIR是可选的,用于保存zookeeper启动时的日志文件,我把它指定到了自定义目录,否则你得使用root用户启动zookeeper或者给root用户根目录的写权限授予给zookeeper的启动用户

赋权限给脚本,启动zookeeper,设置为开机启动

[[email protected] software]# chmod +x /etc/init.d/zookeeper
[[email protected] software]# service zookeeper start
[[email protected] software]# chkconfig --add zookeeper

然后去/etc/rc3.d中查看zookeeper的启动顺序,查看zookeeper的停止顺序

[[email protected] software]# ls /etc/rc3.d/*zoo*
/etc/rc3.d/S20zookeeper
[[email protected] software]# ls /etc/rc0.d/*zoo*
/etc/rc0.d/K90zookeeper

5. 关联solr集群与zk集群

1)设置zookeeper集群关联solr集群,更新Solr的包含文件(solr.in.shsolr.in.cmd),这样就不必在启动Solr时输入zk连接地址。

[[email protected] solr]# vi /etc/default/solr.in.sh      vi /etc/default/solr2.in.sh
[[email protected] solr]# vi /etc/default/solr.in.sh      vi /etc/default/solr2.in.sh
修改如下信息(对应主机host注意更改):
ZK_HOST="node21:2181,node22:2181,node23:2181/solr"
SOLR_HOST="192.168.100.21"

首次连接需要创建节点管理目录

[[email protected] solr]# ./solr/bin/solr  zk mkroot /solr -z node21:2181,node22:2181,node23:2181

2)使用Solr的ZooKeeper CLI上传solr配置信息到zk节点

[[email protected] module]# sh solr/solr-7.4.0/server/scripts/cloud-scripts/zkcli.sh -zkhost node21:2181,node22:2181,node23:2181 -cmd upconfig -confdir /opt/module/solr/solr-
7.4.0/server/solr/configsets/_default/conf -confname myconf

查看配置文件是否上传成功,zk客户端查看zkCli.sh

[zk: localhost:2181(CONNECTED) 6] ls /solr/configs/myconf
[managed-schema, protwords.txt, solrconfig.xml, synonyms.txt, stopwords.txt, lang, params.json]

6.配置solr集群的分片规则

创建core与collection,分片规则可以自定义,也可以自动分配,我这里采取自动分配

[[email protected] solr]# ./solr/bin/solr create -c collection1 -n collection1 -shards 2 -replicationFactor 2 -p 8983 -force
[[email protected] solr2]# ./solr2/bin/solr create -c collection2 -n collection2 -shards 2 -replicationFactor 2 -p 8984 -force

参数说明:

-c <name> 要创建的核心或集合的名称(必需)。

-n <configName> 配置名称,默认与核心或集合的名称相同。

-p <port> 发送create命令的本地Solr实例的端口; 默认情况下,脚本会尝试通过查找正在运行的Solr实例来检测端口。

-s <shards> 要么 -shards 将集合拆分为的分片数,默认为1; 仅适用于Solr在SolrCloud模式下运行的情况。

-rf <replicas> 要么 -replicationFactor 集合中每个文档的副本数。默认值为1(无复制)。

-force 如果尝试以“root”用户身份运行create,则脚本将退出并显示运行Solr或针对Solr的操作作为“root”的警告可能会导致问题。可以使用-force参数覆盖此警告。

-d <confdir> 配置目录。默认为_default

7. Web界面查看solr集群状态

solr默认端口,查看地址:http://192.168.100.21:8983/solr/#/

zk客户端查看solr集群信息

删除core与collection

[[email protected] solr]# ./solr/bin/solr delete -c collection1
INFO  - 2018-09-09 07:59:04.479; org.apache.solr.util.configuration.SSLCredentialProviderFactory; Processing SSL Credential Provider chain: env;sysprop
{
  "responseHeader":{
    "status":0,
    "QTime":1560},
  "success":{
    "192.168.100.21:8983_solr":{"responseHeader":{
        "status":0,
        "QTime":305}},
    "192.168.100.21:8984_solr":{"responseHeader":{
        "status":0,
        "QTime":305}},
    "192.168.100.22:8983_solr":{"responseHeader":{
        "status":0,
        "QTime":353}},
    "192.168.100.22:8984_solr":{"responseHeader":{
        "status":0,
        "QTime":421}}}}

Deleted collection ‘collection1‘ using command:
http://192.168.100.21:8984/solr/admin/collections?action=DELETE&name=collection1

8. 安装IK中文分词器(略)

四.安装过程问题

1.警告Max Processes Limit

最大限制用户进程数,个人电脑低配,由于系统需要更改设置

查看个人最大限制用户进程数 ulimit -u

[[email protected] software]# vi /etc/security/limits.conf
末尾添加如下两行信息,保存退出,重新登录生效
* soft nproc 65535
* hard nproc 65535

或者根据官网的建议,在solr.in.sh中设置SOLR_ULIMIT_CHECKS=false 。

 

其他明细参考文档:https://www.cnblogs.com/jepson6669/p/9134652.html

https://my.oschina.net/u/3049601/blog/1800909

原文地址:https://www.cnblogs.com/frankdeng/p/9597680.html

时间: 2024-10-08 20:27:14

CentOS7.5搭建Solr7.4.0单机版与集群版的相关文章

Redis单机版和集群版的安装和部署

1.单机版的安装 本次使用redis3.0版本.3.0版本主要增加了redis集群功能. 安装的前提条件: 需要安装gcc:yum install gcc-c++ 1.1 安装redis 1.下载redis的源码包. 从官网下载 http://download.redis.io/releases/redis-3.0.0.tar.gz 2.把源码包上传到linux服务器 3.解压源码包并进入其目录 tar -zxvf redis-3.0.0.tar.gz 4.make cd /usr/local/

JAVAEE——宜立方商城08:Zookeeper+SolrCloud集群搭建、搜索功能切换到集群版、Activemq消息队列搭建与使用

1. 学习计划 1.solr集群搭建 2.使用solrj管理solr集群 3.把搜索功能切换到集群版 4.添加商品同步索引库. a) Activemq b) 发送消息 c) 接收消息 2. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求. So

JedisClient操作redis 单机版和集群版

一.在pom文件中添加依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version> </dependency> 二.准备Jed

CentOS7.5搭建Hadoop2.7.6完全分布式集群

一 完全分布式集群(单点) Hadoop官方地址:http://hadoop.apache.org/ 1  准备3台客户机 1.1防火墙,静态IP,主机名 关闭防火墙,设置静态IP,主机名此处略,参考  Linux之CentOS7.5安装及克隆 1.2 修改host文件 我们希望三个主机之间都能够使用主机名称的方式相互访问而不是IP,我们需要在hosts中配置其他主机的host.因此我们在主机的/etc/hosts下均进行如下配置: [root@node21 ~]# vi /etc/hosts

项目里面加入redis单机版 和集群版的配置

第一步: 如果你是maven项目,你直接配置就可以了,如果不是需要下载这个包 jedis包 <!-- Redis  客户端 -->          <dependency>                <groupId>redis.clients</groupId>                <artifactId>jedis</artifactId>  </dependency> 2.  单机版测试 @Test 

Linux下Solr单机版、集群版安装与配置

一.安装 1.需要的安装包有apache-tomcat-7.0.47.tar.gz.solr-4.10.3.tgz.tgz(jdk自行安装) 这里默认大家已经安装好jdk与tomcat,所以在这里不做说明,jdk安装点击这里,tomcat直接解使用. 2.解压solr的安装包,把tar -zxvf solr-4.10.3.tgz.tgz解压 [[email protected] local]# tar -zxvf solr-4.10.3.tgz.tgz 3.进入solr-4.10.3/dist下

Centos7下安装redis实战(单机版以及集群)

一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二.Redis介绍 1.什么是Redis? Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型有:字符串类型.散列类型.列表类型.集合类型.有序集合类型. 2.Redis的应用场景:

快速搭建redis单机版和redis集群版

单机版 第一步:需要安装redis所需的C语言环境,若虚拟机联网,则执行 yum install gcc-c++ 第二步:redis的源码包上传到linux系统 第三步:解压缩redis   tar zxf redis的压缩文件 第四步:编译 ,进入redis源码目录 .make 第五步:安装,make install PREFIX=/路径 第六步:前端启动(./redis-server)这种启动会占用一个终端,不推荐 第七步:后台启动将redis源码包下的redis.conf 复制到 /bin

docker下搭建fastfds集群版

搭建过程参考 作者 https://me.csdn.net/feng_qi_1984 的课程视频 声明:集群版是在我之前写的单机版基础之上进行搭建的,我将安装了fastfds单机版的docker打包成了镜像. 如对fastfds搭建流程不熟悉者,需先参阅之前的文章.点击进入文章 首先借鉴一个公众号的两张图来说明一下 fastfds 上传下载的流程,公众号为 "Java架构师之路" 我搭建的思路是,两个tracker.四个storage,然后通过nginx进行反向代理访问图片. 下面演示