solrCloud+tomcat+zookeeper配置
需要用到以下的软件:
solr-4.10.3 zookeeper-3.4.6.tar.gz apache-tomcat-7.0.57
首先在/opt 目录下新建 solr_platform (mkdir solr_platform)
进入 solr_platform (zookeeper solr tomcat 都安装在该目录中)
一 zookeeper安装
1 解压缩zookeeper ———— tar -zxvf zookeeper-3.4.6.tar.gz
2 在solr_platform目录下新建zookeeper_data和zookeeper_log文件夹(如图1)所示
图1
3 修改配置:每台机器都复制conf下的zoo_sample.cfg为zoo.cfg,并在zoo.cfg删除以前的配置,加现如下配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/solr_platform/zookeeper_data
dataLogDir=/opt/solr_platform/zookeeper_log
clientPort=2181
server.1=ip1:2888:3888
#server.2=ip2:2889:3889
#server.3=ip3:2890:3890
注:其中ip1、ip2为机器的ip,添加前请确保每台机器的2888和3888端口没有被占用。(有多台机器,server.2,server.3就是其他机器的zookeeper)
4 并且在zookeeper_data文件夹下新建myid文件,里面写一个1(文件没有后缀名,第二台机子myid文件里面写2,第三台写3以此内推)如(图2)所示
图2
二 solr安装
1 首先在solr_platform目录下新建solr_home_1文件夹
2 解压缩solr-4.10.3文件,将solr-4.10.3/example/solr所有的东西复制到 solr_home_1
3 新建一个data-config.xml文件,添加如下内容:
<?xml version="1.0" encoding="utf-8"?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.7.154:3306/merchant"
user="wechatadmin"
password="portal!(!)cp"/>
<document>
<entity name="label" pk="id" query="select a.id as id,a.name as name from mer_label a">
<field column="id" name="id" />
<field column="name" name="name" />
</entity>
</document>
</dataConfig>
并将该文件放在/opt/solr_platform/solr_home_1/collection1/conf目录中 如(图3)所示
(图3)
4 修改/opt/solr_platform/solr_home_1/collection1/conf目录下的solrconfig.xml文件
将如下内容 如(图4) (图5)所示
<lib dir="${solr.install.dir:../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../..}/dist/" regex="solr-cell-\d.*\.jar" />
<lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
<lib dir="${solr.install.dir:../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../..}/dist/" regex="solr-langid-\d.*\.jar" />
<lib dir="${solr.install.dir:../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
替换为:
<lib dir="../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../contrib/langid/lib/" regex=".*\.jar" />
<lib dir="../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../dist/" regex=".*\.jar" />
图4
图5
在 solrconfig.xml文件<requestHandler name="/select" class="solr.SearchHandler"> 这一行前添加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
如(图6)所示
图6
5将解压缩的solr-4.10.3目录下的dist文件夹和contrib都拷贝到/opt/solr_platform/solr_home_1下 如(图7)所示
图7
三 solr web端安装
1解压tomcat7并其重命名为tomcat_1,将solr-4.10.3\dist目录下的solr-4.10.3.war文件解压到 /opt/solr_platform/tomcat_1/webapps下
注:要手动解压
2在/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF目录下新建classes文件夹
复制solr-4.10.3\example\resources目录下的log4j.properties文件到 /opt/solr_platform/tomcat_1/webapps/classes下(图8所示)
图8
3复制solr-4.10.3\example\lib\ext下所有的jar文件到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下 (图9所示)
图9
4复制solr-4.10.3\dist下的solr-dataimporthandler-4.10.3.jar,solr-dataimporthandler-extras-4.10.3.jar到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下
(图10)所示
5添加一个mysql-connector-java-5.1.20-bin.jar到/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/lib目录下(图11)所示
图11
6将/opt/solr_platform/tomcat_1/webapps/solr/WEB-INF/web.xml文件
下的
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/put/your/solr/home/here</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
改为:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solr_platform/solr_home_1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
如(图12,图13)所示
图12
图13
四 复制/opt/solr_platform/solr_home_1/下的collection1文件夹重命名为:mycore
(图14)所示
图14
1修改/opt/solr_platform/solr_home_1/mycore/conf下的data-config.xml为
<?xml version="1.0" encoding="utf-8"?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.7.154:3306/merchant"
user="wechatadmin"
password="portal!(!)cp"/>
<document>
<entity name="productname" query="select t.id,t.pro_name,t.label_name,CONVERT(t.audit_status,SIGNED) audit_status,CONVERT(t.publish_status,SIGNED) publish_status from mer_product t left join mer_black_user b ON t.user_id = b.user_id WHERE b.ID IS NULL AND t.audit_status IN (2, 4) AND t.publish_status = 1">
<field column="id" name="id" />
<field column="label_name" name="label_name" />
<field column="pro_name" name="pro_name" />
<field column="publish_status" name="publish_status" />
<field column="audit_status" name="audit_status" />
</entity>
</document>
</dataConfig>
2在/opt/solr_platform/solr_home_1/mycore/conf下schema.xml文件添加
<field name="pro_name" type="string" indexed="true" stored="true"/>
<field name="label_name" type="string" indexed="true" stored="true"/>
<field name="publish_status" type="string" indexed="true" stored="true"/>
<field name="audit_status" type="string" indexed="true" stored="true"/>
3修改/opt/solr_platform/solr_home_1下的solr.xml文件
<solr>
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:对应的tomcat端口号}" hostContext="${hostContext:solr}">
<core name="collection1" instanceDir="collection1" />
<core name="mycore" instanceDir="mycore" />
<shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
<str name="urlScheme">${urlScheme:}</str>
</shardHandlerFactory>
</cores>
</solr>
五tomcat配置信息
1修改/opt/solr_platform/tomcat_1/bin下的catalina.sh文件
添加配置
JAVA_OPTS="-Dsolr.solr.home=/opt/solr_platform/solr_home_1 -Dbootstrap_conf=true -Dcollection.configName=myconftt -DnumShards=2 -DzkHost=zookeeper机器ip:2181"
-DzkHost指向的是zookeeper的址,-Dsolr.solr.home指向的是solr的配置信息,-DnumShards是几个碎片
六 将上面的tomcat整体复制一份重命名为tomcat_2,将solr_home_1整体复制一份重命名为solr_home_2
1 修改/opt/solr_platform/tomcat_2/bin下的catalina.sh文件
JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr_platform/solr_home_2 -DzkHost=zookeeper机器ip:2181"
2 修改/opt/solr_platform/tomcat_2/webapps/solr/WEB-INF/web.xml文件
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solr_platform/solr_home_2</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
七启动
启动时,先启动zookeeper,(bin/zkServer.sh start)
然后启动tomcat
注:ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。