阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Solr6与Zookeeper在Tomcat环境安装部署SolrCloud集群

139次阅读
没有评论

共计 2546 个字符,预计需要花费 7 分钟才能阅读完成。

摘要: SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,在搭建完一个 Solr 实例后,可以很容易地使用 Zookeeper 来安装部署一个集群。我演示的安装步骤基于一台机器,所以采用伪集群的方式进行安装,如果是真正的生成环境,将伪集群的 ip 改下就可以了,步骤是一样的。

准备工作

  • JDK1.8 以上
  • Solr6 的安装包(solr-6.0.0.zip 约 140M
  • Tomcat8(至少 tomcat-8.0 以上,apache-tomcat-8.5.5-windows-x86.zip 约 10M)
  • Zookeeper(zookeeper-3.4.9.tar.gz 约 22M)

Solr6 部署在 Tomcat8 环境

你可以在这里(http://www.linuxidc.com/Linux/2016-10/136109.htm)找到如何将 Solr6 部署在 Tomcat8 环境下。想要在 Jetty 环境下部署 Solr6 的话,步骤基本相同。

Solr6 集群部署

如果已经成功部署了一个 Solr,那么接下来的工作也不会太难。下面的集群部署基于已经成功部署过单个 Solr.
1. 首先,需要将 server 复制三份,我刚开始用的是apache-tomcat-8.5.5,复制后分别加上一个标示,假设我取 8081,8082,8083. 同样,把 solr_home 也复制三份,加上标示。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
2. 配置各自的 solr_home:分别将./apache-tomcat-8.5.5 – 808X/webapps/solr/WEB-INF 的 web.xml 文件中 env-entry-value 改为对应的 solr_home808X 路径。这次需要改 3 个地方。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
3. 改端口号:由于我是在一台机器上启动 4 台 Tomcat, 所以需要不同的端口号。分别将./apache-tomcat-8.5.5 – 808X/conf 的 server.xml 文件中 Connector 改为不重复的端口,假设我取 8081,8082,8083。这次需要改 3 个地方。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
要保证此次试验能够成功,还需要将 server.xml 中的所有端口号都更改掉,8005 改为 8105,8443 改为 8583,8009 改为 8109。如果不改的话,第一个 Tomcat 启动以后,其他 Tomcat 启动时,会报错,目前不知道原因。
4. 配置 Zookeeper:将 Zookeeper 解压后,在在其根目录新建一个存放数据的文件夹 data. 这次需要改 1 个地方。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
5. 配置 Zookeeper:将.\zookeeper-3.4.9\conf 下的zoo_sample.cfg 改名为zoo.cfg, 修改其中的 dataDir 为刚刚新建的 data 文件夹,注意这里的路径是正斜杠,和 windows 默认的不一样。这次需要改 1 个地方。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
6. 配置 zookeeper 和各个 tomcat 进行关联:首先确定 leader 节点,需要在 server 目录下 (我的是apache-tomcat-8.5.5) 的 bin/catalina.bat 中添加一行
set Java_OPTS=-Dbootstrap_confdir=E:\Tools\solr_home\core0\conf -Dcollection.configName=clusterconf -DzkRun -DzkHost=localhost:2181 -DnumShards=2。这次需要改 1 个地方。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
指定其他三个为 follower 节点,在各自的 server 目录下的 bin/catalina.bat 中添加一行
set JAVA_OPTS=-DzkRun -DzkHost=localhost:2181 -DnumShards=2。这次需要改 3 个地方。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
* -Dbootstrap_confdir ZooKeeper 需要准备一份集群配置的副本,这个参数是告诉 SolrCloud 这些配置是放在哪里,同时作为整个集群共用的配置文件。
* -Dcollection.configName 指定你的配置文件上传到 zookeeper 后的名字,建议和你所上传的核心名字一致,这样容易识别。
* -DzkRun 在 Solr 中启动一个内嵌的 zooKeeper 服务器,该服务会管理集群的相关配置。
* -DzkHost 跟上面参数的含义一样,允许配置一个 ip 和端口来指定用哪个 Zookeeper 服务器进行协调。
* -DnumShards=2 配置需要把你的数据分开到多少个 shard 中
7. 更改 solr 启动端口,对应你的 tomcat 端口:在每一个 solr_home 下,都有对应的solr.xml, 修改其中的端口号为之前 Tomcat 启动的端口。这次需要改 4 个地方。
* -Dbootstrap_conf=true 将会上传 solr/home 里面的所有数据到 zookeeper 的 home/data 目录, 也就是所有的 core 将被集群管理,本次我未使用这个参数。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
8. 启动 Zookeeper:双击./zookeeper-3.3.6/bin/zkServer.cmd
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
9. 依次启动 Tomcat 服务:双击 \apache-tomcat-8.5.5\bin\startup.bat
启动第一台 server 后,访问 http://localhost:8080/solr/index.html
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
启动第其余三台 server 后,访问 http://localhost:8080/solr/index.html
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
竟然只有一台 server 正常工作,检查日志,发现有异常出现:
java.lang.IllegalStateException: This CoreContainer has been closed
java.util.concurrent.ExecutionException: org.apache.solr.common.SolrException: Unable to create core [core0],分析是因为 tomcat 的端口问题,于是将 server.xml 中所有的端口都改为在集群中不重复数字,问题解决。
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群
下图是我的.\apache-tomcat-8.5.5 – 8083\conf\server.xml 的配置情况:
Solr6 与 Zookeeper 在 Tomcat 环境安装部署 SolrCloud 集群

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-10/136110.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2546字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中