搭建SOLRCLOUD集群
1.下载地址
http://lucene.apache.org/solr/
参考WIKI文档: http://wiki.apache.org/solr/SolrCloud
(1)加压缩包并,将solr-4.9.0\example 文件件复制一份,cp -r example example2
(2)启动一个节点
cd examplejava -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar
(3)启动另一个节点并加入Zookeeper集群-DzkRun参数是启动一个嵌入式的Zookeeper服务器,它会作为solr服务器的一部分-Dbootstrap_confdir参数是上传本地的配置文件上传到zookeeper中去,作为整个集群共用的配置文件-DnumShards指定了集群的逻辑分组数目
cd example2
java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar
-DzkHost=localhost:9983就是指明了Zookeeper集群所在位置然后我们可以打开http://localhost:8983/solr/collection1/admin/zookeeper.jsp 或者http://localhost:8983/solr/#/cloud看看目前集群的状态
(4)索引一些文档,
cd exampledocsjava -Durl=http://localhost:8983/solr/collection1/update -jar post.jar ipod_video.xmljava -Durl=http://localhost:8983/solr/collection1/update -jar post.jar monitor.xmljava -Durl=http://localhost:8983/solr/collection1/update -jar post.jar mem.xml
(5)这个集群现在就具备容错性了,你可以试着干掉一个Solr服务器,然后再发送查询请求。
现在这个demo就比较完善了,下图就是全部配置完成后的状态但是尽管solr服务器可以容忍挂掉,但集群中只有一个zookeeper服务器来维护集群的状态信息,单点的存在即是不稳定的根源。如果这个zookeeper服务器挂了,那么分布式查询还是可以工作的,因为每个solr服务器都会在内存中维护最近一次由zookeeper维护的集群状态信息,但新的节点无法加入集群,集群的状态变化也不可知了。因此,为了解决这个问题,需要对Zookeeper服务器也设置一个集群,让其也具备高可用性和容错性。有两种方式可选,一种是提供一个外部独立的Zookeeper集群,另一种是每个solr服务器都启动一个内嵌的Zookeeper服务器,再将这些Zookeeper服务器组成一个集群。我们这里用后一种做示例:增加两个节点cp -r example exampleBcp -r example2 example2Bcd exampleBjava -Djetty.port=8900 -DzkHost=localhost:9983 -jar start.jarcd example2Bjava -Djetty.port=7500 -DzkHost=localhost:9983 -jar start.jar
3.部署单个solr
(1)把solr包下面example/solr目录下面所有的文件都拷贝到 solr_home 目录下面
[root@HTML5 solrhome]# cp -r solr-4.9.0/example/solr/* ./
把solr包下面的 dist/solr-4.7.2.war 拷到 /data/solr_home目录下面
[root@HTML5 solrhome]# cp solr-4.9.0/dist/solr-4.9.0.war ./
[root@HTML5 solrhome]# mv solr-4.9.0.war solr.war
(2)在Tomcat的 conf/Catalina/localhost 目录下面增加一个文件 solr.xml,内容如下:
<?xml version="1.0" encoding="UTF8" ?>
<Context docBase="/usr/local/solrhome/solr.war" debug="0" crossContext="false" ><Environment name="solr/home"type="java.lang.String"value="/usr/local/solrhome"override="true" /></Context>
(3)启动tomcat,webapps 下边多了解压出来的solr文件夹
进入solr/WEB-INF/ 下修改web.xml
<!--
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/put/your/solr/home/here</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->
改为 :
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
(4)复制example/lib/ext下所有jar包到tomcat 的lib下
[root@HTML5 lib]# cp /usr/local/solrhome/solr-4.9.0/example/lib/ext/* ./
复制example/resources/log4j.properties 到solr/WEB-INF/classes
(5)启动tomcat,访问http://192.168.66.99:8080/solr/ 无法打开,检查异常:
严重: Exception starting filter SolrRequestFilter
java.lang.UnsupportedClassVersionError: org/apache/solr/servlet/SolrDispatchFilter : Unsupported major.minor version 51.0 (unable to load class org.apache.solr.servlet.SolrDispatchFilter)
原来是solr4.9版本是使用JDK1.7编译的,要求运行环境JDK也是1.7以上,
修改完成后启动,报错如下:
[localhost-startStop-1] ERROR org.apache.solr.core.SolrCore – null:org.apa
che.solr.common.SolrException: Found multiple cores with the name [collection1],with instancedirs [/usr/local/solrhome/solr-4.9.0/example/example-schemaless/solr/collection1/] and [/usr/local/solrhome/solr-4.9.0/example/solr/collection1/]
原来我解压solr后的文件夹放到了solhome下,后来又复制了example/solr/下的文件到solhome,
solr启动时会到 solrhome下检查所有文件夹,并加载core配置,结果solrhome下有两个collection1 core所以 Found multiple cores with the name [collection1],删除solr-4.9.0文件夹即可,再次重启成功运行!至此单个solr启动完成
4.solrcloud集群配置(在一台虚拟机上测试,生产环境同理)
(1)复制3个tomcat,分别配置环境变量及端口,分别为 tomcat-1 端口:8080 tomcat-2 端口:9080 tomcat-3端口:7080
(2)复制solrhome 分别为solrhome-1 solrhome-2 solrhome-3
并分别修改下面solr.xml,如下:(生产环境中,多台服务器不需要该步骤,直接复制即可)
<solr>
<solrcloud><str name="host">192.168.66.99</str> // admin界面地址<int name="hostPort">7080</int> // admin界面地址端口<str name="hostContext">/solr</str> // admin界面地址工程名(即tomcat下solr解压出的工程名)<int name="zkClientTimeout">${zkClientTimeout:30000}</int><bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool></solrcloud><shardHandlerFactory name="shardHandlerFactory"class="HttpShardHandlerFactory"><int name="socketTimeout">${socketTimeout:0}</int><int name="connTimeout">${connTimeout:0}</int></shardHandlerFactory></solr>
(3)进入各个tomcat/webapps/solr/WEB-INF/ 目录下修改web.xml,修改solrhome路径,参照上一节
(4)进入各个tomcat/conf/Catalina/localhost 目录下修改solr.xml,修改solrhome路径,参照上一节
(5)进入各个tomcat/bin下修改catalina.sh 加入以下参数:
JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/usr/local/solr/solrhome-3 -DzkHost=127.0 .0.1:1181,127.0.0.1:2181,127.0.0.1:3181"
(6)上传配置文件到zookeeper集群中:
java -classpath .:/usr/local/solr/solrhome-1/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 127.0.0.1:1181,127.0.0.1:2181,127.0.0.1:3181 -confdir /usr/local/solr/solrhome-1/conf -confname solr-conf
其中参数/usr/local/solr/solrhome-1/lib/可以自己创建,内容如下:
复制tomcat/webapps/solr/WEB-INF/lib下所有jar包复制example/lib/ext下所有jar包复制example/resources/log4j.properties
zkhost 指明zookeeper集群地址
confdir 指明配置文件目录
confname 配置文件名称
(7)将zookeeper中的配置文件与collection 联系起来(本步骤不清楚是否必须,待测试)
java -classpath .:/usr/local/solr/solrhome-1/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection core1 -confname solr-conf -zkhost 127.0.0.1:1181,127.0.0.1:2181,127.0.0.1:3181
(8)启动各个tomcat应用,集群配置完成! 使用任意一台应用都可以访问到控制台.
相关推荐
- **故障排查**:通过日志分析、性能调优和问题定位,确保SolrCloud集群稳定运行。 总之,SolrCloud结合ZooKeeper为大规模的全文搜索和数据分析提供了强大的分布式解决方案,通过精心的集群规划、配置管理和运维...
SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。 它有几个特色功能: 1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡 zookeeper是...
centos下搭建好solrcloud集群,可以直接使用!!!!!!
在Windows环境下搭建SolrCloud环境涉及多个步骤,包括Zookeeper集群的配置、Solr的部署和配置等。通过上述详细介绍,读者应能够理解SolrCloud的工作原理及其实现过程,从而在实际项目中有效利用其强大的分布式搜索...
1. **服务器准备**:搭建SolrCloud需要多台服务器,文中提供了六台服务器的IP地址和其在集群中的角色,例如领导者(Leader)和副本(Replica)。 2. **系统安装**:选择适合的Linux发行版,如CentOS-6.4-x86_64-...
在搭建SolrCloud之前,首先要准备好运行环境,包括稳定的网络、适当的硬件资源和兼容的操作系统。本案例中使用的是CentOS 6.4,同时需要安装JDK和Zookeeper。 3. **JDK安装**: Java开发工具包(JDK)是运行Solr...
理解这些核心概念对于正确部署和管理SolrCloud集群至关重要。 **1.2 SolrCloud的路由机制** SolrCloud提供两种主要的路由算法: - **Composite ID路由**:这是一种一致性哈希路由方案,用于决定文档应当被路由到...
windows环境 1.伪集群,将压缩包解压后放在以下目录中(任意盘,此处是E:) :E:\solr\solr-5.3.0-cloud 2.修改 solr_home1\bin\solr.in.cmd中的SOLR_HOST 3.运行build脚本
Window与Linux下搭建SolrCloud分布式集群环境 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以...
在这种情况下,传统的单机Solr可能无法满足需求,因此需要搭建SolrCloud集群。 1. **硬件准备**:至少准备三台服务器作为Zookeeper集群,以及若干台服务器作为SolrCloud的节点。 2. **Zookeeper集群搭建**:按照...
### Solr集群搭建与SolrCloud分布式搜索方案详解 #### 一、SolrCloud概述 SolrCloud 是 Apache Solr 提供的一种分布式搜索解决方案。它主要用于处理大规模数据集的索引和检索工作,并具备容错性和分布式特性。当...
### Solr 5.3.1 集群搭建教程 - 线上环境搭建 #### 软件环境配置 本教程旨在详细介绍如何在Windows 7环境下搭建一个用于生产环境的高可靠性Solr 5.3.1集群。整个过程分为几个阶段:准备软件环境、部署单机版Tomcat...
SolrCloud是Apache Solr的一种分布式搜索和索引服务模式,它允许用户在多台服务器上部署和管理Solr实例,形成...在实际操作中,我们需要深入了解这两个组件的工作原理和配置方法,以便更好地管理和优化SolrCloud集群。
solr入门之搭建具有安全控制和权限管理功能的SolrCloud集群-附件资源
### SolrCloud集群搭建步骤 #### 环境准备 - **操作系统**:CentOS 6.5 - **软件版本**: - JDK 7 - Apache Tomcat 7.0.57 - Zookeeper 3.4.6 - Solr 4.10.3 - **服务器配置**: - Zookeeper集群:3台服务器...
搭建SolrCloud涉及到安装Solr、配置Zookeeper集群、创建和配置Collections以及设置必要的网络通信。为了保证服务的稳定性和性能,需要合理规划Shard和Replica的数量,以及监控系统的健康状态。此外,SolrCloud还支持...