Ubuntu 14.04下适应Docker搭建solrCloud集群

主要内容:

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

主要思路:在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器中配置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

5、退出容器,在宿主机中采用ssh登录

exit

6、在宿主机切换到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

4、在宿主机启动容器server3,设置IP为172.18.0.13

docker run -itd --name server3 --net search_network --ip 172.18.0.13 ubuntu-self-solr /bin/bash

5、将容器server3中/home/tank/zookeeper/data/myid内容由1改为3

6、退出容器server3,回到宿主机

exit

7、在宿主机中查看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的拓扑模式,如下所示

标签:集群UbuntuDocker 发布于:2019-11-08 20:50:58