安装环境,集群部署
| IP | 节点名称 | Zookeeper | Solr |
|---|---|---|---|
| 192.168.100.21 | hadoop5 | zookeeper-3.4.14 | solr-7.7.1.tgz |
| 192.168.100.22 | hadoop6 | zookeeper-3.4.14 | solr-7.7.1.tgz |
| 192.168.100.23 | hadoop7 | zookeeper-3.4.14 | solr-7.7.1.tgz |
解压安装包,运行安装脚本
- tar -zxvf solr-7.7.1.tgz
tar zxf solr-7.7.1.tgz solr-7.7.1/bin/install_solr_service.sh –strip-components=2
上一个命令将install_solr_service.sh脚本从存档中提取到当前目录中 mkdir /opt/module/solr2 mkdir /opt/module/solr运行服务安装脚本:
bash ./install_solr_service.sh solr-7.7.1.tgz -i /opt/module/solr -d /opt/module/solr/solrhome -u solr -s solr -p 8983 bash ./install_solr_service.sh solr-7.7.1.tgz -i /opt/module/solr2 -d /opt/module/solr2/solrhome -u solr -s solr2 -p 8984修改对应jetty服务的端口8983/8984
vi /opt/module/solr/solrhome/data/solr.xml vi /opt/module/solr2/solrhome/data/solr.xml vi /opt/module/solr/solrhome/data/solr.xml vi /opt/module/solr2/solrhome/data/solr.xml配置zk启动优先级
zookeeper自动启动 : vi /etc/init.d/zookeeper
#!/bin/bash #chkconfig:2345 20 90 #description:zookeeper #processname:zookeeper export JAVA_HOME=/opt/module/jdk1.8 export ZOO_LOG_DIR=/opt/module/zookeeper-3.4.14/logs case $1 in start) su root /opt/module/zookeeper-3.4.14/bin/zkServer.sh start;; stop) su root /opt/module/zookeeper-3.4.14/bin/zkServer.sh stop;; status) su root /opt/module/zookeeper-3.4.14/bin/zkServer.sh status;; restart) su root /opt/module/zookeeper-3.4.14/bin/zkServer.sh restart;; *) echo "require start|stop|status|restart" ;; esacchmod +x /etc/init.d/zookeeper
- chkconfig –add zookeeper
关联solr集群与zk集群
- vi /etc/default/solr.in.sh
vi /etc/default/solr2.in.sh
修改如下信息(对应主机host注意更改): ZK_HOST="node21:2181,node22:2181,node23:2181/solr" SOLR_HOST="192.168.100.21"首次连接需要创建节点管理目录
./solr/bin/solr zk mkroot /solr -z hadoop5:2181,hadoop6:2181,hadoop7:2181使用Solr的ZooKeeper CLI上传solr配置信息到zk节点
sh solr/solr-7.7.1/server/scripts/cloud-scripts/zkcli.sh -zkhost hadoop5:2181,hadoop6:2181,hadoop7:2181 -cmd upconfig -confdir /opt/module/solr/solr-7.7.1/server/solr/configsets/_default/conf -confname myconf重新启动
service solr restart service solr2 restart配置solr集群的分片规则
./solr/bin/solr create -c collection1 -n collection1 -shards 2 -replicationFactor 2 -p 8983 -force
./solr2/bin/solr create -c collection2 -n collection2 -shards 2 -replicationFactor 2 -p 8984 -force删除操作
./solr/solr/bin/solr delete -c collection2参数说明:
-c
要创建的核心或集合的名称(必需)。 -n
配置名称,默认与核心或集合的名称相同。 -p
发送create命令的本地Solr实例的端口; 默认情况下,脚本会尝试通过查找正在运行的Solr实例来检测端口。 -s
要么 -shards 将集合拆分为的分片数,默认为1; 仅适用于Solr在SolrCloud模式下运行的情况。 -rf
要么 -replicationFactor 集合中每个文档的副本数。默认值为1(无复制)。 -force 如果尝试以“root”用户身份运行create,则脚本将退出并显示运行Solr或针对Solr的操作作为“root”的警告可能会导致问题。可以使用-force参数覆盖此警告。
-d
配置目录。默认为_default。
ik中文分词器
jar包复制到各个节点
cp ikanalyzer-solr5/ik-analyzer-solr5-5.x.jar ikanalyzer-solr5/solr-analyzer-ik-5.1.0.jar /opt/module/solr/solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib/各个节点执行
mkdir -p /opt/module/solr/solr-7.7.1/server/solr-webapp/webapp/WEB-INF/classes cp ext.dic IKAnalyzer.cfg.xml stopword.dic /opt/module/solr2/solr-7.7.1/server/solr-webapp/webapp/WEB-INF/classes/更改配置文件
vim /opt/module/solr/solr-7.7.1/server/solr/configsets/_default/conf/managed-schema <!--IK中文分词器--> <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer" /> <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer" /> </fieldType>更新配置文件
sh /opt/module/solr/solr-7.7.1/server/scripts/cloud-scripts/zkcli.sh -zkhost hadoop5:2181,hadoop6:2181,hadoop7:2181 -cmd upconfig -confdir /opt/module/solr/solr-7.7.1/server/solr/configsets/_default/conf/ -confname myconf
比如我们修改schema.xml配置文件之后,根本不用登录zookeeper删除原有文件,文件会自动覆盖,这里直接上传即可,命令如下:
./server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd putfile /solr/configs/my_config/schema.xml ../configs/conf/schema.xml
参数putfile指定配置文件在zookeeper上的绝对路径,这里注意是配置的路径,不是collection的路径,二者名称不相同,后面跟的是修改之后本地schema.xml配置文件的路径
重新加载配置文件
http://localhost:8983/solr/admin/collections?action=RELOAD&name=my_collection