接上篇博客地址:https://blog.csdn.net/SpringCYB/article/details/89951158
1.创建solr文件夹 通过unzip的方式解压tomcat和solr7.6
2.在tomcat/webapps目录下创建solr目录,并将solr-7.2.1/server/solr-webapp/webapp/*目录下的所有内容拷贝过去。
3.将需要的jar包导入到tomcat下的solr中的WEB-INF/lib/ 目录下。
Solr-7.6.0/server/lib/ext/* Solr-7.6.0/server/lib/ metrics开头的文件 5个
gmetric4j-1.0.7
Solr-7.6.0/dist/solr-data...... 2个
4.创建solrhome,将solr-7.6.0/server/solr/*目录下的所有内容拷贝过去。
5.apache-tomcat-8.0.0-RC1/webapps/solr/WEB-INF/web.xml文件,指定solrhome的位置,并注释security-constraint权限内容。
没有指定solrhome 将会报404错误
-注释以下代码 不注释会报403错误
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
6.先启动tomcat 访问http://ip:port/solr/index.html 不加index 404
先开单机版,看看能不能访问到
在tomcat的bin目录下,通过chmod +x *.sh 赋权限,通过./startup.sh 命令启动tomcat,如下图
网页上访问下http://(你的ip地址):(端口号)/solr/index.html
如出现下图所示则表示成功 success
-------------------------------------集群部署开始-------------------------------------
一:拷贝tomcat和solrhome
在/usr/local 路径下新建文件夹 solr-cloud。将之前solr文件夹中单机版中的tomcat,solrhome拷贝到solr-cloud文件夹中。
Tomcat *4个 solrhome*4个
如图所示
二. tomcat修改
1.端口修改
在solr-cloud文件夹中 /tomcat1/conf/server.xml 查询并修改其中的三个port:
其他的tomcat分别修改port的第二个数值为相应数值即可,
如:8180/8109/8105,8280/8209/8205,8380/8309/8305, 8480/8409/8405。。
tomcat1的server.xml配置如下图所示
tomcat2的server.xml配置如下图所示
其他两个以此类推进行配置
2. web.xml 修改
分别修改 webapps/solr/WEB-INF/web.xml文件 - 将solrhome和solr关联起来
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/java/solr-cloud/solrhome1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
以此类推
tomcat2 -> /usr/java/solr-cloud/solrhome2
tomcat3 -> /usr/java/solr-cloud/solrhome3
tomcat4 -> /usr/java/solr-cloud/solrhome4
如图所示
3. catalina.sh修改
通过修改这里的JAVA_OPTS将tomcat和zookeeper关联起来。
分别修改四个tomcat/bin/catalina.sh文件
加入:JAVA_OPTS="-DzkHost=(虚拟机本机ip地址):2181,(虚拟机本机ip地址):2182,(虚拟机本机ip地址):2183"
注意:前后双引号!
粘在如下图所示的地方,四个catalina.sh都是一样的配置,我们依次把剩下的三个也配置了
三. solrhome修改
1. solrhome1下面的solr.xml文件修改
host为对应tomcat1部署的电脑ip,hostport为tomcat1修改后的端口号。
solrhome2(192.168.0.102, 8280)
solrhome3(192.168.0.102, 8380)
solrhome4(192.168.0.102, 8480)
把其他三个依次配置
2.在zookeeper1 ,2 ,3的bin目录下通过./zkServer.sh start命令启动自己的三台zookeeper
3.上传solrhome/core1/conf目录
将conf目录上传到zookeeper中,由zookeeper统一管理配置文件。只需要上传任意一个solrhome中的配置就可以了。
切换到之前solr解压的目录中:/solr-7.6.2/server/scripts/cloud-scripts
执行以下命令:
./zkcli.sh -zkhost (自己电脑ip):2181,(自己电脑ip):2182,(自己电脑ip):2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome1/configsets/sample_techproducts_configs/conf -confname myconf
可以进入zookeeper目录中验证一下是否成功。
在zookeeper1/bin目录下执行 ./zkCli.sh 命令查看zookeeper上的配置文件信息
输入Ls /
出现 configs 代表成功
四. 启动tomcat
新建一个文件,来一键启动tomcat。
vim start-tomcat.sh
/usr/local/solr-cloud/tomcat1/bin/startup.sh
/usr/local/solr-cloud/tomcat2/bin/startup.sh
/usr/local/solr-cloud/tomcat3/bin/startup.sh
/usr/local/solr-cloud/tomcat4/bin/startup.sh
通过chmod +x *sh赋权限
通过./start-tomcat.sh 启动tomcat集群
浏览器中打开:http://(自己电脑ip):8180/solr/index.html
菜单上会出现一个Cloud目录
我们创建新的Collection进行分片处理。
点击页面的Collections按钮,然后就能添加了(高版本的solr才有,低版本的需要通过地址栏传递参数去设置,比较麻烦)
用自己上传的myconf配置文件,有2片shard,每个shard有2个备份节点一主一备
实现分片效果如下图
分片:
http://127.0.0.1:8180/solr/admin/collections?action=CREATE&name=core2&numShards=2&replicationFactor=2
在浏览器中直接访问以上地址.
如果报 org.apache.solr.handler.dataimport.DataImportHandler 错误, 则将 solr7.6/contrib/dataimporthandler-extras/lib的jar包拷贝一份到tomcat/webapps/solr/WEB-INF/lib 中去.
刷新solr/index.html页面看看
最终效果:
你会发现,又多出一个core2, 且也是分片的. 以前只有一个主solr, 现在有两个主solr了.
集群搭建完成!
删除不用的Collection:http://127.0.0.1:8180/solr/admin/collections?action=DELETE&name=名称
如果出现403,404报错可以看下如下文章:
solr 7 整合tomcat8 出现403,404错误解决方案:https://blog.csdn.net/qq_37230967/article/details/79138421
谢谢观看,如有建议,欢迎提出。一起交流!