Ubuntu下Solrcloud配置(solr7.3.1+zookeeper+tomcat9)
零、环境准备与所需的软件
ubuntu16.04的三台电脑(搭建solr集群需要奇数台电脑,这样好决策),apachezookeeper3.4.12,apache solr7.3.1apache tomcat9.0(这些从官网下载即可)
其中电脑还需要先装JDK
下载好上面三个软件后:三台电脑都执行如下操作
1、将三个软件全部解压(sudotar -xzvf xxxxxx.tar.gz)
2、并修改权限(建议全部改为最高权限chmod777 -R 文件夹的名字)
3、在/opt文件夹下创建目录/solrcolud
4、并将上面的几个软件移动到solrcloud目录下(solrhome文件夹先不用管,以后配置中会说到):
本次使用的三台电脑ip分别为:
192.168.199.141(主)
192.168.199.168
192.168.199.155
一、Zookeeper的配置
1、进入主电脑的zookeeper3.4.12的根目录,新创建空文件夹data,并在data文件夹下创建文本myid,并在里面写上1。另外两台电脑执行一样的操作,分别在myid写入2、3。三台主机对应的id分别为:
192.168.199.141id:1
192.168.199.168id:2
192.168.199.155id:3
2、进入opt/solrcloud/zookeeper-3.4.12/conf文件夹,将zoo_sample.cfg文件名改为zoo.cfg,并且编辑修改里面的内容。
将dataDir改为/opt/solrcloud/zookeeper-3.4.12/data(刚才新建的文件夹)
并在最后加上:
server.1=192.168.199.141:2881:3881
server.2=192.168.199.168:2881:3881
server.3=192.168.199.155:2881:3881
其中28813881为访问端口。因为在三台机器上分别配置,所以无需更改端口
cd到bin目录下,通过如下指令启动solrcloud服务:
./zkServer.shstart
还有如下指令:
./zkServer.shrestart重启服务./zkServer.shstop 停止服务
二、solr的配置
1、进入/opt/solrcloud/solr-7.3.1目录:
bin目录下打开命令行,输入运行命令:solrstart,然后浏览器中输入http://localhost:8983/solr即可访问,结束时的命令:solrstop -all
2、添加solrcore:
core文件存放的位置在server/solr文件夹下,以新建一个名为mycore的core为例,首先需要在该文件夹下新建文件夹,命名为mycore,在mycore文件夹里面构建两个文件夹conf和data,同时拷贝solr-7.3.1/server/solr/configsets/basic_configs/conf文件夹下的内容到mycore/conf文件夹中。
操作后回到http://localhost:8983/solr/,点击coreadmin ,选择addcore,在name处和instanceDir处填入mycore即可,结果如下所示:(此图为其他版本做的,看到类似界面即可)
3、将solr配置到tomcat下面:
3.1 /opt/solrcloud/solr-7.3.1/server/solr-webapp下面的webapp复制
到/opt/solrcloud/apache-tomcat-9.0.8/webapps文件夹下面并且改名为solr;
3.2把solr-7.3.1/server/lib/ext目录下的所有jar包、和solr-7.3.1/dist下的solr-dataimporthandler-7.3.1.jar、solr-dataimporthandler-extras-7.3.1.jar粘贴复制到tomcat下的solr项目的WEB-INF/lib目录下;把solr-7.3.1/server/lib下的metrics-core-3.2.2.jar,metrics-ganglia-3.2.2.jar,metrics-graphite-3.2.2.jar,metrics-jetty9-3.2.2.jar,metrics-jvm-3.2.2.jar这5个jar包放到tomcat下的solr项目的WEB-INF/lib目录下;
3.3 把server目录下的solr文件夹粘贴复制到其他目录,此处将其粘贴到/opt/solrcloud目录下然后重命名为:solrhome,这是solr核心文件夹;
3.4 修改tomcat下的solr项目的WEB-INF/web.xml,这一步用来指定默认的solrhome。在web.xml开头附近找到:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solrcloud/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
然后取消注释,把<env-entry-value>填第三步solrhome文件夹的地址;
3.5按下图所示,将tomcat下的solr项目的web.xml文件中这些语句注释掉,这段配置限制了对solr资源的访问。
此时启动tomcat/bin下的服务:
./startup.sh就可以启动tomcat服务,输入
http://localhost:8080/solr/index.html就可以通过看到结果。
现在先将tomcat和zookeeper的服务先停止,进行下面的配置。
四、其它的配置
4.1更改tomcat的catalina.sh
主机器(192.168.199.141)上加入如下
JAVA_OPTS="$JAVA_OPTS-Dbootstrap_confdir=/opt/solrcloud/solrhome/mycore/conf-Dcollection.configName=myconf-DzkHost=192.168.199.141:2181,192.168.199.168:2181,192.168.199.155:2181"
注意这里的myconf只是定义的conf文件的名字,可以随意取名
从机器(192.168.199.155,192.168.199.168)tomcat的catalina.sh加入如下:
JAVA_OPTS="-DzkHost=192.168.199.141:2181,192.168.199.168:2181,192.168.199.155:2181"
4.2修改每个solrhome下的solr.xml,指定对应solr服务的tomcat的ip和端口。
<solr>
<solrcloud>
<strname="host">${host:192.168.199.141}</str>
<intname="hostPort">${jetty.port:8080}</int>
<strname="hostContext">${hostContext:solr}</str>
<boolname="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
<intname="zkClientTimeout">${zkClientTimeout:30000}</int>
4.3将solr的配置文件传到zookeeper中,只要在主机上执行该操作就可以。
注意,此命令执行之前先开启三台电脑的zookeeper服务。
在/opt/solrcloud/solr-7.3.1/server/scripts/cloud-scripts目录下,执行如下命令:
./zkcli.sh-zkhost 192.168.25.141:2181,192.168.199.168:2181,192.168.199.155:2181-cmd upconfig -confdir /opt/solrcloud/solrhome/mycore/conf -confnamemyconf
此处的myconf和4.1中的一样。
如果这条命令没有报错,说明conf文件上传成功。
此时,依次启动三台电脑的tomcat服务。
登录http://localhost:8080/solr/index.html