zoukankan      html  css  js  c++  java
  • ubuntu14.04环境下利用docker搭建solrCloud集群

    在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器中配置solrCloud集群。

    关键点:docker17.06.3安装,docker自制镜像及相关容器操作,docker分配固定IP及添加端口映射,solrCloud集群部署等

    注:solrCloud采用的solr内置jetty,需要单独配置zookeeper

    容器IP及名称见下表:

    编号
    静态IP
    容器名称
    1
    172.18.0.11
    server1
    2
    172.18.0.12
    server2
    3
    172.18.0.13
    server3

    一、在宿主机安装docker最新版

    1.更新apt-get
    apt-get update
    2.安装curl工具
    apt-get install curl
    3.获取并安装docker最新版
    curl -fsSL https://get.docker.com/ | sh
    4.查看docker版本
    docker -v

    二、在宿主机制作Ubuntu14.10基础镜像ubuntu-self

    1.将本机操作系统打包成tar文件
    tar --numeric-owner --exclude=/proc --exclude=/sys -cvf ubuntu-self.tar /
    2.将制作的tar文件导入docker镜像库中,并命令为:ubuntu-self:
    cat ubuntu-self.tar | docker import - ubuntu-self
    3.现在可以运行它了:
    docker run -i -t ubuntu-self 
    注:官方提供的镜像库中Ubuntu无法sudo,不太好用,这里我自己利用本机的操作系统生成了一个基础纯净版镜像,命名为ubuntu-self,大小约3.5G,里面没有安装任何软件。

    三、配置宿主机的hosts文件,以便利用ssh登录容器

    1.修改hosts文件,添加如下内容:
    vi /etc/hosts
    172.18.0.11 server1
    172.18.0.12 server2
    172.18.0.13 server3
    2.查看hosts文件
    cat /etc/hosts

    四、启动一个容器,设置静态IP,命名为server1

    1.在宿主机上创建自定义网络
    docker network create --subnet=172.18.0.0/16 search_network
    备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段,search_network为自定义网桥的名字,可自己任意取名。
    2.利用docker启动容器server1,分配固定IP 172.18.0.11,并将容器的8983端口与宿主机8983进行映射,以便可以从外部访问容器
    docker run -itd --name server1 --net search_network --ip 172.18.0.11 -p 8983:8983 ubuntu-self /bin/bash
    注:该命令执行完之后直接进入到server1的命令行界面,主机名称变为docker分配的随机字符串,查看ip是否为静态,执行结果如下图所示:

    五、继续操作,在容器server1中配置ssh服务

    1.aptget升级
    apt-get update
    2.安装openssh服务
    apt-get install openssh-server
    3.开启ssh服务
    sudo /etc/init.d/ssh start
    4.设置ssh开机启动
    vi /etc/rc.local
    添加如下内容:
    service ssh start
    4.退出容器,在宿主机中采用ssh登录
    exit
    5.在宿主机切换到tank用户(root登录ssh需要修改ssh配置文件,这里用tank用户登录更方便些),并ssh到容器server1
    su tank
    ssh server1

    六、在容器server1中安装jdk1.8并配置java环境变量

    1.解压缩文件
    tar -zxvf jdk1.8.0_141.tar.gz -C /usr/local/java/
    2.向/etc/profile文件中追加下面内容:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_141
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=$PATH:${JAVA_HOME}/bin
    3.让文件生效
    source /etc/profile
    4.验证java成功安装
    java -version

    七、在容器server1中安装配置zookeeper-3.4.10

    1.解压zookeeper 安装包到/usr/local目录中
    tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/
    2.创建zookeeper的data和logs目录,确保拥有读写权限
    mkdir /home/tank/zookeeper/data
    mkdir /home/tank/zookeeper/log
    3.将zookeeper安装目录下conf文件夹中的zoo_sample.cfg重命名为zoo.cfg
    4.修改zoo.cfg内容,zoo.cfg配置完后如下:
    # The number of milliseconds of each tick
    tickTime=2000
    # The number of ticks that the initial
    # synchronization phase can take
    initLimit=10
    # The number of ticks that can pass between
    # sending a request and getting an acknowledgement
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just
    # example sakes.
    dataDir=/home/tank/zookeeper/data
    dataLogDir=/home/tank/zookeeper/log
    # the port at which the clients will connect
    clientPort=2181
    # the maximum number of client connections.
    # increase this if you need to handle more clients
    #maxClientCnxns=60
    #
    # Be sure to read the maintenance section of the
    # administrator guide before turning on autopurge.
    #
    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
    #
    # The number of snapshots to retain in dataDir
    #autopurge.snapRetainCount=3
    # Purge task interval in hours
    # Set to "0" to disable auto purge feature
    #autopurge.purgeInterval=1
    server.1=172.18.0.11:2888:3888
    server.2=172.18.0.12:2888:3888
    server.3=172.18.0.13:2888:3888
    5.进入/home/tank/zookeeper/data中,新建myid文件,写入1
    注:其他两个节点的myid内容应分别是2和3

    八、在容器server1中安装配置solr-6.6.0

    1.解压solr-6.6.0.tgz到/usr/local目录下
    tar -zxvf solr-6.6.0.tgz -C /usr/local/
    2.创建solrCloud根目录solr_cloud_home文件夹
    mkdir /usr/local/solrCloud/solr_cloud_home
    3.复制/usr/local/solr-6.6.0/server/solr/目录下的文件到solr_cloud_home中
    cp /usr/local/solr-6.6.0/server/solr/* /usr/local/solrCloud/solr_cloud_home/
    查看solr_cloud_home目录,如图所示:
    ls
    4.创建配置存放目录solr_cloud_collection文件夹
    mkdir /usr/local/solrCloud/solr_cloud_collection
    5.复制/usr/local/solr-6.6.0/example/example-DIH/solr/solr/目录下的文件到solr_cloud_collection/cloud_core中
    mkdir /usr/local/solr_cloud_collection/cloud_core
    cp /usr/local/solr-6.6.0/example/example-DIH/solr/solr/* /usr/local/solr_cloud_collection/cloud_core/
    ls

    九、在宿主机提交容器server1为新的镜像,命名为ubuntu-self-solr

    sudo docker commit server1 ubuntu-self-solr
    docker images

    十、利用上一步生成的镜像启动容器server2,server3

    1.在宿主机启动容器server2,设置IP为172.18.0.12
    docker run -itd --name server2 --net search_network --ip 172.18.0.12 ubuntu-self-solr /bin/bash
    2.将容器server2中/home/tank/zookeeper/data/myid内容由1改为2
    3.退出容器server2,回到宿主机
    exit
    3.在宿主机启动容器server3,设置IP为172.18.0.13
    docker run -itd --name server3 --net search_network --ip 172.18.0.13 ubuntu-self-solr /bin/bash
    4.将容器server3中/home/tank/zookeeper/data/myid内容由1改为3
    5.退出容器server3,回到宿主机
    exit
    6.在宿主机中查看docker容器运行情况
    docker ps

     十一、在宿主机ssh登录容器server1,server2,server3 并分别启动zookeeper

    ssh server1
    cd /usr/local/zookeeper-3.4.10/
    bin/zkServer.sh start
    /usr/local/zookeeper-3.4.10/bin/zkServer.sh start
    注:在server2,server3上同样执行此操作

    十二、在宿主机ssh登录容器server1,server2,server3并启动solr

    1.ssh登录server1,cloud模式下启动solr
    ssh server1
    cd /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"
    2.打开宿主机浏览器,访问页面http://172.18.0.11:8983/solr/,可以进入solr页面即代表启动成功
    注:在server2,server3上同样执行此操作

    十三、在容器server1上创建Collection(只需要在一台solr节点上操作)

     1、由solr命令建立索引,这里索引命名为:cloudsuite_web_search
    进入solr/bin目录,使用solr命令:
    cd /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 
    -c 核心名称tar
    -shards 分片数量
    - replicationFactor 副本数量 (一般指有几台solr集群)
    2.将solr提供的xml示例文件上传至索引
    bin/post -c cloudsuite_web_search *.xml

    十四、在宿主机上通过浏览器访问solrCloud集群,验证操作成功

    安装成功后,无论从哪个节点访问8983端口,均可以看到cloud的拓扑模式,如下所示
     

    博主原创,转载请标明出处!谢谢
  • 相关阅读:
    shell学习小结
    数据结构基础
    IComparable接口实现自定义类型的排序
    RavenDb进行全文检索实现及数据统计
    移动开发经验总结(monotouch&monodroid)
    Maven pom.xml中的元素modules、parent、properties以及import
    StaticHtml1.0beta
    asp.net 页面静态化
    JQuery常用方法
    ASP.NET无刷新多文件文件上传系统(转载)
  • 原文地址:https://www.cnblogs.com/javaIOException/p/7509518.html
Copyright © 2011-2022 走看看