网上一堆复制文件、修改文件的搭建教程,看完一顿懵,总以为瞎复制文件不安全,容易出乱子。今天看了官方文档作下笔记,使用内嵌的 jetty 和 本身的 zookeeper 启动集群,但愿能给网友一些帮助.node
环境:最好有两台 ubuntu 16 的虚拟机. 只有一台的话应该能够起两个端口不同的 solr 实例, 本身折腾试试
apt update apt install openjdk-8-jdk
这里只安装单机版, zookeeper集群高可用按下不表, 主要研究 solr
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz tar zxvf zookeeper-3.4.9.tar.gz cd zookeeper-3.4.9/conf cp zoo_sample.cfg zoo.cfg cd ../bin/ ./zkServer.sh start
wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6.4.2/solr-6.4.2.tgz tar zxvf solr-6.4.2.tgz && cd solr-6.4.2
说明:加
-force
是由于solr不容许使用 root 进行操做的,其余帐户可不加
./solr start -force
启动后能够直接访问 ip:8983 便可看到 solr web 版的控制台web
./solr create -c test_core -force
上面这条命令建立了一个名为 test_core
的 solr 库,专业名词叫 core
, 集群版叫 collection
. 关于 solr 的术语可上网搜索参考其余文章.apache
集群中的每台机器都要按照如下说明进行配置启动
首先到 solr 安装目录的 bin 下,编辑 solr.in.sh 文件
搜索 SOLR_HOST
, 取消注释, 设置成本身的 ip
搜索 SOLR_TIMEZONE
, 取消注释, 设置成 UTC+8
ubuntu
SOLR_HOST="10.4.81.19" SOLR_TIMEZONE="UTC+8"
注意:SOLR_HOST 若是不是生产环境不推荐设置成主机名,我复制虚拟机实验的时候因为主机名相同经历了一些很深的坑.
./solr start -cloud -z 10.4.81.19:2181 -p 8983 -force
-cloud 参数告诉 solr 集群方式启动,可简写为 -c
-z 参数的值换成本身 zookeeper 的地址和端口
-p 指定 solr web 启动的端口(默认 8983)
-force 上文已经解释过安全
集群中每台机器均可以使用以上命令启动spa
live_nodes 节点可查看注册到集群中的 solr 实例code
建立库只在集群的一台机子上操做便可server
./solr create_collection -c test_collection -shards 2 -replicationFactor 3 -force
-c 指定库(collection)名称
-shards 指定分片数量,可简写为 -s ,索引数据会分布在这些分片上
-replicationFactor 每一个分片的副本数量
-force 上文已说明xml
每一个分片上的副本数据是一致的,leader挂掉后若是不加shards.tolerant=true
会致使库的读写都不可用,待从新选举出 leader 后会恢复, 默认3分钟,能够配置.教程
修改 solr 安装目录的 server/solr/solr.xml
文件
在<solrcloud>
节点内添加一下内容,单位是毫秒
<str name="leaderVoteWait">${leaderVoteWait:10000}</str>