CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(五)

文章详细介绍了如何在SolrCloud中配置开机自启动,并解决了使用Nginx做负载均衡时遇到的问题。包括设置NGINX进行轮询转发请求,以及在SolrCloud中创建collection节点时的常见错误处理方法。同时,还讨论了SolrJ开发应用系统时的注意事项,以及如何避免在项目工程中导入不必要的jar文件导致系统故障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  六、修改 /etc/rc.d/rc.local 文件,设置开机自启动

  1、nginx 主机的设置

[root@nginx 桌面]# vi /etc/rc.d/rc.local

#!/bin/sh

touch /var/lock/subsys/local
nginx
  2、solr 主机的设置

[root@nginx 桌面]# vi /etc/rc.d/rc.local

#!/bin/sh

touch /var/lock/subsys/local
/media/solr/app/zookeeper/bin/zkServer.sh start
/media/solr/app/tomcat/bin/catalina.sh start
  七、在 SolrCloud 4.5.1 和开发过程中发现的一些问题

  1、在 SolrCloud 中创建 collection 节点时,当使用的配置文件有问题时,创建过程会发生错误,但 SolrCloud 仍会在相应的主机的 SolrHome目录中创建相关的目录,通过 SolrCloud Web界面查看 Cloud 时会有错误提示,但不影响系统的运行。要去掉错误提示,必须在相关的主机上删除SolrHome目录中的相应子目录,然后重启 Tomcat 才可以消除错误提示。

  2、每个 collection 虽然可以创建多个副本(replication),但当其中一个副本的主机无响应的时候,存活的主机不会将副本数据复制一份到其它主机上,而是等待无响应主机的恢复。如果遇到极端情况:假设collection2 有两个 Shard(shard1 和 shard2), shard2 下有两个副本(192.168.0.11 和 192.168.0.13),在凌晨1时192.168.11当机,因为缺少自动报警功能(或者有自动监控系统并进行报警,但半夜在听到报警提示),管理员未能及时处理,而到凌晨4时 192.168.0.13 也发生当机,这会导致整个 shard2 无法访问,从而致使整个 collectin2 无法访问。这点 SolrCloud 就不如 hadoop 。

  3、如果使用 SolrJ 开发应用系统,目前版本的SolrJ还不支持创建 SolrCloud 的 Collection 节点,但官方网站上已经有相应的补丁文件提供,估计下一个版本的 Solr 会对此支持。

  4、开发应用系统的时候,不要将Solr里的所有jar文件都导入项目工程中,特别不要将 solr.war 中的 web.xml 带进项目工程,这样会导致系统认为有两个SolrCloud 发生 Tomcat 在启动时卡死。

  下图是在用SolrJ赶趟开发时,新建项目工程里要导入的jar文件(不要多加,开发时要用到哪个库再导哪个库)


  5、在用Nginx做负载均衡的时候发现了一个问题。我们知道,Nginx会根据upstream里列出的服务器的列表进行轮循转发请求,在本文中一共有5个Solr主机,在upstream里写上了五台主机的IP和端口,这时如果通过Nginx访问SolrCloud的话,刷新5次SolrCloud Web界面,浏览器就会有5次请求发往Nginx,Nginx会轮着把5台Solr主机依次访问一遍。假设现在我们有一个Collection,名称为TestColle1,下面有两个Shard,分别为shard1和shard2,每个Shard有两个Core,shard1存放在solr1和solr2主机上,shard2存放在solr3和solr4上。当我们经Nginx对SolrCloud进行查询时,如果Nginx转发的请求是发往solr1、solr2、solr3、solr4主机的话,能正常返回想要的XML格式的数据;而如果Nginx转发的请求是发往solr4的话,居然返回一个空白(什么字符都没有),这会引起SolrJ在解析XML格式时报错。然而,如果我们用同样的方法直接访问solr4的话,却能正常返回想要的XML格式的数据,很是奇怪。我找了很多资料,试了很多Nginx的参数配置,都没找原因。希望有人能帮我解决这个问题。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天神笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值