windows docker搭建zookeeper+solr集群

  1. 在G盘下创建home/Dockerfile文件夹,在该路径下创建Dockerfile文件

    Dockerfile:

    FROM ubuntu
    #sshd
    RUN echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list
    RUN apt-get update
    RUN apt-get install -y openssh-server
    RUN apt-get install vim -y
    RUN apt-get install net-tools -y
    RUN apt-get install lsof -y
    RUN mkdir /var/run/sshd
    RUN echo 'root:111' | chpasswd
    RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    RUN sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
     
    # SSH login fix. Otherwise user is kicked off after login
    RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
     
    #jdk1.8
    # make a new directory to store the jdk files
    RUN mkdir /usr/local/java
    ADD jdk-8u261-linux-x64.tar.gz /usr/local/java/
    RUN ln -s /usr/local/java/jdk1.8.0_261 /usr/local/java/jdk
    ENV JAVA_HOME /usr/local/java/jdk
    ENV JRE_HOME ${JAVA_HOME}/jre
    ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
    ENV PATH ${JAVA_HOME}/bin:$PATH
     
    #解决ssh连接后环境变量无效的问题
    RUN sed -i '2a export $(cat /proc/1/environ |tr '"'"'\0'"'"' '"'"'\\n'"'"' | xargs)' /etc/profile
     
    #zookeeper
    ADD zookeeper-3.4.14.tar.gz /usr/local/
    RUN mkdir -p /home/zookeeper/data
    RUN mkdir -p /home/zookeeper/log
    RUN cp /usr/local/zookeeper-3.4.14/conf/zoo_sample.cfg /usr/local/zookeeper-3.4.14/conf/zoo.cfg
    RUN sed -i 's/dataDir=\/tmp\/zookeeper/dataDir=\/home\/zookeeper\/data/' /usr/local/zookeeper-3.4.14/conf/zoo.cfg
    RUN sed -i 13a\dataLogDir=/home/zookeeper/log /usr/local/zookeeper-3.4.14/conf/zoo.cfg
    RUN sed -i '$aserver.1=172.18.0.11:2888:3888' /usr/local/zookeeper-3.4.14/conf/zoo.cfg
    RUN sed -i '$aserver.2=172.18.0.12:2888:3888' /usr/local/zookeeper-3.4.14/conf/zoo.cfg
    RUN sed -i '$aserver.3=172.18.0.13:2888:3888' /usr/local/zookeeper-3.4.14/conf/zoo.cfg
    RUN cd /home/zookeeper/data;echo 1 >>myid
     
    #solr
    ADD solr-6.6.0.tgz /usr/local/
    RUN mkdir -p /usr/local/solrCloud/solr_cloud_home
    RUN cp -r /usr/local/solr-6.6.0/server/solr/* /usr/local/solrCloud/solr_cloud_home/
    RUN mkdir -p /usr/local/solrCloud/solr_cloud_collection/cloud_core;cp -r /usr/local/solr-6.6.0/example/example-DIH/solr/solr/* /usr/local/solrCloud/solr_cloud_collection/cloud_core/
     
    #ik分词器
    COPY ik-analyzer-solr5-5.4.0.jar /usr/local/solr-6.6.0/server/solr-webapp/webapp/WEB-INF/lib/
    RUN mkdir -p /usr/local/solr-6.6.0/server/solr-webapp/webapp/WEB-INF/classes
    COPY ext.dic /usr/local/solr-6.6.0/server/solr-webapp/webapp/WEB-INF/classes/
    COPY IKAnalyzer.cfg.xml /usr/local/solr-6.6.0/server/solr-webapp/webapp/WEB-INF/classes/
    COPY stopword.dic /usr/local/solr-6.6.0/server/solr-webapp/webapp/WEB-INF/classes/
    RUN sed  -i '304i <fieldType name="text_ik" class="solr.TextField">\n    <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer" />\n    <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer" />\n</fieldType>'  /usr/local/solr-6.6.0/example/example-DIH/solr/solr/conf/managed-schema
    ENV NOTVISIBLE "in users profile"
     
    EXPOSE 22
     
    CMD ["/usr/sbin/sshd", "-D"]
    
    docker pull zookeeper
    
  2. 复制相关文件至Dockerfile同级目录下

  3. 构建镜像solr:1.0

    docker build -t solr:1.0 g:/home/Dockerfile.

  4. 创建自定义网络
    docker network create --subnet=172.18.0.0/16 search_network
    
  5. 创建容器
    docker run -d --name server1 --net search_network --ip 172.18.0.11 -p 22 -p 8983:8983 solr:1.0   /usr/sbin/sshd -D
    docker run -d --name server2 --net search_network --ip 172.18.0.12 -p 22 -p 8984:8984 solr:1.0   /usr/sbin/sshd -D
    docker run -d --name server3 --net search_network --ip 172.18.0.13 -p 22 -p 8985:8985 solr:1.0   /usr/sbin/sshd -D
    

    合并命令

    docker run -d --name server1 --net search_network --ip 172.18.0.11 -p 22 -p 8983:8983 solr:1.0   /usr/sbin/sshd -D;docker run -d --name server2 --net search_network --ip 172.18.0.12 -p 22 -p 8984:8984 solr:1.0   /usr/sbin/sshd -D;docker run -d --name server3 --net search_network --ip 172.18.0.13 -p 22 -p 8985:8985 solr:1.0   /usr/sbin/sshd -D
    
  6. 分别进入三个容器,修改zookeeper ID

    server1 id为1,server2 id为2,server3 id为3.

    #进入容器
    docker exec -it [容器id] /bin/bash
    #进入自建zookeeper的data文件夹
    cd /home/zookeeper/data
    #进行编辑id
    vi myid 
    
  7. 在三台容器中分别启动zookeeper
    /usr/local/zookeeper-3.4.14/bin/zkServer.sh start
    
  8. 分别启动solr
    /usr/local/solr-6.6.0/bin/solr start -cloud -p 8983 -s "/usr/local/solrCloud/solr_cloud_home/" -z "172.18.0.11:2181,172.18.0.12:2181,172.18.0.13:2181" -force
    /usr/local/solr-6.6.0/bin/solr start -cloud -p 8984 -s "/usr/local/solrCloud/solr_cloud_home/" -z "172.18.0.11:2181,172.18.0.12:2181,172.18.0.13:2181" -force
    /usr/local/solr-6.6.0/bin/solr start -cloud -p 8985 -s "/usr/local/solrCloud/solr_cloud_home/" -z "172.18.0.11:2181,172.18.0.12:2181,172.18.0.13:2181" -force
    
  9. 在容器server1上创建Collection(只需要在一台solr节点上操作)
    /usr/local/solr-6.6.0/bin/solr create_collection -c cloudsuite_web_search -shards 3 -replicationFactor 3 -d /usr/local/solrCloud/solr_cloud_collection/cloud_core/conf -p 8983 -force
    
  10. 访问http://192.168.99.100:8983(虚拟机ip),点开cloud即可出现集群图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c5hkHmlp-1626685271909)(C:\Users\2020\AppData\Roaming\Typora\typora-user-images\image-20210315131944022.png)]

  11. 复制conf文件到/usr/local/solrCloud/solr_cloud_collection/cloud_core
  12. 上传配置文件到Zookeeper(随便哪个server上传一次即可)
    cd /usr/local/solr-6.6.0/server/scripts/cloud-scripts
    ./zkcli.sh -zkhost 172.18.0.11:2181,172.18.0.12:2181,172.18.0.13:2181 -cmd upconfig -confdir /usr/local/solrCloud/solr_cloud_collection/cloud_core/conf -confname cloudsuite_web_search 
    

    输入命令无反应则成功,访问http://192.168.99.100:8983/solr/#/~collections/cloudsuite_web_search,点击Reload重新加载

二、遇到的问题

  1. 宿主机无法访问到每个容器的ip,要使宿主机连接到docker的自定义网络
    • 更改路由表

      https://www.pianshen.com/article/35251276782/

    route -p add 172.18.12.0 MASK 255.255.255.0 192.168.99.2
    #172.18.12.0为自定义网络,192.168.99.2为虚拟机的网段.2
    
    • 用虚拟机ip+容器端口访问
  2. solr成功启动但无法访问cloud的拓扑模式

    创建collection之后才可以

三、参考

https://blog.csdn.net/u014681799/article/details/108049968

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值