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

六、修改 /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文件(不要多加,开发时要用到哪个库才导哪个库)

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