进入solr/server/lib/ext目录,把目录下的jar拷贝到tomcat/webapps/solr/WEB-INF/lib下
进入solr/server/resources目录,把log4j.properties拷贝到tomcat/webapps/solr/WEB-INF/classes下,classes文件夹需要自行创建。
如需修改日志输出地址请修改下图位置
name:给core随便起个名字
instanceDir:core的安装目录,这里就是之前在tomcat/solrhome/目录下创建的core1文件夹
dataDir:指定用于存放lucene索引和log日志文件的目录路径,该路径是相对于core根目录(在单core模式下,就直接是相对于solr_home了),默认值是当前core目录下的data。
config:用于指定solrconfig.xml配置文件的文件名,启动时会去core1/config目录下去查找。
schema:即用来配置你的schema.xml配置文件的文件名的,schema.xml配置文件应该存放在当前core目录下的conf目录下。但是下载的solr里没有这个文件,所以也不管了。
#Set ZooKeeper Enviroment
export ZOOKEEPER_HOME=/home/zookeeper-3.4.8
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
windowns下:
右键我的电脑->属性->高级系统设置->高级->环境变量
新建
变量名:ZOOKEEPER_HOME
变量值:D:\a-zookeeper-3.4.8-2181
编辑path
在值之后添加 ;$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf
参数说明:
tickTime:zookeeper中使用的基本时间单位, 毫秒值.
initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower。 initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
dataDir: 数据存放目录. 可以是任意目录.但是我喜欢这么干
dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置
clientPort: 监听client连接的端口号.
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.
配置说明:
需要注意的是clientPort这个端口如果你是在1台机器上部署多个server,那么每台机器都要不同的clientPort,比如我server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也需要区分下。
最后几行唯一需要注意的地方就是 server.X 这个数字就是对应 data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,那么每个server中的zoo.cfg都配server.1,server.2,server.3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
启动zookeeper/bin下的 zkServer.cmd
set JAVA_OPTS=-DzkHost=localhost:2181,localhost:2182,localhost:2183 -Dbootstrap_confdir=D:\apache-tomcat-8-8080\solr\core1\conf -Dcollection.configName=myconf -DnumShards=3
-DzkRun 在Solr中启动一个内嵌的zooKeeper服务器,该服务会管理集群的相关配置。单机版(测试)使用,如果是集群,用下面的-DzkHost来替换,含义一样
例如:
JAVA_OPTS="$JAVA_OPTS -DzkRun -Dbootstrap_conf=true -DnumShards=2"
-DzkHost 跟上面参数的含义一样,允许配置一个ip和端口来指定用那个zookeeper服务器进行协调
例如:
JAVA_OPTS = "$JAVA_OPTS -DzkHost=192.168.56.11:2181,192.168.56.12:2181,192.168.56.13:2181-Dbootstrap_conf=true-DnumShards=2"
-Dbootstrap_confdir :zooKeeper需要准备一份集群配置的副本,所以这个参数是告诉SolrCloud这些 配置是放在哪里。同时作为整个集群共用的配置文件
-Dcollection.configName 是在指定你的配置文件上传到zookeeper后的名字,建议和你所上传的核心名字一致,这样容易识别,当然你也可以在满足规范的情况下自己起名。
-bootstrap_conf=true将会上传solr/home里面的所有数据到zookeeper的home/data目录,也就是所有的core将被集群管理
-DnumShards=2 配置你要把你的数据分开到多少个shard中
-Djetty.port =8080 这个端口跟你所在端口保持一致,这个就是jetty的监听端口,实现集群之间进行通信的,如果这个端口不这样配置,那么就是搜索不到数据
当然这个参数也可以再solr/home/solr.xml下面配置:如下所示
<solrcloud>
<str name="host">${host:}</str><int name="hostPort">${jetty.port:8080}</int>
<int name="hostPort">${jetty.port:8080}</int>
<str name="hostContext">${hostContext:solr}</str>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
</solrcloud>
默认是8983,如果在catalina.sh中指定了,会覆盖上图solr.xml中配置的
注意 :
-DnumShards, -Dbootstrap_confdir和-Dcollection.configName参数只需要在第一次将Solr运行在SolrCloud模式的时候声明一次。它们可以把你的配置加载到 zooKeeper中;如果你在日后重新声明了这些参数重新运行了一次,将会重新加载你的配置,这样你在原来配置上所做的一些修改操作可能会被覆盖。所以官方推荐只在第一个tomcat里面加入这几个参数,其他集群的tomcat里面不加,启动的第一个Solr的端口号,它是你的SolrCloud集群的overseer节点