最近领导说业务上在调研solr,让我空的时候在测试环境安装下单机版的solr。额,由于之前没用过,所以抓紧学习下solr的安装。
考虑到以后线上用的肯定是solr集群,所以我便开始在网上找各种solr集群搭建的文章。
在经历一个晚上的折腾之后,踩了很多的坑,终于将solr集群搭建完成。
一、整体拓扑说明
规划3个zookeeper做zookeeper集群
规划4个solr做solr集群
二、准备工作
1.版本选择
亲测得到的结论是:jdk使用1.8及以上版本,tomcat使用8及以上版本,否则会各种报错。
软件 | 版本 |
zookeeper | 3.4.9 |
solr | 7.4.0 |
jdk | jdk-8u144-linux-x64.tar.gz |
tomcat | 8.0.30 |
2.下载软件
http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz 下载zookeeper
http://archive.apache.org/dist/lucene/solr/7.4.0/solr-7.4.0.tgz 下载solr
https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.30/bin/apache-tomcat-8.0.30.tar.gz 下载tomcat
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html 下载jdk
三、安装zookeeper集群
zookeeper集群的安装过程详见我的另一篇博客:点我直达 根据实际情况改变IP地址即可。
四、安装solr集群
1.在四台服务器上都安装java环境
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/jdk1.8.0_144 /usr/local/jdk
sed -i.ori '$a export JAVA_HOME=/usr/local/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
source /etc/profile
#出现下面结果证明部署成功
[root@localhost opt]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
-----------------------以下2-10步操作在第一台上执行即可,执行完成后拷贝到另外3台上----------------
2.创建solr-cloud目录,用来存放tomcat和solrhome
mkdir -p /usr/local/solr-cloud
3.解压tomcat到solr-cloud目录
tar -zxvf apache-tomcat-8.0.30.tar.gz -C /usr/local/solr-cloud/
cd /usr/local/solr-cloud/
mv apache-tomcat-8.0.30 tomcat
4.tomcat优化
tomcat的优化可以参考我的另一篇博客:点我直达
5.将solr项目添加扫tomcat中
cp -rf /usr/local/src/solr-7.4.0/server/solr-webapp/webapp /usr/local/solr-cloud/tomcat/webapps/solr
6.添加tomcat中的solrhome
cp -rf /usr/local/src/solr-7.4.0/server/solr /usr/local/solr-cloud/solrhome
7.将solr中的一些jar包放到tomcat的solr项目中,这一步很重要,不然会报错的,我刚开始就是在这一顿报错,折腾了很久啊!!!
cd /usr/local/src/solr-7.4.0/server/lib
cp metrics-*.jar /usr/local/solr-cloud/tomcat/webapps/solr/WEB-INF/lib/
cd /usr/local/src/solr-7.4.0/server/lib/ext
cp *.jar /usr/local/solr-cloud/tomcat/webapps/solr/WEB-INF/lib/
#会提示目标目录有相同的包,直接输入yes覆盖就行。
8.修改solrhome配置
vim /usr/local/solr-cloud/solrhome/solr.xml
9.修改solr配置关联solrhome
/usr/local/solr-cloud/tomcat/webapps/solr/WEB-INF/web.xml
10.注释掉访问限制
线上代码连接solr都是通过内网连接的,个人认为没有必要设置访问用户名和密码。
如果要设置,可以参考这个地址
--------------------------------------------------------------------------------------------------------------------------------
11.拷贝solr-cloud目录到其他3台服务器上,并进行配置文件中的IP地址的修改。
其实就是改一下/usr/local/solr-cloud/solrhome/solr.xml 里面的host的IP地址啦。。
12.zookeeper统一管理配置 solrhome 文件
# 进入solr源码包目录
cd /usr/local/src/solr-7.4.0/server/scripts/cloud-scripts
# 执行
./zkcli.sh -zkhost 192.168.0.112:2181,192.168.0.113:2181,192.168.0.114:2181 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome/configsets/sample_techproducts_configs/conf -confname myconf
# 说明
zkhost:集群ip
confdi:solrhome的conf目录
confname:上传conf文件的名称
这个命令只需要在任意一个zk节点执行即可实现zk统一管理4个solrhome配置
13.验证zk的conf是否上传成功
cd /usr/local/zookeeper-3.4.9/bin/
./zkCli.sh
出现下图中的表示成功了
14.关联solr和zookeeper
在tomcat的catalina.sh中加入zookeeper集群的配置。4台都是如下配置。
JAVA_OPTS="-DzkHost=192.168.0.112:2181,192.168.0.113:2181,192.168.0.114:2181"
具体位置如下(可以通过umask搜索):
15.启动访问
在4台服务器上都启动tomcat。
这个时候可以访问solr的集群了
试试创建一个collection
查看云图