Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
工作方式
文档通过Http利用XML 加到一个搜索集合中。
查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
SolrCloud安装
SolrCloud是一个分布式解决方案,安装之前需要我们评估自己应用的数据规模,规划SolrCloud集群如划分多少个Shard,每个Shard需要几分冗余即Replication等
环境
solr-6.3.0
zookeeper-3.4.9
jdk1.8.0_60
安装前的准备工作
安装JDK
1.搭建zookeeper集群
1)将zookeeper解压到/opt/ydbsofware目录
2)将zookeeper发送到另外两台机器上
scp -r /opt/ydbsoftware/zookeeper-3.4.9/ root@ydbslave02:/opt/ydbsoftware
scp -r /opt/ydbsoftware/zookeeper-3.4.9/ root@ydbslave03:/opt/ydbsoftware
3)创建log目录及data目录
mkdir -p /opt/ydbsoftware/dat/zookeeper
mkdir -p /opt/ydbsoftware/logs/zookeeper
4)给每台机器上的zookeeper添加myid标识
echo "1" >> /opt/ydbsoftware/dat/zookeeper/myid
echo "2" >> /opt/ydbsoftware/dat/zookeeper/myid
echo "3" >> /opt/ydbsoftware/dat/zookeeper/myid
5)找到zoo_sample.cfg文件,重命名为:zoo.cfg,或者复制一份然后重命名为zoo.cfg,修改zoo.cfg
tickTime=2000
//心跳的发送间隔
initLimit=10
//初始化后收到leader回应的最大心跳周期
sysncLimit=5
//请求和应答长度最多不超过多少个心跳周期
dataDir=/apps/dat/zookeeper
//数据的存储路径
dataLogDir=/apps/Logs/zookeeper
//日志目录
clientPort=2181
//zookeeper的客户端端口号
server.1=ydbslave01:4888:5888
//server.A=B:C:D
//A:zookeeper的myid
//B:ip或域名
//C:这个服务器与集群中leader交换信息的端口
//D:当原leader挂了,选举新的leader,这个端口是选举使用的端口号
6)启动zookeeper节点
cd opt/ydbsoftware/zookeeper-3.4.9/bin/
./zkServer.sh start
要将集群中所有的zk节点都启动才能使用
至此zookeeper集群就已经搭建完毕了,接下来开始搭建Solr Cloud
2.安装solr
1)由于solr 不推荐使用root权限启动,在这里我们创建一个solr用户
useradd solr
2)解压solr到/opt目录下,更名为solr
3)使用root权限将目录的文件主更改为solr
chown -R solr /opt/solr
赋予solr用户文件权限
chmod 777 solr /opt/solr/
4)打开 bin目录下的solr.in.sh
修改ZK_HOST
ZK_HOST="host1,host2,host3"
配置SOLR_HOME
SOLR_HOME=/opt/solr/server/solr
配置SOLR_HOST
SOLR_HOST="host1,host2,host3"
5)在./service/solr目录创建一个solrconfig的目录
将配置文件复制进这个目录,在solr6.0.0+的版本中
要求至少要有solrconfig,xml和managed-schema.xml两个文件
不论是创建一个core还是一个collection都不能缺少这两个文件,当创建一个core时,这两个文件应放在/corename/conf/目录下,而collection则将该目录上传到zookeeper集群中由zookeeper来统一管理
6)创建一个core
在SOLR_HOME中创建一个名为testcore的目录,目录结构如下
conf目录中的两个配置文件在/opt/solr/server/solr/configsets/basic_configs/conf
目录中有默认版本,可以复制过来使用,并添加自定义的配置
运行bin目录下的solr文件
./bin/solr start
如果是root账户执行的话要添加 -force
./bin/solr start -force
在浏览器中打开solr的UI界面,http://hostname:8983/solr
点击addCore 就可以将创建好的core添加到solr中
7)创建collection
将collection的配置文件上传到zookeeper集群中
./solr/server/scripts/cloud-scripts/zkcli.sh -zkhost ydbslave01:2181,ydbslave02:2181,ydbslave03:2181 -cmd upconfig -confdir ./solr_home/solr/test/conf/ -confname posttest
zkcli.sh:用于上传配置文件到zookeeper配置文件目录的批处理文件
-zkhost :用于指定上传配置文件到那个zookeeper中
-cmd upconfig:上传配置文件
-confdir :配置文件目录
--confname :给配置文件指定一个名字
上述命令的意义在于,将指定目录的配置文件上传到zookeeper集群中,指定配置的名字为posttest
使用帮助:
[root@ydbslave01 cloud-scripts]# ./zkcli.sh
usage: ZkCLI
-c,--collection for linkconfig: name of the collection
-cmd cmd to run: bootstrap, upconfig, downconfig,
linkconfig, makepath, put, putfile,get,getfile,
list, clear, updateacls
-d,--confdir for upconfig: a directory of configuration
files
-h,--help bring up this help page
-n,--confname for upconfig, linkconfig: name of the config
set
-name name of the cluster property to set
-r,--runzk run zk internally by passing the solr run port
- only for clusters on one machine (tests, dev)
-s,--solrhome for bootstrap, runzk: solrhome location
-val value of the cluster to set
-x,--excluderegex for upconfig: files matching this regular
expression won't be uploaded
-z,--zkhost ZooKeeper host address
Examples:
zkcli.sh -zkhost localhost:9983 -cmd bootstrap -solrhome /opt/solr
zkcli.sh -zkhost localhost:9983 -cmd upconfig -confdir /opt/solr/collection1/conf -confname myconf
zkcli.sh -zkhost localhost:9983 -cmd downconfig -confdir /opt/solr/collection1/conf -confname myconf
zkcli.sh -zkhost localhost:9983 -cmd linkconfig -collection collection1 -confname myconf
zkcli.sh -zkhost localhost:9983 -cmd makepath /apache/solr
zkcli.sh -zkhost localhost:9983 -cmd put /solr.conf 'conf data'
zkcli.sh -zkhost localhost:9983 -cmd putfile /solr.xml /User/myuser/solr/solr.xml
zkcli.sh -zkhost localhost:9983 -cmd get /solr.xml
zkcli.sh -zkhost localhost:9983 -cmd getfile /solr.xml solr.xml.file
zkcli.sh -zkhost localhost:9983 -cmd clear /solr
zkcli.sh -zkhost localhost:9983 -cmd list
zkcli.sh -zkhost localhost:9983 -cmd clusterprop -name urlScheme -val https
zkcli.sh -zkhost localhost:9983 -cmd updateacls /solr
这样的话,在zookeeper集群中就有了一个叫posttest的配置了,
接下来创建collection
./solr create -c postcolletions -s 3 -rf 3 -n posttest
-c :指定collection名称
-s :生成几个share
-rf :副本数
-n :配置名称
至此,我们就已经成功的搭建了一个solr cloud了。