环境要求
- jdk1.8
- tomcat8
- solr7
- zookeeper3
- linux or mac
步骤
一、准备环境
jdk8安装:参考 Linux安装jdk8并配置环境变量
搭建Zookeeper集群:Zookeeper集群搭建(伪集群)
三个zookeeper的配置如下:
zookeeper1 | zookeeper2 | zookeeper3 | |
---|---|---|---|
地址 | 127.0.0.1 | 127.0.0.1 | 127.0.0.1 |
端口 | 2181 | 2182 | 2183 |
tomcat集成Solr:参考Solr(一)基于tomcat的solr环境搭建
二、上面的步骤全部完成后开始搭建solr集群:
前提&约定
这里提前规划好,假设我们搭建solr集群有4台机器如下:
solr1 | solr2 | solr3 | solr4 | |
---|---|---|---|---|
tomcat | tomcat1 | tomcat2 | tomcat3 | tomcat4 |
端口 | 8081 | 8082 | 8083 | 8084 |
使用zookeeper作为同步组件,地址、端口等配置见上一步
-
1、假设已经搭建好了一个基于tomcat的solr服务器的tomcat1,内部结构如下图,现在就对这个tomcat1进行相关配置的修改:
-
1⃣️、修改tomcat1的conf/server.xml,三个端口需要修改,具体位置如下:
-
2⃣️、修改tomcat1的bin/catalina.sh,加入zookeeper集群配置(zookeeper的地址和端口)
1
JAVA_OPTS="-DzkHost=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183"
-
3⃣️、修改tomcat1中solrHome/solr.xml,配置对应tomcat的IP与端口
-
4⃣️、修改tomcat1中webapps/solr/WEB-INF/web.xml,配置对应的solrHome位置
-
-
2、配置其他的三个solr服务器,以tomcat1为模板复制出tomcat2、tomcat3、tomcat4
-
1⃣️、复制出三个tomcat
1 2 3
cp -r tomcat1 tomcat2 cp -r tomcat1 tomcat3 cp -r tomcat1 tomcat4
-
2⃣️、根据上一步对conf/server.xml、bin/catalina.sh、solrHome/solr.xml、webapps/solr/WEB-INF/web.xml进行修改,修改后的tomcat配置如下:
/ tomcat1 tomcat2 tomcat3 tomcat4 server.xml三个端口配置 8105/8081/8109 8205/8082/8209 8305/8083/8309 8405/8084/8409 solr.xml的ip与端口配置 (tomcat的访问地址) 127.0.0.1:8081 127.0.0.1:8082 127.0.0.1:8083 127.0.0.1:8084 web.xml的solrHome位置 */tomcat1/solrHome */tomcat2/solrHome */tomcat3/solrHome */tomcat4/solrHome -
3⃣️、编写启动4个tomcat的脚本和停止4个tomcat的脚本
启动脚本tomcat-startup.sh
1 2 3 4 5 6 7 8
cd /Users/oumuv/solr/tomcat1 bin/startup.sh cd /Users/oumuv/solr/tomcat2 bin/startup.sh cd /Users/oumuv/solr/tomcat3 bin/startup.sh cd /Users/oumuv/solr/tomcat4 bin/startup.sh
停止脚本tomcat-shutdown.sh
1 2 3 4 5 6 7 8
cd /Users/oumuv/solr/tomcat1 bin/shutdown.sh cd /Users/oumuv/solr/tomcat2 bin/shutdown.sh cd /Users/oumuv/solr/tomcat3 bin/shutdown.sh cd /Users/oumuv/solr/tomcat4 bin/shutdown.sh
赋予执行权限
1 2
chmod 755 tomcat-startup.sh chmod 755 tomcat-shutdown.sh
-
-
3、使用zookeeper管理 solr core 配置 到了这一步solr的集群搭建已经基本完成了,现在我们要使用zookeeper来管理solr的core(核心配置),是4个solr的core同步
- 打开solr原始目录(solr安装包解压后的目录),找到 /server/scripts/cloud-scripts/zkcli.sh,使用这个脚本来上传core配置到zookeeper,命令如下:
1
./zkcli.sh -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183 -cmd upconfig -confdir /Users/oumuv/solr/tomcat1/solrHome/collectionA/conf -confname myconf
解释一下这个脚本的意思:
1
三台zookeeper的通信ip及端口: -zkhost 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
1
执行上传配置的命令: -cmd upconfig
1
需要上传的配置所在目录: -confdir /Users/oumuv/solr/tomcat1/solrHome/collectionA/conf
1
上传后的目录重命名为myconf: -confname myconf
-
执行了上面的脚本后zookeeper集群中就会多出一个myconf的目录,这个目录就是我们上传的/Users/oumuv/solr/tomcat1/solrHome/collectionA/conf 目录,怎么检验呢?
- 到其中一个zookeeper目录中执行 bin/zkCli.sh 命令
- 再执行 ls /configs 命令查看是否存在刚刚上传的 myconf ,结果如下
三、启动、测试
-
使用刚刚我们准备的脚本启动4个tomcat
1
./tomcat-startup.sh
-
等待启动成功后进去其中的一个solr1页面中查看http://localhost:8081/solr/index.html#/
看到如下页面(菜单中多了 cloud 一栏)
-
添加创建 core:
- 两种方法,方法一:
稍等出现如下页面就是成功
- 方法二:
- 查看是否创建成功
-
到其他的solr中查看,也能查看到刚刚创建的两个core,同步成功!