Solr6.2.0 + zookeeper 集群搭建
一、安装包准备
jdk版本:jdk-8u172-linux-x64.tar.gz
solr版本:solr-6.2.0.tgz
zookeeper版本:zookeeper-3.4.6.2.6.4.0-91.jar
tomcat版本:apache-tomcat-8.5.46.tar.gz
二、IP地址规划
jdk : 192.168.12.21 ~ 192.168.12.23
solr : 192.168.12.21 ~ 192.168.12.23
zookeeper : 192.168.12.21 ~ 192.168.12.23
tomcat : 192.168.12.21 ~ 192.168.12.23
三、安装目录规划
jdk : 省略
zookeeper : 省略
solr : /usr/local/src/solrcloud
|_________solr (Solr安装目录)
|_________solr-config (solr配置文件目录)
|_________solr-cores (solr数据文件目录)
Tomcat : /usr/local/src/tomcat (此处tomcat为apache-tomcat-8.5.46.tar.gz解压后的名称)
四、基础环境安装
jdk安装 : 省略
zookeeper安装 : 省略
Tomcat安装 : 省略
五、solr集群安装
1、先在192.168.12.21服务器上安装
a) 解压 solr-6.2.0.tgz ,并把solr.war解压到/usr/local/src/solrcloud/solr 目录下
tar -zxvf solr-6.2.0.tgz mv /usr/local/src/solrcloud/solr-6.2.0/server/solr-webapp/webapp /usr/local/src/solrcloud/solr
b) 将 solr-6.2.0/server/lib/ext/ 目录下的jar包拷贝到 /usr/local/src/solrcloud/solr/WEB-INF/lib/ 目录下
cp -r /usr/local/src/solrcloud/solr-6.2.0/server/lib/ext/*.jar /usr/local/src/solrcloud/solr/WEB-INF/lib/
c) 将 solr-6.2.0/server/solr/configsets/basic_configs/conf/ 目录下的文件拷贝到 /usr/local/src/solrcloud/solr-config/
cp -r /usr/local/src/solrcloud/solr-6.2.0/server/solr/configsets/basic_configs/conf/* /usr/local/src/solrcloud/solr-config/
d) 将 solr-6.2.0/example/files/conf/ 目录下的文件夹拷贝到 /usr/local/src/solrcloud/solr-config/
cp -r /usr/local/src/solrcloud/solr-6.2.0/example/files/conf/lang /usr/local/src/solrcloud/solr-config/
e) 将 /usr/local/src/solrcloud/solr 目录拷贝到 /usr/local/src/tomcat/webapps/ 目录下
cp -r /usr/local/src/solrcloud/solr /usr/local/src/tomcat/webapps/
f) 将 solr-6.2.0/server/solr/ 目录下的solr.xml文件拷贝到/usr/local/src/solrcloud/solr-cores 目录下,这是solr的核心配置文件
cp -r /usr/local/src/solrcloud/solr-6.2.0/server/solr/solr.xml /usr/local/src/solrcloud/solr-cores
g) 修改 /data/SolrCloud/solr-cores 目录下的solr.xml,修改hostPort和Tomcat端口一致:
将<int name="hostPort">${jetty.port:8983}</int>修改为<int name="hostPort">自定义端口号</int>
<?xml version="1.0" encoding="UTF-8" ?>
<solr>
<solrcloud>
<str name="host">${host:}</str>
<int name="hostPort">8786</int>
<str name="hostContext">${hostContext:solr}</str>
<bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<int name="zkClientTimeout">${zkClientTimeout:30000}</int>
<int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
<int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
<str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
<str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
</solrcloud>
<shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
<int name="socketTimeout">${socketTimeout:600000}</int>
<int name="connTimeout">${connTimeout:60000}</int>
</shardHandlerFactory>
</solr>
h) 在 /usr/local/src/tomcat/conf/ 目录下创建Catalina/localhost目录
mkdir -p /usr/local/src/tomcat/conf/Catalina/localhost
i) 在 /usr/local/src/tomcat/conf/Catalina/localhost/ 目录下创建solr.xml,此为Solr/home的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="/usr/local/src/tomcat/webapps/solr" debug="0" crossContext="true">
<Environment name="solr/home" type="java.lang.String" value="/usr/local/src/solrcloud/solr-cores/" override="true"/>
</Context>
j) 修改 /usr/local/src/tomcat/bin/catalina.sh 加入以下内容
JAVA_OPTS='-DzkHost=zookeeper1:2181,zookeeper2:2181,zookeeper3:2181/solr'
例如:
k) 修改Tomcat端口号
vim /usr/local/src/znc_solr/tomcat/conf/server.xml
例如:
l)上传ik分词器相关配置文件(ik配置文件见附件)
将ik-analyzer-solr6.x.jar包上传至/usr/local/src/tomcat/webapps/solr/WEB-INF/lib/
创建目录classes, mkdir -p /usr/local/src/tomcat/webapps/solr/WEB-INF/classes
将ext.dic、IKAnalyzer.cfg.xml、stopword.dic三个文件上传至/usr/local/src/tomcat/webapps/solr/WEB-INF/classes/
m) 上传gis相关jts-1.14.jar包(jar包见附件)
将jts-1.14.jar上传至/usr/local/src/tomcat/webapps/solr/WEB-INF/lib/
到此为止,192.168.12.21已安装完毕,接下来进行拷贝到其他节点。
2、将192.168.12.21配置同步到其它服务器
a) 进行复制
scp -r /usr/local/src/{solrcloud,tomcat} 192.168.12.22:/usr/local/src/ scp -r /usr/local/src/{solrcloud,tomcat} 192.168.1.23:/usr/local/src/
b) 上传配置到Zookeeper:
注:
- solrcloud是通过Zookeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到Zookeeper集群。
- solr配置文件目录:/usr/local/src/solrcloud/solr-config/
执行以下操作:
java -classpath .:/usr/local/src/tomcat/webapps/solr/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 192.168.12.21:2181,192.168.12.22:2181,192.168.12.23:2181/solr -confdir /usr/local/src/solrcloud/solr-config/ -confname solr_config
c) 在192.168.12.21 zookeeper1上执行,校验Zookeeper配置文件
在对应zookeeper安装目录执行./zkCli.sh -server 192.168.12.21:2181
[zk: zookeeper1:2181(CONNECTED) 2] ls /solr
[configs]
[zk: zookeeper1:2181(CONNECTED) 3] ls /solr/configs
[solrconfig]
[zk: zookeeper1:2181(CONNECTED) 4] ls /solr/configs/solrconfig
[currency.xml, managed-schema, protwords.txt, solrconfig.xml, synonyms.txt, elevate.xml, stopwords.txt, params.json, lang]
d) 启动Tomcat,
先启动192.168.1.106机器上的tomcat:/usr/local/src/tomcat/bin/startup.sh
再启动其他机器上的Tomcat:/usr/local/src/tomcat/bin/startup.sh
e) 访问solr
http://IP地址:自定义的端口号/solr/index.html
例如:
http://192.168.12.21:8786/solr/index.html
f) 创建Collection及初始化Shard
curl 'http://192.168.12.21:8786/solr/admin/collections?action=CREATE&name=collection1&numShards=3&replicationFactor=1'
g) 查看 /usr/local/src/solrcloud/solr-cores/ 目录
[root@192.168.12.21 solr-cores]# ls /usr/local/src/solrcloud/solr-cores/ collection1_shard1_replica1 solr.xml