单机部署
https://blog.csdn.net/chy2z/article/details/104166535
系统环境
win7 64位
jdk 7
solr 4.7.2
apache-tomcat-7.0.69
集群部署
1) 先搞定单机部署,不会看上面单机部署文档
2) 假设集群有3个节点,把单机部署好有solr admin的tomcat拷贝3份,sorlhome新建3个
3)修改tomcat端口,防止本机启动3个tomcat端口冲突
修改3个tomcat的server.xml配置文件
<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8891" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
apache-tomcat-7.0.69-1 端口 8005,8891(服务端口),8009
apache-tomcat-7.0.69-2 端口 8006,8892(服务端口),8010
apache-tomcat-7.0.69-2 端口 8007,8893(服务端口),8011
4) 复制solrcore
将solr-4.7.2中example\solr目录复制到solrhome1,solrhome2,solrhome3目录中
5)修改web.xml
配置3个节点的solrhome目录
apache-tomcat-7.0.69-1\webapps\solr\WEB-INF\web.xml
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/Soft/solr-cloud/solrhome1/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
apache-tomcat-7.0.69-2\webapps\solr\WEB-INF\web.xml
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/Soft/solr-cloud/solrhome2/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
apache-tomcat-7.0.69-3\webapps\solr\WEB-INF\web.xml
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/Soft/solr-cloud/solrhome3/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
6) 修改log日志目录
配置3个节点的log日志目录
apache-tomcat-7.0.69-1\webapps\solr\WEB-INF\classes\log4j.properties
solr.log=/solrcloud/solrlogs1apache-tomcat-7.0.69-2\webapps\solr\WEB-INF\classes\log4j.properties
solr.log=/solrcloud/solrlogs2apache-tomcat-7.0.69-3\webapps\solr\WEB-INF\classes\log4j.properties
solr.log=/solrcloud/solrlogs3
7) 修改solr.xml
分别修改solrhome1\solr,solrhome2\solr,solrhome3\solr目录中的solr.xml
solrhome1\solr\solr.xml 配置如下:
<solr>
<solrcloud>
<!-- tomcat 服务器ip -->
<str name="host">127.0.0.1</str>
<!-- tomcat 端口 -->
<int name="hostPort">8891</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory"
class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:0}</int>
<int name="connTimeout">${connTimeout:0}</int>
</shardHandlerFactory>
</solr>
只需要修改tomcat的服务器ip和端口即可,另外2个参照修改。
8) 修改catalina.bat
追加jvm参数,配置zookeeper连接地址以及初始化默认collection1的配置文件到zookeeper的参数
apache-tomcat-7.0.69-1\bin\catalina.bat
rem solr connect zkhost
set SOLR_ZKHOST="-DzkHost=127.0.0.1:2181"
set "JAVA_OPTS=%JAVA_OPTS% %SOLR_ZKHOST%"
set "JAVA_OPTS=%JAVA_OPTS% -Dbootstrap_confdir=/Soft/solr-cloud/solrhome1/solr/collection1/conf -Dcollection.configName=solrconf -DnumShards=2"
-DnumShards=2 分片数量
-Dbootstrap_confdir 本地路径
-Dcollection.configName zk存储路径(/configs/solrconf)
备注:tomcat在启动后会检测zk是否有collection.configName,如果没有自动上传bootstrap_confdir文件到zk中
apache-tomcat-7.0.69-2\bin\catalina.bat
rem solr connect zkhost
set SOLR_ZKHOST="-DzkHost=127.0.0.1:2181"
set "JAVA_OPTS=%JAVA_OPTS% %SOLR_ZKHOST%"
apache-tomcat-7.0.69-3\bin\catalina.bat
9) 启动zk
单机zk即可,如果想zk集群部署,请参照zk集群部署
10) 启动tomcat
启动tomcat1,tomcat2,tomcat3
http://localhost:8891/solr/#/~cloud
11) solrcloud
12) zk节点