一、环境准备
1、安装Docker
yum install -y yum-utils device-mapper-persistent-data lvm2
2、Centos系统(未安装任何软件):
3、打包系统镜像:将本机操作系统打包成tar文件
tar –numeric-owner –exclude=/proc –exclude=/sys -cvf centos-self.tar /
4、将制作的tar文件导入docker镜像库中,并命令为: centos -self:
cat centos -self.tar | docker import - centos -self
二、创建容器solr1
1、建议使用自定义网桥,这样可以指定ip ,默认的docker0网桥无法指定ip
docker network create –subnet=172.18.0.0/16 search_network
备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段,search_network为自定义网桥的名字,可自己任意取名。
2、利用docker启动容器solr1,分配固定IP 172.18.0.11,并将容器的8983端口与宿主机8971进行映射,以便可以从外部访问容器
docker run -itd –name solr1 –net search_network –ip 172.18.0.11 -p 8791:8983 centos-self /bin/bash
3、进入容器solr1
# docker exec -it solr1 /bin/bash
4、切换目录,将 jdk1.8、solr6.6.1、zookeeper3.5下载到服务器的/opt文件夹中
# cd /opt
下载jdk
# wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz"
下载zookeeper 3.5.3
# wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.5.3-beta/zookeeper-3.5.3-beta.tar.gz
下载solr 6.6.1
# wget http://mirrors.hust.edu.cn/apache/lucene/solr/6.6.1/solr-6.6.1.tgz
5、在容器server1中安装jdk1.8并配置java环境变量
创建/usr/local/java/文件夹并解压jdk
# mkdir -p /usr/local/java/
# tar -zxvf jdk1.8.0_141.tar.gz -C /usr/local/java/
注:若tar -zxvf 解压失败,可将z去掉
6、向/etc/profile文件中追加下面内容:
# vim /etc/profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin
7、让文件生效
# source /etc/profile
8、验证java成功安装
# java –version
三、在容器server1中安装配置zookeeper3.5.3
1、解压zookeeper 安装包到/usr/local目录中
# tar -xvf zookeeper-3.5.3-beta.tar.gz -C /usr/local/
2、创建zookeeper的data和logs目录,确保拥有读写权限
# mkdir -p /home/tank/zookeeper/data
# mkdir -p /home/tank/zookeeper/log
3、将zookeeper安装目录下conf文件夹中的zoo_sample.cfg重命名为zoo.cfg
# cd /usr/local/zookeeper-3.5.3-beta/conf
# mv zoo_sample.cfg zoo.cfg
4、修改zoo.cfg内容,zoo.cfg配置完后如下:
#vim 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
5、进入/home/tank/zookeeper/data中,新建myid文件,写入1
# cd /home/tank/zookeeper/data
# echo 1 >> myid
注:其他节点的myid内容应分别是server.1的
四、在solr1容器中安装配置solr-6.6.1
1、解压solr-6.6.1.tgz到/usr/local目录下
# tar -xvf solr-6.6.1.tgz -C /usr/local/
2、创建solrCloud根目录solr_cloud_home文件夹
# mkdir -p /usr/local/solrCloud/solr_cloud_home
3、复制/usr/local/solr-6.6.0/server/solr/目录下的文件到solr_cloud_home中
# cp -r /usr/local/solr-6.6.1/server/solr/* /usr/local/solrCloud/solr_cloud_home/
4、查看solr_cloud_home目录,如图所示:
# ll /usr/local/solrCloud/solr_cloud_home/
5、创建配置存放目录solr_cloud_collection文件夹
# mkdir -p /usr/local/solrCloud/solr_cloud_collection
6、复制/usr/local/solr-6.6.0/example/example-DIH/solr/solr/目录下的文件到solr_cloud_collection/cloud_core中
mkdir -p /usr/local/solr_cloud_collection/cloud_core
cp -r /usr/local/solr-6.6.1/example/example-DIH/solr/solr/* /usr/local/solr_cloud_collection/cloud_core/
五、在宿主机提交容器solr1为新的镜像,命名为centos-self-solr
# docker commit server1 centos-self-solrcloud
1、在宿主机启动容器server2,设置IP为172.18.0.12 并指定映射端口号
# docker run -itd –p 8792:8983 --name solr2 --net search_network --ip 172.18.0.12 centos-self-solr /bin/bash
2、将容器solr2中/home/tank/zookeeper/data/myid内容由1改为2
3、在宿主机中查看docker容器运行情况
六、solr1,solr2分别启动zookeeper
# source /etc/profile
# cd /usr/local/zookeeper-3.5.3-beta/
# bin/zkServer.sh start
七、solr1,solr2启动solr
# cd /usr/local/solr-6.6.1/
# bin/solr start -cloud -p 8983 -s "/usr/local/solrCloud/solr_cloud_home/" -z "172.17.0.31:2181,172.17.0.32:2181" -force
1、查看solr日志是否报错:
# cat /usr/local/solr-6.6.1/server/logs/solr.log
八、在容器solr1上创建Collection(只需要在一台solr节点上操作)
# cd /usr/local/solr-6.6.1
# bin/solr create_collection -c test_collection -shards 2 -replicationFactor 3 –force
-c 核心名称tar
-shards 分片数量
- replicationFactor 副本数量 (一般指有几台solr集群)
参考:
Ubuntu 14.04下适应Docker搭建solrCloud集群
CentOs7.3 搭建 SolrCloud 集群服务