一、準備工作
1.四臺服務器:172.16.6.31、172.16.6.32、172.16.6.33、172.16.6.34 並且都按裝了docker環境
2.jre1.8以上的linux版本
3.已經部署好的solr單機版:solr-tomcat 以及solr_home
二、搭建zookeeper集羣
1、下載zookeeper
在三個服務器:172.16.6.31、172.16.6.32、172.16.6.33下載
docker pull zookeeper
2、集羣配置
首先運行一下
docker run --network host -v /data/zookeeper_data/data:/data -v /data/zookeeper_data/conf:/conf --name zk-2181 -d zookeeper
修改主機上(三個)/data/zookeeper_data/conf/zoo.cfg 配置如下:
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
standaloneEnabled=true
admin.enableServer=true
clientPort=2181
server.1=172.16.6.31:2888:3888
server.2=172.16.6.32:2888:3888
server.3=172.16.6.33:2888:3888
修改主機上(三個)/data/zookeeper_data/data/myid:
對應上面的配置,如172.16.6.31就把myid改爲1
配置好後 重新啓動三個集羣即可
docker run --network host -v /data/zookeeper_data/data:/data -v /data/zookeeper_data/conf:/conf --name zk-2181 --restart always -d zookeeper
其中–network host 表示使用主機網絡,容器端口設置的是什麼對外端口就是什麼,此時-p 設置無效。
3、上傳solr集羣配置文件
在solr-7.1.0\server\scripts\cloud-scripts裏可以執行zk命令,把需要的conf傳上去就好了
zkcli.bat -zkhost 172.16.6.31:2181,172.16.6.32:2181,172.16.6.33:2181 -cmd upconfig -confdir E:\solr_new\solr-7.1.0\server\scripts\cloud-scripts\conf -confname conf_tm
三、搭建solr集羣
1、修改solr單機
修改準備好的solr-tomcat單機版,tomcat啓動文件:catalina.sh 添加配置好的zookeeper集羣配置如下:
JAVA_OPTS="-DzkHost=172.16.6.31:2181,172.16.6.32:2181,172.16.6.33:2181"
2、生成自己的solr集羣版的docker鏡像
把需要的jre solr_home solr-tomcat 準備好
Dockerfile文件:
FROM centos
MAINTAINER baojia
ADD jdk1.8.0_151 /usr/local/jdk
ADD solr-tomcat /usr/local/solr-tomcat
ADD solr_home /usr/local/solr_home
RUN chmod -R 777 /usr/local/solr-tomcat
RUN chmod -R 777 /usr/local/solr_home
ENV JAVA_HOME /usr/local/jdk
ENV CLASSPATH .:$JAVA_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 7080
CMD ["/usr/local/solr-tomcat/bin/catalina.sh","run"]
執行docker build -t sw_solr .
生成docker鏡像 :sw_solr
3、把鏡像文件和solr_home傳到其他服務器
執行
docker save -o sw_solr.tar sw_solr:latest
把鏡像打包成文件
打包solr_home
tar -cvf solr_home.tar solr_home
把sw_solr.tar、 solr_home.tar 傳到其他機器上:
scp sw_solr.tar [email protected]:/usr/local
在其他服務器上解壓solr_home:
tar -xvf solr_home.tar
其他服務器加載鏡像:
docker load --input sw_solr.tar
4、修改solr_home配置,運行鏡像
修改solr_home裏的solr.xml文件 改成對應ip端口:
<str name="host">${host:172.16.6.33}</str>
<int name="hostPort">${jetty.port:7080}</int>
最後運行鏡像:
docker run -d -p 7080:7080 -v /usr/local/solr_home:/usr/local/solr_home --name solr sw_solr