开场白:
简单讲述如何配置独立的外部 ZooKeeper 集群管理组件来管理 solr集群(多实例solr)
本章建立在 Solr学习(一) 、Soer学习(二)基础上进行配置。
声明:描述的比较笼统繁琐,有偏差的地方请大家毫不留情的拍砖
完成目标:
单zookeeper(独立)实例 + 多solr-4.2.0(tomcat)实例集群管理。
前期准备:
1、下载ZooKeeper-3.4.5.tar.gz解压。
2、完成Solr-4.2.0+Tomcat6.0环境部署(如果为完成请参考Solr学习一)
名词解释:
8080服务器:下文统称端口为8080的Tomcat6.0服务器。
9090服务器:下文统称端口为9090的Tomcat6.0服务器。
ZooKeeper:下文指ZooKeeper的项目根目录(解压后的目录,尽量不要放在中文目录中)如下图
开始生产:
步骤1:在 ZooKeeper目录“D:\zookeeper-3.4.5\conf”找到“zoo_sample.cfg”文件(将其备份一下),改名为“zoo.cfg”,打开它(最好用UE打开!防止乱码!)修改里头内容为(原本很多注释。都被我干掉了!因为哥有强迫症 +_+!!)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=D:/zookeeper-3.4.5/temp
clientPort=2181
这里我们要改的是第四个配置 “dataDir”(数据文件的路径)自己设定吧。我是放在ZooKeeper下新建一个文件夹“temp”。
步骤2:
找到“ZooKeeper\\bin”目录的“zkServer.cmd”文件。 双击启动。。。。启动没有报错,说明OK。
步骤3:
现在开始搞多个solr 实例配置,(分别有多个tomcat 每个tomcat带起1个solr实例)
之前我们配置过tomcat6.0下启动单一solr实例(详见:solr学习一),目前配置多实例(solr+tomcat) 就要解决TOMCAT端口冲突问题。 这里我不多做介绍。我的做法是打开tomcat的startup.bat 文件。 把里头的所有变量都加上2 。
例如:
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
改成
set "CURRENT_DIR2=%cd%"
if not "%CATALINA_HOME2%" == "" goto gotHome
还有server.xml 里头的端口,我这里把常用的 8080改成 9090了,8443改成 9443 反正各种变9. 只要不冲突!只要你记得你改了多少就成!这里自己折腾吧。
步骤4:
偷懒!把原先“8080服务器”根目录下的solrapp文件夹拷贝到“9090服务器”根目录下。(如果没看之前文章的朋友,这里解释一下“solrapp”是solr-work目录,是我们后来自己建立的文件夹。详见:solr学习一 )
同样,把“8080服务器下”“webapps”里头的“solr ”文件夹也拷贝到 “9090服务器”的同样目录 “webapps”里。
步骤5:
此时要在“9090服务器”上建立jndi指引文件,到“E:\apache-tomcat-6.0.35.9090\conf\Catalina\localhost”下新建“solr.xml”文件(也可以直接去“8080服务器”那边拷贝过来)然后写入内容
<?xml version="1.0" encoding="UTF-8" ?>
<Context docBase="E:/apache-tomcat-6.0.35.9090/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="E:/apache-tomcat-6.0.35.9090/solrapp/solr" override="true" />
</Context>
XML注意: docBase 与 value 两个值根据自己的路径不同做改变, 前者是war包的位置,后者是刚刚自己建立的solrapp目录位置的solr文件夹。
步骤6:
打开“8080服务器”路径“E:\apache-tomcat-6.0.35\solrapp\solr”找到项目内的“sor.xml”打开找到“cores”节点。改为如下配置。
<cores adminPath="/admin/cores" defaultCoreName="collection1" host="localhost" hostPort="8080" hostContext="solr" zkClientTimeout="${zkClientTimeout:15000}">
<core name="collection1" instanceDir="collection1" />
</cores>
(同上)打开“9090服务器”路径“E:\apache-tomcat-6.0.35\solrapp\solr”找到项目内的“sor.xml”打开找到“cores”节点。改为如下配置
<cores adminPath="/admin/cores" defaultCoreName="collection1" host="localhost" hostPort="9090" hostContext="solr" zkClientTimeout="${zkClientTimeout:15000}">
<core name="collection1" instanceDir="collection1" />
</cores>
上注意面2个solr.xml 并不是 tomcat\conf\Catalina\localhost目录下的。而是在 \solrapp\solr目录下的。请别弄错了。 xml中defaultCoreName值如果你之前有改变solr的配置,请自行更改,否则照抄我代码, host是ip地址,hostPort则为端口,2个tomcat的端口不一样。注意!
步骤7:
既然是集群,要选举一个默认的solr老大对吧。(关于zookeeper选举老大的原则后续在说)
哈哈。 我指定“8080服务器”的“solr”服务为默认老大。
打开“8080服务器”目录下的bin目录,“E:\apache-tomcat-6.0.35\bin”找到文件“catalina.bat”编辑它(再次建议用UE打开,注意文件编码)在文件第二行加入
Set JAVA_OPTS=-Dbootstrap_confdir=../solrapp/solr/collection1/conf -Dcollection.configName=clusterconf -DzkRun -DzkHost=localhost:2181 -DnumShards=1
注意黄色字体部分。需要根据个人情况不同做不同配置。
“../solrapp/solr/collection1/conf”这个就是 “E:/apache-tomcat-6.0.35.8080/solrapp/solr/collection1/conf”的后半段。自己看清楚啦。
然后开始分配小弟(目前刚做老大,只有一个小弟跟着)“9090服务器”是小弟“catalina.bat”文件。第二行加入(别弄错了是9090的文件。)
set JAVA_OPTS= -DzkHost=localhost:2181
只要指明zookeeper的路径位置即可。(如果你有很多个小弟。你其他小弟也这么配。)
此时完成了配置了。
测试阶段:
我们测试下!~首先打开zookeeper服务,再分别打开 8080 和 9090 tomcat 服务(注意要先打开zookeeper服务,后开tomcat)。之后IE里头输入 http://localhost:8080/solr
出现以上图就OK了。 完成~
此时我们关掉其中的一个服务。。 我关了8080服务(废了老大)。 此时我们打开 9090服务地址。
http://localhost:9090/solr
发现此时 8080已经 gone了。 现在9090暂时变成了老大
目前为止。 单zookeeper和多solr的配置已经完成了。 谢谢观赏。
小贴士(加入你在启动时候发现,只看到一个solr服务。说明配置有问题,此时修改配置后,需要删除zookeeper的数据文件。 还记得吗? 数据文件地址在 X:\zookeeper-3.4.5\conf 下的zoo.cfg里头写着呢。 打开看看吧。 其实zookeeper是可以自动横向扩容的。 只是这里没配置。 )
- 大小: 47.2 KB
- 大小: 36.8 KB
- 大小: 9.2 KB
- 大小: 7.6 KB
分享到:
相关推荐
### ZooKeeper实例与Solr(tomcat)集群部署详解 #### 一、部署背景与目的 在大数据处理和搜索引擎技术领域,ZooKeeper与Solr是两个不可或缺的技术组件。ZooKeeper作为分布式协调服务,提供了高可用性以及一致性保证...
依次启动三个Tomcat实例,并通过浏览器访问`http://localhost:8080/solr`、`http://localhost:8081/solr`、`http://localhost:8082/solr`来验证配置是否正确。 在完成上述步骤后,你就成功地在Windows 7环境下搭建...
《Tomcat+SolrCloud6.2整合Web项目详解》 在现代的互联网环境中,高效、精准的全文搜索引擎已经成为各种Web应用不可或缺的一部分。Solr,作为Apache Lucene的一个子项目,以其强大的搜索功能和易扩展性深受开发者...
SolrCloud是一个分布式搜索引擎系统,基于Apache Solr...每个Tomcat实例都可以独立运行并处理Solr请求,Zookeeper负责协调和同步集群状态。这使得SolrCloud具有高可用性和可伸缩性,适合处理大数据量的搜索和分析任务。
SolrCloud4.9.0+Tomcat7+Zookeeper3.4.6搭建教程 SolrCloud是Apache Lucene项目下的一个基于分布式搜索引擎,通过将多个Solr实例组合成一个集群,可以实现高可用性和高性能的搜索系统。Tomcat是Apache软件基金会的...
### SolrCloud 5.2.1 + Tomcat 7 + Zookeeper 3.4.6 搭建教程 #### 一、环境准备 **软件环境:** - **操作系统:** Windows 7 - **Tomcat 版本:** 7.0.56 - **Solr 版本:** 5.2.1 - **Zookeeper 版本:** 3.4.6 **...
Solr-Zookeeper-Tomcat集群搭建教程 在大数据和搜索引擎领域,Apache Solr是一个非常流行的全文检索服务。它能够提供高效、可扩展的搜索和分析功能。为了实现高可用性和负载均衡,通常会将Solr部署在分布式环境中,...
SolrCloud 整合 Tomcat 是一种常见的部署方式,它允许你将 Apache Solr 集群与 Apache Tomcat 应用服务器结合,以便在分布式环境中运行和管理 Solr 搜索服务。以下是对整合过程的详细说明: 1. **软硬件环境**: -...
4. **创建Zookeeper标识文件**:在每个Zookeeper节点的数据目录下创建一个名为`myid`的文件,用于唯一标识该Zookeeper实例。 - 示例命令: - `vi /home/myuser/zookeeper/data/myid` - 在文件中写入对应节点的ID...
- 在每个Tomcat服务器上启动Tomcat,Solr服务会自动解压`solr.war`并创建核心实例。 - 使用`bin/solr start -cloud -zkhost <Zookeeper地址列表>`命令启动SolrCloud,指定Zookeeper集群的地址。 5. **创建索引和...
- **独立应用**:Solr5.x被设计为一个独立的应用程序,不再依赖于外部容器如Tomcat等。它内置了一个Jetty服务器,可以直接通过bin目录下的脚本启动。 - **应用模式**:Solr5.x支持两种应用模式——独立模式...
SolrCloud高可用集群搭建是实现大规模、分布式搜索引擎的关键步骤,它通过集成Zookeeper来管理和协调各个Solr节点,确保数据的一致性和可用性。在搭建过程中,我们需要遵循一定的步骤和配置,以下是一些关键的知识点...
你需要在至少三个不同的服务器上部署Zookeeper实例,以实现容错。配置Zookeeper配置文件`conf/zoo.cfg`,包括`dataDir`(存储快照和日志的位置)、`clientPort`(Zookeeper客户端连接端口)以及`server`节点列表。 ...
1. **SolrCloud**:Solr3.6引入了分布式搜索和管理功能,称为SolrCloud,提供了Zookeeper协调和配置存储。 2. **Collections API**:用于管理和操作Solr集合的RESTful API。 3. **Sharding**:通过分割数据到多个分...
4. 验证:启动所有Tomcat实例,通过不同端口访问Solr的admin页面。 **四、配置ZooKeeper集群** 1. 解压Zookeeper:将Zookeeper解压到`solrCloud`目录,命名为`zookeeper-1`。 2. 修改配置:将`zoo_sample.cfg`...
5. **云支持**:在分布式环境中,`lib`目录会包含`solrcloud.jar`,提供SolrCloud的功能,包括Zookeeper协调和集群状态管理。 6. **其他依赖**:Solr还可能依赖于其他第三方库,如`jackson*`系列的JAR文件用于JSON...
整个过程分为几个阶段:准备软件环境、部署单机版Tomcat 7 + Solr 5.2.1、配置多Tomcat实例以支持Solr集群以及最后配置ZooKeeper集群来确保Solr集群的稳定性和高可用性。 **软件需求:** - **Tomcat 7:** 版本...