文档章节

solr6.5集群 for centos7

飞机上的蜗牛
 飞机上的蜗牛
发布于 2017/05/12 00:18
字数 2541
阅读 319
收藏 1

一、配置好JDK(java)环境。

二、配置tomcat

三、配置zookeeper

  • SolrCloud简介

SolrCloud是solr提供的分布式搜索方案,当需要大规模容错、分布式索引和检索能力时使用。当一个系统的索引数量少时,不需要使用SolrCloud;当索引量很大,搜索请求并发很高时,需要使用SolrCloud。

SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。

它有几个特色功能:

1) 集中式的配置信息

2) 自动容错

3) 近实时搜索

4) 查询时自动负载均衡

  • Zookeeper简介

顾名思义zookeeper就是动物园管理员,他是用来管理hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员,Apache Hbase和Apache Solr的分布式集群都用到了zookeeper。Zookeeper是一个分布式的、开源的程序协调服务,是hadoop项目下的一个子项目。

zookeeper:集群管理工具,集群入口。

集群管理

主从的管理、负载均衡、高可用的管理。集群的入口。Zookeeper必须是集群才能保证高可用。Zookeeper有选举和投票的机制。集群中至少应该有三个节点。

配置文件的集中管理

搭建solr集群时,需要把Solr的配置文件上传zookeeper,让zookeeper统一管理。每个节点都到zookeeper上取配置文件。

分布式锁

SolrCloud结构

SolrCloud为了降低单击的处理压力,需要由多态服务器共同来完成索引的搜索任务。实现的思路是将索引数据进行Shard(分片)拆分,每个分片由多态服务器共同完成,当一个索引或搜索请求过来时,会分别从不同的shard的服务器中操作索引。

SolrCloud需要Solr基于Zookeeper部署,Zookeeper是一个集群管理软件,由于SolrCloud需要由多台服务器组成,由zookeeper来进行协调管理。

\

  • 搭建步骤

Zookeeper集群搭建

第一步:需要把zookeeper-*.tar.gz的安装包上传到服务器。

第二步:把zookeeper解压:tar –zxvfzookeeper-*.tar.gz

第三步:把zookeeper向/usr/java/solrcloud目录下复制三份。(自定义目录)

\

第三步:配置zookeeper。

1.分别在zookeeper01目录下创建一个data文件夹,并且在data文件夹下创建myid(不需要格式)文件;myid文件中内容分别为1,2,3:zookeeper01=》1,zookeeper02=》2,zookeeper03=》3

2.进入conf文件,复制zoo_sample.cfg一份,并命名为zoo.cfg:cp -rf zoo_sample.cfg zoo.cfg

3.修改zoo.cfg,分别修改01,02,03中的zoo.cfg的:dataDir=属性指定为刚创建的data文件夹。

把clientPort指定为不冲突的端口号(01:2181、02:2182、03:2183)(2181:这个端口是客户端连接端口:因为是在一台机器上模拟集群,所以端口不能重复)

4.分别在1,2,3中zoo.cfg里添加如下内容:

server.1=127.0.0.1:2881:3881

server.2=zk:2882:3882

server.3=zk:2883:3883

(此时的server后的1,2,3就是myid中内容;这个端口是服务器连接端口,不能重复;127.0.0.1:此时这个可以在/etc/hosts中指定,例如:zk)

第四步:启动zookeeper。

此时启动至少启动两个以上。(因为配置中都有关系,之启动一个,可能会报错)

Zookeeper的目录下有一个bin目录。使用zkServer.sh启动zookeeper服务。

启动命令:./zkServer.sh start

另一种启动zookeeper的方式:./zkServer.sh start-foreground //这种启动方式,能够查看zookeeper的日志

关闭命令:./zkServer.sh stop

查看服务状态:./zkServer.sh status

Solr配置

第一步:在solrcolud中配置四个tomcat01~tomcat04,修改其端口号不能冲突。8081~8084

端口号分别修改为:

  • 8005-8006-8007-8008
  • 8081-8082-8083-8084
  • 8009-8010-8011-8012

第二步:向tomcat下部署solr。(因为solr6.5中没有solr.war包,所以可以把1.solr工程复制到tomcat的webapps下;2.在其它地方新建tomcat01~04,在conf下的server.xml中指定位置,具体:)

  • 复制Solr文件夹中的一些文件到apache-tomcat下:

1)将 solr 压缩包中 solr\server\solr-webapp\文件夹下有个webapp文件夹,将之复制到tomcat\webapps\目录下,文件夹名改成solr(任意) ;

2)将 solr 压缩包中 solr\server\lib\ext 中的 jar 全部复制到 Tomcat\ webapps\solr\WEB-INF\lib 目录中; 

3)将solr压缩包中solr/server/lib/metrics* 开头的jar全部复制到 Tomcat\ webapps\solr\WEB-INF\lib 目录中; 

4)将solr压缩包中solr/server/lib/solr-dataimporthandler-* 开头的jar全部复制到 Tomcat\ webapps\solr\WEB-INF\lib 目录中; 

5)在Tomcat\ webapps\solr\WEB-INF\下建立classes目录,并将solr/server/resources/log4j.properties文件复制其中;

6)在tomcat目录下建立solrhome目录(也可以放在其它目录中)

7)复制solr/server/solr/* 所有文件到tomcat/solrhome目录,用到创建solr的core时使用。

操作shell如下:(参照)

  1. [root@localhost down]# cd /down  
  2. [root@localhost down]# cp -R /down/solr-6.5.0/server/solr-webapp/webapp /down/apache-tomcat-8.5.12/webapps/solr  
  3. [root@localhost down]# cp -R /down/solr-6.5.0/server/lib/ext/*  /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/  
  4. [root@localhost down]# cp -R /down/solr-6.5.0/server/lib/metrics*.*  /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/  
  5. [root@localhost down]# cp /down/solr-6.5.0/dist/solr-dataimporthandler-*  /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/lib/  
  6. [root@localhost down]# mkdir /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes  
  7. [root@localhost down]# cp /down/solr-6.5.0/server/resources/log4j.properties  /down/apache-tomcat-8.5.12/webapps/solr/WEB-INF/classes/  
  8. [root@localhost down]# mkdir /down/apache-tomcat-8.5.12/solrhome  
  9. [root@localhost down]# cp -R /down/solr-6.5.0/server/solr/*  /down/apache-tomcat-8.5.12/solrhome/ 
  • 配置Solr:

分别编辑刚刚赋值过去中在WEB-INF下的web.xml文件:

  1. [root@localhost down]# vi /down/tomcat1/webapps/solr/WEB-INF/web.xml   

1)配置solr下core路径,找如下配置内容(初始状态下该内容是被注释掉的):

  1. <env-entry>  
  2.    <env-entry-name>solr/home</env-entry-name>  
  3.    <env-entry-value>/down/tomcat1/solrhome</env-entry-value> //将路径指向我们创建的solrhome目录。  
  4.    <env-entry-type>java.lang.String</env-entry-type>  
  5. </env-entry>  

2)配置访问权限:找到如下内容,并注释掉:

  1. <!--  
  2.   <security-constraint>  
  3.     <web-resource-collection>  
  4.       <web-resource-name>Disable TRACE</web-resource-name>  
  5.       <url-pattern>/</url-pattern>  
  6.       <http-method>TRACE</http-method>  
  7.     </web-resource-collection>  
  8.     <auth-constraint/>  
  9.   </security-constraint>  
  10.   <security-constraint>  
  11.     <web-resource-collection>  
  12.       <web-resource-name>Enable everything but TRACE</web-resource-name>  
  13.       <url-pattern>/</url-pattern>  
  14.       <http-method-omission>TRACE</http-method-omission>  
  15.     </web-resource-collection>  
  16.   </security-constraint>  
  17. -->  

  • 运行solr(可以写个脚本执行)

在浏览器输入http://localhost:8081/solr/index.html即可出现Solr的管理界面


查看启动日志 :tail -f tomcat01/logs/catalina.out
关闭solr只需要关闭tomcat即可:

solr集群搭建

  • 修改每个solrhome下的solr.xml文件。修改host、hostPort两个属性。分别是对应的ip及端口号。

host:当前实例运行的ip地址

port:当前实例运行的端口号,是当前tomcat的端口号

  • 把配置文件上传到zookeeper。需要使用;需要zookeeper集群已经启动。(上传任意一个;这里以上传到01那个下面为例)

需要用到:/opt/solr/server/scripts/cloud-scripts/zkcli.sh。这里的solr文件夹里的zkcli.sh文件。

上传至:/opt/tomcat1/solrhome/configsets/sample_techproducts_configs/conf。

这里我是把solrhome文件放到/opt下的tomcat里。

这是进入到cloud-scripts文件夹下(必须zookeeper启动时执行):

./zkcli.sh -zkhost 192.168.56.128:2181,192.168.56.128:2182,192.168.56.128:2183 -cmd upconfig -confdir /opt/tomcat1/solrhome/configsets/sample_techproducts_configs/conf -confname myconf

这里的ip是配置中的server的ip和端口号。

  • 查看是否上传成功。

使用zookeeper的zkCli.sh命令。

zkCli.sh存在位置:/usr/java/solrcloud/zookeeper01/bin

(注:zookeeper只要连接上任意节点,就行了)

  • 告诉solr实例zookeeper的位置。需要修改tomcat的catalina.sh添加 (tomcat/bin/catalina.sh)

JAVA_OPTS="-DzkHost=127.0.0.12181,127.0.0.1:2182,127.0.0.1:2183"

下面这个图是从网上找的,ip地址和我配置的不同(仅供参考,这种方式也行)

\

这里的ip也可以用hosts中的别名代替。

 

在使用JAVA_OPTS之前添加这句话:

  • 启动每个solr实例。

\

可以查看启动日志 :tail -f tomcat01/logs/catalina.out

查看solrCloud搭建是否成功,使用浏览器查看solr,点击Cloud可以看到solr集群

\

这是单片;需要分片。有时这里会是空白的,没有片和副本(有可能是配置的时的ip地址不正确);

如果确定地址配置正确:那么只需执行:http://192.168.56.128:8080/solr/admin/collections?action=CREATE&name=collection1&numShards=2&replicationFactor=2

第十步:集群分片。

将集群分为两片,每片两个副本。(numShards:分成两片;replicationFactor:两个副本)

在浏览器中运行下面的链接:

http://192.168.56.128:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

看到success,就说明成功了。

\

  • 删除不用collection1

在浏览器中打开下面的链接:

http://192.168.56.128:8080/solr/admin/collections?action=DELETE&name=collection1

看到success,就说明成功了。

\

  • 问题解决

有时tomcat启动后,可以:wget http://lcoalhost:8081/solr/index.html查看是否正常启动;

如果正常运行但是pc机浏览器不能访问,请关闭防火墙:systemctl stop iptables。

  1. systemctl status firewalld.service  #检查防火墙状态 
  2. systemctl stop firewalld.service  #关闭防火墙  

问题一:查看zookeeper服务状态时,报错:Error contacting service. It is probably not running.

启动没有问题,但是查看solr集群状态时,总是报错。solr明明显示已经起来了,但是查看solr状态时,却提示没有启动:

\

解决办法:可能是真的没有启动,虽然显示成功,但是成功之后,就马上关闭了。可以关闭之后,再重新启动。

在网上搜索到的解决办法:

打开zkServer.sh找到status,即找到下面的这句话:

STAT='echo stat | nc localhost$(grep clientPort "$ZOOCFG" | sed -e 's/.*=//') 2> /dev/null| grep Mode'

在nc与localhost之间加上 -q 1(是数字1而不是字母l),如果已存在,则去掉。如果没有这句话,则加上。

问题二:用日志方式启动zookeeper时,报错:

Unexpected exception, exiting abnormally

java.net.BindException: Address already in use

原因:端口被占用

解决方法:1、如果使用ps aux|grep 2181,查看不到端口被占用。

2、使用lsof -i:2181命令查看端口占用情况

3、若执行lsof -i:2181命令提示:-bash: lsof: command not found

4、执行yum install lsof命令

5、再查看端口占用情况,停调被占用的端口,即可。

问题三:启动solr集群后,浏览器打开solr链接,报错:

\

原因:正如问题一一样,显示zookeeper已经启动成功了,但实际,没有真正启动成功。

解决办法:重新启动

 

此文是配置完成后大概写的,感觉还可以请点个赞,谢谢;如不完整请见谅。或留言。

另外还可参考:http://www.cnblogs.com/append/p/5747956.html

© 著作权归作者所有

上一篇: 安装VMware Tools
下一篇: 权限不够
飞机上的蜗牛
粉丝 0
博文 12
码字总数 10421
作品 0
东城
程序员
私信 提问
CentOS7环境部署kubenetes1.12版本五部曲之三:node节点加入

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/83714209 本文是《CentOS7环境部署kubenetes1.12版本五部曲》系列的第三篇,上篇文章创建了...

博陵精骑
2018/11/04
0
0
高可用centos7 HA:corosync+packmaker+http\mysql

corosync+pacemaker:在配置corosync时最好具有三个以上的节点,并且节点个数 为奇数个,如果使用偶数个节点的话也没关系,只是要关闭不具有法定票数的决策 策略功能 支持的服务在pacemaker...

lawsonduan
2016/08/11
0
0
ceph0.80安装及使用(CentOS7/ceph-deploy)

Ceph的主要目标是设计成基于POSIX的没有单点故障的分布式文件系统,使数据能容错和无缝的复制。详见:http://www.oschina.net/p/ceph 目前大部分部署ceph基本都是在Ubuntu,因为它的内核默认...

fkkeee
2014/09/22
0
4
centos7使用kubeadm配置高可用k8s集群的另一种方式

简介 使用配置多节点,实现高可用。 安装 实验环境说明 实验架构 实验使用的 在所有机器上安装kubeadm 参考之前的文章《centos7安装kubeadm》 配置所有节点的kubelet 配置hosts 启动etcd集群...

店家小二
2018/12/17
0
0
CentOS7环境部署kubenetes1.12版本五部曲之四:安装dashboard

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/83715479 本文是《CentOS7环境部署kubenetes1.12版本五部曲》系列的第四篇,前面的实站已经...

博陵精骑
2018/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

两数的最大公约数

hello,复习一下数学知识! 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。 因为之前做一个小功能,需要先计算一下数组的最大公约数,所以我就想记录一下...

woshixin
今天
3
0
学习Node.js的电子书大全

在这里,与大家分享一批很有用的 Node.js 的电子书资源。Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写...

jay603
今天
58
0
《伟大的博弈》读后感作文4100字

《伟大的博弈》读后感作文4100字: 五一小长假,作为工厂员工,没能跟上大家放假的步伐,窝家里两天没出门,逼着自己看完《伟大的博弈》,感触颇多。似乎不能消化,先记录第一遍作为幼稚的见...

原创小博客
昨天
5
0
单点登录-基于Redis+MySQL实现单点登录(SSO)

1. 为什么要用单独登录? 主要便于公司内部多系统统一认证授权管理,一次登录可访问多个跨域系统,也同时更加方便统一管理用户登录(员工离职需要拿掉登录权限、统计所有用户对系统的登录请求...

秋日芒草
昨天
2
0
827. Making A Large Island

思想: 将所有连通的 1 分成一个组,分配编号,然后使用BFS统计1的个数,得到这个组的面积。 遍历格子里所有为 0 的元素,检查四个方向的1所在的组并加上这个组面积。于是得到当前元素为 0 ...

reter
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部