TOMCAT中SOLR3.5迁移为4.0部署文档
基于官网Example A: Simple two shard cluster
1.1原3. 5版本SOLR/HOME文件
1.2 4.0版本SOLR:apache-solr-4.0.0.tgz
1.3 已经能正常运行的TOMCAT模式下的SOLR3. 5环境服务器
tar zxvf apache-solr-4.0.0.tgz -C /opt/solr4.0
cp /opt/solr4.0/dist/apache-solr-4.0.0.war /usr/local/tomcat/webapps
unzip apache-solr-4.0.0.war -d /usr/local/tomcat/webapps/solr
在/usr/local/tomcat/conf/Catalina/localhost新增文件solr.xml
vim /usr/local/tomcat/conf/Catalina/localhost/solr.xml
<?xml version="1.0" encoding="utf-8"?>
<Context docBase="/usr/local/tomcat/webapps/solr" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.string" value="/opt/solr" override="true" />
</Context>
也可以在/usr/local/tomcat/conf/server.xml中配置
<Context path="/solr" docBase="/usr/local/tomcat/webapps/solr" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/opt/solr " override="true" />
</Context>
说明:指定SOLR/HOME文件存放位置
2.3.1复制原/usr/local/tomcat/webapps/solr/home目录中所有文件到/opt/solr中
2.3.2复制zoo.cfg配置文件到此目录中
2.3.3复制admin-extra.html、admin-extra.menu-bottom.html 和 admin-extra.menu-top.html到每个CORE 的CONFIG目录中
2.3.4复制start.jar 到/usr/local/tomcat/bin目录中
cp /opt/solr4.0 /usr/local/tomcat/bin
vim /opt/solr/solr.xml
<cores adminPath="/admin/cores" defaultCoreName="collection1" host="${host:}" hostPort="${jetty.port:}" hostContext="${hostContext:}" zkClientTimeout="${zkClientTimeout:15000}">
<core name="collection1" instanceDir="collection1" dataDir="/opt/solr/clusters/collection1"/>
<core name="order" instanceDir="order" dataDir="/opt/solr/clusters/order"/>
</cores>
</solr>
修改如下:
host修改为本机HOSTNAME名字(默认也可)
hostport修改为SOLR集群运行端口(默认为8983)
每个core 增加一个数据存放位置 例:dataDir="/opt/solr/clusters/collection1"
2.5.1修改配置solrconfig 中 <luceneMatchVersion>LUCENE_40</luceneMatchVersion> (34修改为40)
2.5.2修改配置solrconfig 中将<indexDefaults> and <mainIndex> 合并为字段<indexConfig></indexConfig>
2.5.3 在如下位置增加配置
338行增加
<updateLog>
<str name="dir">${solr.data.dir:}</str>
</updateLog>
1024启用
<requestHandler name="/replication" class="solr.ReplicationHandler" >
768增加
<requestHandler name="/query" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<str name="wt">json</str>
<str name="indent">true</str>
<str name="df">text</str>
</lst>
</requestHandler>
<requestHandler name="/get" class="solr.RealTimeGetHandler">
<lst name="defaults">
<str name="omitHeader">true</str>
<str name="wt">json</str>
<str name="indent">true</str>
</lst>
</requestHandler>
971行启用
<requestHandler name="/admin/"
class="solr.admin.AdminHandlers" />
其它修改(需开发配合开启自动同步)
http://wiki.apache.org/solr/UpdateRequestProcessor
<updateRequestProcessorChain name="sample">
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory"/>
<processor class="my.package.UpdateFactory"/>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
160行增加
<field name="_version_" type="long" indexed="true" stored="true"/>
说明:用于更新版本号也可不加
chmod 755 /opt/solr
chown -R tomcat:tomcat /opt/solr (设置目录的权限为执行用户和组所有)
3.1.1未设置开机自动启动
vim /usr/local/tomcat/bin/catalina.sh
在20行增加
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr -Dbootstrap_confdir=/opt/solr/collection1/conf,/opt/solr/order/conf -Dbootstrap_confdir=/opt/solr/collection1/conf -DzkRun -DnumShards=2 -Dcollection.configName=clusterconf"
说明:
-Dsolr.solr.home solr/home位置
-DzkRun -DnumShards=2 -Dcollection.configName=clusterconf"
-DzkRun 是启动内置的zookeeper服务器
-Dbootstrap_confdir 是solr conf的目录
-DnumShards 是指要启动shards的数目
-Dcollection.configName 配置文件的名称
180行修改为
CLASSPATH="$CLASSPATH""$CATALINA_BASE"/bin/tomcat-juli.jar:"$CATALINA_HOME"/bin/bootstrap.jar:"$CATALINA_HOME"/bin/start.jar
3.1.2使用JSVC启动修改方法
vim /etc/init.d/tomcat
CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -Xss128k -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMem
oryError -Dis.schedule.on=true -Dsolr.solr.home=/opt/solr -Dbootstrap_confdir=/opt/solr/collection1/conf,/opt/solr/order/conf -Dbootstrap_confdir=/opt/solr/collection1/conf -DzkRun -DnumShards=2 -Dcollection.configName=clusterconf "
在 $CATALINA_HOME/bin/bootstrap.jar下增加并修改为
$CATALINA_HOME/bin/bootstrap.jar\
$CATALINA_HOME/bin/ start.jar
3.2.1未设置开机自动启动
vim /usr/local/tomcat/bin/catalina.sh
在20行增加
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr -DzkHost=域名:9983"
说明:-DzkHost 指定服务器位置及服务端口, 需要在客户端HOSTS中指定服务器的域名
默认情况下,嵌入式zookeeper服务器上运行的Solr端口加1000,所以9983
180行修改为
CLASSPATH="$CLASSPATH""$CATALINA_BASE"/bin/tomcat-juli.jar:"$CATALINA_HOME"/bin/bootstrap.jar:"$CATALINA_HOME"/bin/start.jar
3.2.2使用JSVC启动修改方法
vim /etc/init.d/tomcat
CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -Xss128k -Djava.awt.headless=true -XX:+HeapDumpOnOutOfMem
oryError -Dis.schedule.on=true -Dsolr.solr.home=/opt/solr -DzkHost=域名:9983"
说明:-DzkHost 指定服务器位置及服务端口, 需要在客户端HOSTS中指定服务器的域名
默认情况下,嵌入式zookeeper服务器上运行的Solr端口加1000,所以9983
例:vim /etc/hosts
"192.168.1.* 域名"
在 $CATALINA_HOME/bin/bootstrap.jar下增加并修改为
$CATALINA_HOME/bin/bootstrap.jar\
$CATALINA_HOME/bin/ start.jar
参考文献:
http://wiki.apache.org/solr/SolrCloud
http://hi.baidu.com/llz5023/item/0225231023f03f737b5f2577
http://www.sentric.ch/blog/setting-up-solr-4-0-beta-with-tomcat-and-zookeeper