最近正好在做有关Solr索引的工作,为了工作方便,便在虚拟机中搭建了SolrCloud集群环境,网上关于SolrCloud搭建的教程很多,自己折腾了好一会终于把SolrCloud环境搭建完毕,下面分享一下主要步骤。
1 搭建环境:
VMWare下Ubuntu14.0
ZooKeeper-3.4.6.jar
Solr-5.2.1.jar
Tomcat-7.0
2.搭建步骤:
其实搭建SolrCloud的原理并不复杂,无非就是首先在Tomcat中布好Solr单节点,再通过ZooKeeper将各个节点连接起来。
2.1 Tomcat安装
这个就比较简单了,将Tomcat安装包下载下来放在对应的目录即可,由于我这里模拟的是伪分布模式,所以在Ubuntu中安装了3个Tomat用以模拟3个节点的情况,3个安装包分布设置3个端口:分别为8080 ,8081,8082:
图1 3个Tomcat安装文件
Tomcat端口的更改在{tomcat}/conf/server.xml文件中:
图2 Tomcat端口更改
3个文件中的port值分别设置为8080、8081、8082即可,现在分别启动3个Tomcat,就得到了3个单节点。
2.2 ZooKeeper伪分布安装
这里要搭建ZooKeeper的伪分布模式,同理也是在一个机器上,只不过端口不同。
首先下载ZooKeeper安装包解压至相应的目录下,ZooKeeper默认是单节点的,端口是2181,为了模拟出ZooKeeper集群,在ZooKeeper目录创建3个data目录,分别用来作为每个ZooKeeper节点的存储目录:
图3 ZooKeeper单节点数据目录
在每个文件夹下分别建立一个myid文件,分别写入内容1、2、 3,这个文件是用来标识各个ZooKeeper节点的。
下面打开ZooKeeper目录下的conf目录,里面有一个文件zoo.fg,将该文件复制两份,3个文件分别为zoo1.cfg、zoo2.cfg、zoo3cfg,这3个文件分别是各个ZooKeeper节点的配置启动文件。
打开zoo1.cfg文件,进行如下修改: dataDir修改为data_1的位置,clientPort为2181,并在文件末尾加上如下配置:
server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
这里server后缀1、2、3分别对应各个data目录中myid文件中的内容。对于zoo2.cfg和zoo3.cfg文件,将dataDir设置为data_2和data_2文件夹的位置,clientPort分别设置为2182和2183,这样3个ZooKeeper节点就配置完成了。
通过以下命令分别启动各个ZooKeeper节点,也就启动了ZooKeeper集群:
图3 ZooKeeper集群启动
2.3 Solr安装配置:
下载solr-5.2.1.jar包解压至相应目录下,在/server/webapps/目录下有一个solr.war文件,将该文件拷贝至3个Tomcat目录的webapps目录下,启动Tomcat,会自动解压成文件夹,这样就将solr部署在Tomcat上了,
下面对每个Tomcat文件夹执行以下相同操作:
拷贝solr-5.2.1/server/lib/ext目录下的所有文件至Tomcat的webapps/solr/WEB-INF/lib目录下
拷贝solr-5.2.1/server/resources/log4j.properties至Tomcat的webapps/solr/WEB-INF//classes目录下
接下来要为各个Tomcat下的solr指定solr/home,也就是Solr的数据索引存储目录,默认在solr-5.2.1/server目录的solr目录是作为存储目录的,为方便起见,直接在solr-5.2.1/server/目录下再创建solr1和solr2目录,并且将solr目录中的内容拷贝到这两个目录中去,这样这3个目录分别作为3个ZooKeeper节点的索引存储目录。
修改每个Tomcat文件夹下/webapps/solr/WEB-INF/web.xml文件,以Tomcat8080文件夹为例:
图4 指定solr/home的位置
如图所示指定了Tomcat8080端口上solr的存储目录,其他两个Tomcat上的solr配置依次类推。现在依次启动各个Tomcat在各个端口上都可以访问到本端口配置的solr,下面通过配置相关属性将3个端口上的solr连接起来:
在上图的solr/home目录下有一个solr.xml文件,修改该文件:
图5 solr.xml文件修改
其中的host对应主机IP,hostPort与各个对应的Tomcat端口号对应 zkHost对应ZooKeeper的集群地址
下面是很重要的一步: 在Tomcat8080/bin/目录下有一个catalina.sh文件,在该文件中添加以下内容:
其中的-Dbootstrap_confdir指定了solr集群的配置文件目录,其中包括了solr必备的schema文件,-Dcollection.configName为配置文件名,这个可以自己设定
对Tomcat8081/bin/和Tomcat8082/bin/目录下的catalina.sh文件分别添加以下内容:
因为在Tomcat8080中已经指定了配置文件,这两个目录中可以不用再指定了,添加zkHost配置即可。
至此,我们已完成了SolrCloud的伪分布式搭建,下面首先启动ZooKeeper集群,再依次启动Tomcat8080、Tomcat8081、Tomcat8082,打开浏览器,输入solr地址,当看到solr页面左侧标签中有cloud图标时,表明solrcloud集群搭建成功。
总结:SolrCloud环境搭建的原理还是比较简单的,实际的SolrCloud环境搭建和伪分布式环境搭建步骤一样。