在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的拓扑模式,如下所示
 

ubuntu14.04环境下利用docker搭建solrCloud集群的更多相关文章

  1. linux下利用httpd搭建tomcat集群,实现负载均衡

    公司使用运营管理平台是单点tomcat,使用量大,或者导出较大的运营数据时,会造成平台不可用,现在需要搭建tomcat集群,调研后,决定使用apache的httpd来搭建tomcat集群.以下是搭建步 ...

  2. 利用Docker搭建Redis集群

    Redis集群搭建 运行Redis镜像 分别使用以下命令启动3个Redis docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/lib ...

  3. docker搭建etcd集群环境

    其实关于集群网上说的方案已经很多了,尤其是官网,只是这里我个人只有一个虚拟机,在开发环境下建议用docker-compose来搭建etcd集群. 1.拉取etcd镜像 docker pull quay ...

  4. docker 搭建zookeeper集群和kafka集群

    docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...

  5. 【solr】Solr5.5.4+Zookeeper3.4.6+Tomcat8搭建SolrCloud集群

    Solr5.5.4+Zookeeper3.4.6+Tomcat8搭建SolrCloud集群 SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力 ...

  6. 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)

    上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...

  7. 使用Docker搭建Hadoop集群(伪分布式与完全分布式)

    之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...

  8. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  9. Elasticsearch使用系列-Docker搭建Elasticsearch集群

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

随机推荐

  1. STL标准库-hash

    技术在于交流.沟通,本文为博主原创文章转载请注明出处并保持作品的完整性 hash的结构图如下图 oject通过hashfunc转换成hashcode然后插入到相应篮子中 hash同rb_tree是一种 ...

  2. 二、深度解析HTML5之视频播放和音频播放

    一:视频播放 传统的视频音频播放是通过flash插件的形式完成,不是所有的浏览器都安装了flash插件,而且手机端不支持flash,这就导致视频和音频的播放会有很大的麻烦. 于是,HTML5增加音频和 ...

  3. BZOJ3033: 太鼓达人(欧拉回路)

    Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 524  Solved: 400[Submit][Status][Discuss] Description ...

  4. Oozie_02安装遇到错误【20161116】

    [错误原因]hadoop的core-site.xml配置错误  把用户名hadoop配置成了主机名hadoop01 <!-- OOZIE --><property> <n ...

  5. 每天一个linux命令(网络):【转载】route命令

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...

  6. Struts2自定义标签2自定义一个按班级id查询出该班级下的学生,存放进值栈,并遍历出来。

    Struts2自定义标签的流程概念: (1)需要两个类:标签类(继承相应的tag类),基本类(继承Component).标签类专门负责从客户端取得用户输入的一些属性,这个普通的jsp自定义标签一样,取 ...

  7. hasura graphql 模式拼接demo

    实际上通过上边的介绍,模式拼接和hasura 基本没啥关系了,就是使用graphql-bindings 进行schema 合并了 基本demo 这个是官方提供的demo git clone https ...

  8. Linux菜鸟入门级命令大全

    1. man 对你熟悉或不熟悉的命令提供帮助解释eg:man ls 就可以查看ls相关的用法注:按q键或者ctrl+c退出,在linux下可以使用ctrl+c终止当前程序运行.2. ls 查看目录或者 ...

  9. OGNL遍历list、map的常用三种方法

    package com.mylife.po; public class User { private String uname; private String pwd; public String g ...

  10. node使用JsonWebToken 生成token,完成用户登录、登录检测

    最近在用node做后台的登录,检测登录功能.在本地使用session可以成功,但是放服务器后发现session失效了,每次请求session都会变化,着了很久原因.原来,自己项目是前后端分离的,前端调 ...